2009年2月27日星期五

获取用户IP地址的三个属性的区别(HTTP_X_FORWARDED_FOR,HTTP_VIA,REMOTE_ADDR)

本文转载于网络,内容没有进过本人认证~~
一、没有使用代理服务器的情况:

REMOTE_ADDR = 您的 IP
HTTP_VIA = 没数值或不显示
HTTP_X_FORWARDED_FOR = 没数值或不显示

二、使用透明代理服务器的情况:Transparent Proxies

REMOTE_ADDR = 最后一个代理服务器 IP
HTTP_VIA = 代理服务器 IP
HTTP_X_FORWARDED_FOR = 您的真实 IP ,经过多个代理服务器时,这个值类似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。

这类代理服务器还是将您的信息转发给您的访问对象,无法达到隐藏真实身份的目的。

三、使用普通匿名代理服务器的情况:Anonymous Proxies

REMOTE_ADDR = 最后一个代理服务器 IP
HTTP_VIA = 代理服务器 IP
HTTP_X_FORWARDED_FOR = 代理服务器 IP ,经过多个代理服务器时,这个值类似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。

隐藏了您的真实IP,但是向访问对象透露了您是使用代理服务器访问他们的。

四、使用欺骗性代理服务器的情况:Distorting Proxies

REMOTE_ADDR = 代理服务器 IP
HTTP_VIA = 代理服务器 IP
HTTP_X_FORWARDED_FOR = 随机的 IP ,经过多个代理服务器时,这个值类似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。

告诉了访问对象您使用了代理服务器,但编造了一个虚假的随机IP代替您的真实IP欺骗它。

五、使用高匿名代理服务器的情况:High Anonymity Proxies (Elite proxies)

REMOTE_ADDR = 代理服务器 IP
HTTP_VIA = 没数值或不显示
HTTP_X_FORWARDED_FOR = 没数值或不显示 ,经过多个代理服务器时,这个值类似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。

完全用代理服务器的信息替代了您的所有信息,就象您就是完全使用那台代理服务器直接访问对象。

2009年2月19日星期四

单元测试工具下载

单元测试工具--nunit下载

http://www.3atesting.com/bbs/thread-4663-1-1.html

junit下载

http://www.3atesting.com/bbs/thread-4665-1-1.html

dbunit下载

http://www.3atesting.com/bbs/thread-4672-1-1.html

nmock2.0下载

http://www.3atesting.com/bbs/thread-4673-1-1.html

nunit Dotnet Addin

http://www.3atesting.com/bbs/thread-4674-1-1.html

DBUnit annotatio

http://www.3atesting.com/bbs/thread-4675-1-1.html

rhino mock下载

http://www.3atesting.com/bbs/thread-4678-1-1.html

单元测试报告模板

http://www.3atesting.com/bbs/thread-4680-1-1.html

单元测试培训材料

http://www.3atesting.com/bbs/thread-4681-1-1.html

智能源码统计专家

http://www.3atesting.com/bbs/thread-4682-1-1.html

单元测试行为模拟工具

http://www.3atesting.com/bbs/thread-4684-1-1.html

httpunit 下载

http://www.3atesting.com/bbs/thread-4687-1-1.html

代码覆盖率检查工具

http://www.3atesting.com/bbs/thread-4664-1-1.html

nunit2.5 下载

http://www.3atesting.com/bbs/thread-4704-1-1.html

单元测试覆盖率浏览器--ncoverExplorer下载

http://www.3atesting.com/bbs/thread-4719-1-1.html

欢迎访问3atesting

2009年2月18日星期三

单元测试过程演示

本视频主要通过一个实际的单元测试演练,使得单元测试学习者能够对单元测试有一个感性的认识,为以后的学习有一个方向

本视频主要内容:

1、讲解待测程序的实现需求以及实现过程。一个接口和一个类
2、讲解如何编写单元测试代码以及如何集成nunit和rhino测试框架
3、采用nunit GUI运行测试代码
4、检测代码覆盖率


下载地址http://www.3atesting.com/bbs/thread-4718-1-1.html

欢迎访问3atesting

2009年2月17日星期二

单元测试环境安装与验证

本篇视频主要讲解如下主题:
1、系列视频所涉及到的测试工具
2、每个工具的用途以及它们的特点
3、如何验证安装的正确性
视频下载地址http://www.3atesting.com/bbs/thread-4706-1-1.html

欢迎访问3atesting

初识单元测试

3atesting2009 年首推单元测试系列视频,我们将做一次新的尝试,3atesting希望能够作为牵头人带领着大家一起来学习测试,而且制定一个规则,就是只有你学习了,才能够获取到下一个视频。而不希望大家下载视频之后,就不再看了!就像“借的书永远比自己买的书看的快”一样!所以在系列视频中我们将在第四讲的时候开始来实施视频下载策略!希望大家能理解我们!我们不是刁难大家,而是希望大家都要学起来!真正达到学习的效果!

如果大家对我们单元测试系列视频的安排有什么好的建议!我们将在制作视频中进行调整,然后大家共同来完成好此项工程!


本篇视频:主要讲解如下主题:
1、介绍视频下载新规则
2、单元测试系列课程的内容整体讲解
3、单元测试的概念
4、单元测试内容分类以及所涉及到的技术
5、如何判别单元测试的质量



下载地址

http://www.3atesting.com/bbs/thread-4705-1-1.html

欢迎访问3atesting

2009年2月16日星期一

新手教程:JUnit入门

一、简介

  JUnit是一个开源的java单元测试框架。在1997年,由 Erich Gamma 和 Kent Beck 开发完成。这两个牛人中 Erich Gamma 是 GOF 之一;Kent Beck 则在 XP 中有重要的贡献(你觉得眼熟一点都不奇怪)。
  正如常言道:“麻雀虽小,五脏俱全。” JUnit设计的非常小巧,但是功能却非常强大。
  下面是JUnit一些特性的总结:
  1) 提供的API可以让你写出测试结果明确的可重用单元测试用例
  2) 提供了三种方式来显示你的测试结果,而且还可以扩展
  3) 提供了单元测试用例成批运行的功能
  4) 超轻量级而且使用简单,没有商业性的欺骗和无用的向导
  5) 整个框架设计良好,易扩展
  对不同性质的被测对象,如Class,Jsp,Servlet,Ejb等,Junit有不同的使用技巧。由于本文的性质,以下仅以Class测试为例。

  二、下载

  点击http://www.junit.org可以下载到最新版本的JUnit,本文使用的为3.8.1版。至于安装或者配置之类,你只需要轻松的将下载下来的压缩包中的jar文件,放到你工程的classpath中就可以了。
  这样,你的系统中就可以使用JUnit编写单元测试代码了(是不是很简单)!

  三、HelloWorld

  记得在几乎每本语言教学书上都能找到HelloWorld这个入门代码。今天在这里,我们也从一个简单到根本不用单元测试的例子入手。这是一个只会做两数加减的超级简单的计算器(小学一年级必备极品)。代码如下:

  public class SampleCalculator
  {
   public int add(int augend , int addend)
   {
   return augend + addend ;
   }

   public int subtration(int minuend , int subtrahend)

   {

   return minuend - subtrahend ;

   }

  }

  将上面的代码编译通过。下面就是我为上面程序写的一个单元测试用例:

  //请注意这个程序里面类名和方法名的特征
  import junit.framework.TestCase;
  public class TestSample extends TestCase

  {

   public void testAdd()

   {

  SampleCalculator calculator = new SampleCalculator();

   int result = calculator.add(50 , 20);

   assertEquals(70 , result);

   }

   public void testSubtration()

   {

   SampleCalculator calculator = new SampleCalculator();

   int result = calculator.subtration(50 , 20);

   assertEquals(30 , result);

   }

  }

  好了,在DOS命令行里面输入javac TestSample.java 将测试类编译通过。然后再输入 java junit.swingui.TestRunner TestSample 运行测试类,你会看到如下的窗口。

  绿色说明单元测试通过,没有错误产生;如果是红色的,则就是说测试失败了。这样一个简单的单元测试就完成了.

  按照框架规定:编写的所有测试类,必须继承自junit.framework.TestCase类;里面的测试方法,命名应该以Test开头,必须是 public void 而且不能有参数;而且为了测试查错方便,尽量一个TestXXX方法对一个功能单一的方法进行测试;使用assertEquals等 junit.framework.TestCase中的断言方法来判断测试结果正确与否。

  你可以对比着上面测试类中的实现来体会下规定——很简单!而且你在这个测试类中有加入多少个测试方法,就会运行多少个测试方法。

  四、向前一步

  学完了HelloWorld,你已经可以编写标准的单元测试用例了。但是还有一些细节,这里还要说明一下。不要急,很快的!
  另外你是否注意到,上面弹出窗口的一个细节,在绿条下面有Errors、Failures统计。这两者有何区别呢?
  Failures作为单元测试所期望发生的错误,它预示你的代码有bug,不过也可能是你的单元测试代码有逻辑错误(注意是逻辑错误)。Errors不是你所期待的,发生了Error你可以按照下面的顺序来检查:

  检查测试所需的环境,如:数据库连接

  检查单元测试代码

  检查你的系统代码

  五、成批运行test case

  这是前面提到的JUnit特性之一。它方便于系统单元测试的成批运行。使用起来也是非常简单,先看下使用代码:

  import junit.framework.Test;

  import junit.framework.TestSuite;

  public class TestAll{

   public static Test suite(){

   TestSuite suite = new TestSuite("TestSuite Test");

   suite.addTestSuite( TestSample.class);

   return suite;

   }

  }

  这个测试程序的编译、运行,和上面TestSample的方式是一样的。

  javac TestAll.java

  java junit.swingui.TestRunner TestAll

  怎么样?这样你在suite方法里面添加几个TestCase就会运行几个,而且它也可以添加TestSuite来将小一点的集合加入大的集合中来,方便了对于不断增加的TestCase的管理和维护。

  你觉得suite方法的作用是不是于java应用程序的main很类似?并且这里的suite必须严格遵守上面的写法!
转载自http://www.3atesting.com/bbs/thread-4701-1-1.html

欢迎访问3atesting

都是google惹的祸

大家都知道现在的搜索引擎都是通过爬虫来收录网页内容的,当然,你也可以主动提交自己的网站,但接下来,还是会有各种各样的爬虫来光临你的网站。这无疑是一件好事,因为爬虫只想帮你的网站提高流量。Google的爬虫叫做googlebot,相信如果你的网站统计能统计爬虫的流量,一定会见过不少 googlebot。当然,你的站得被google关注才行。Google的目标是要将全世界的信息都收录起来,可见作为Google的先锋部队,Googlebot一定会不断地加强,或者有一天,它们真的会像Philipp写的科幻短文那样,会上门偷听你所说的话,或者把你家的垃圾桶全搬走调查呢。不过不用怕,就算真有那么一天,也要快则等个十年八年,慢则几十年后。

但是,如果有一天,你发现自己的网站里的所有内容都被googlebot删除掉了,你会有怎样的反应?我并不是说从Google索引里删掉,而真的从你的服务器里!下面就是这样一个离奇的例子。

在Digg上面找到的这个故事里,Googlebot被怀疑是删除掉整个网站的元凶!Josh Breackman在一间负责一个大型政府网站的CMS系统开发工作的公间工作。这个CMS开发项目主要是为了让政府员工能创建或维护他们自己的网站上的不断变化的内容。但由于之前他们已经有一个网站,并且网站上面有丰富的内容,所以客户要求在新的网站正式上线之前,将旧网站的内容重组并上传到新网站里。这是一个需时较长的过程,在几个月后,他们终于把所有的旧网站上的内容都转移到新的CMS系统里,并且把新网站正式放上线,公开浏览。

但就在网站正式上线的第六天,他们突然发现新网站上的所有内容都自己消失了!并且所有网页都指向了默认的“请输入内容”编辑页!

很自然地,Josh被要求对这个事件进行彻查。在调查中,他发现了一个外部的IP曾经进入系统,并且删除了所有系统里的内容!这个IP并不是属于某些海外的黑客,或者目的是想破坏政府网站的信息,而是属于googlebot.com的!也就是说,这个是一个googlebot爬虫!

那么Googlebot为什么会这么做呢?它怎么会偷偷地将一个网站的内容全部删掉了呢?难道Google与这个政府网站有过节?都不是。经过多番调查,Josh找到了原因。原来在转移内容的过程中,有一个用户将内容从一个网页复制然后粘贴到另一个网页上,其中包括了“编辑”链接,而这个链接是可以编辑内容的。在正常情况下,这个链接是没有问题的,因为外部的用户即使点了这个链接,他还需要输入有效的用户名和密码才能通过身份验证,因此他不可能进行编辑。但是,这个CMS却有一个致命的漏洞,那就是它的认证系统并没有包括像Googlebot这类爬虫在内!也就是说,Googlebot可以轻松通过它的认证系统!

因为Googlebot没有使用cookies,所以它可以轻松地绕过cookies验证。它也不理会JS代码,所以也不会像普通用户那样点击了“编辑” 链接后被自动转向到正常的未登录提示页上。因此,它大摇大摆地顺着网页上的链接把整个网站逛遍了,其中当然包括了标题为“删除网页”的网页!

整个事件的起因是这个CMS系统存在致命的漏洞,并且更倒霉的是,它刚好碰上了Google的爬虫。

此贴转载于网络