欢迎访问 中国软件工程网 www.rjgc.net

使用测试工具进行HTTP测试

上一篇 / 下一篇  2009-03-06 15:28:34

欢迎访问 中国软件工程网 http://www.rjgc.net

在选择什么样的测试工具之前,需要分析在实际工作工程中有哪几种请求类型需要模拟,然后根据实际测试需要选择合适的工具。在这里工具不一定是一种,可以根据实际的场景来选择,甚至几种工具组合使用。通常情况下需要模拟的消息请求场景有以下几种。

1) 最简单的请求,请求访问某个网页。

2) 通过Get方法访问页面并且加入参数。

3) 通过Post方法访问页面并且加入参数

4) 通过Post方法访问页面并且需要提交表单

同样如果对验证点进行总结,大致也有以下几个方面的内容需要进行验证。

1)      原因短语字段

2)      网页的内容(包含链接,图片)

3)      服务器处理结果验证(包含返回的Soap消息,sessionId等)

本书将主要几个测试案例来说明如何使用HTTPUNITXMLUNIT来实现以上几种消息请求的模拟和结果的验证。

场景1:访问"http://www.baidu.com",并且验证相关的消息头和检验网页中的WebLink是否符合期望。代码如下

01    import org.junit.Test;

02    import static org.junit.Assert.*;

03    import com.meterware.httpunit.WebConversation;

04    import com.meterware.httpunit.WebResponse;

05    @Test

06    public void TestCase1() throws Exception

07    {

08           System.out.println("直接获取网页内容:");

09           //建立一个WebConversation实例

10           WebConversation wc = new WebConversation();

11           //向指定的URL发出请求,获取响应

12           WebResponse wr = wc.getResponse( "http://www.baidu.com" );

13           //期望返回消息头

14           String[] Heads={"CP=\" OTI DSP COR IVA OUR IND COM \"","Sat, 15 Mar 2008 09:54:00 GMT"

15                         ,"BWS/1.0","BAIDUID=ACBF37FA63FA39B866C6F4C190E96845:FG=1; expires=Sat, 15-Mar-38 09:54:00 GMT; path=/; domain=.baidu.com"

16                         ,"text/html","gzip","Sat, 15 Mar 2008 09:54:00 GMT","1559","private"};

01    import org.junit.Test;

02    import static org.junit.Assert.*;

03    import com.meterware.httpunit.WebConversation;

04    import com.meterware.httpunit.WebResponse;

05    @Test

06    public void TestCase1() throws Exception

07    {

08           System.out.println("直接获取网页内容:");

09           //建立一个WebConversation实例

10           WebConversation wc = new WebConversation();

11           //向指定的URL发出请求,获取响应

12           WebResponse wr = wc.getResponse( "http://www.baidu.com" );

13           //期望返回消息头

14           String[] Heads={"CP=\" OTI DSP COR IVA OUR IND COM \"","Sat, 15 Mar 2008 09:54:00 GMT"

15                         ,"BWS/1.0","BAIDUID=ACBF37FA63FA39B866C6F4C190E96845:FG=1; expires=Sat, 15-Mar-38 09:54:00 GMT; path=/; domain=.baidu.com"

16                         ,"text/html","gzip","Sat, 15 Mar 2008 09:54:00 GMT","1559","private"};

 

17           String s1 = wr.getHeaderFieldNames()[0];

18           System.out.println(wr.getHeaderField(s1));

19           assertEquals(Heads[0],wr.getHeaderField(s1));

20           s1 = wr.getHeaderFieldNames()[2];

21           assertEquals(Heads[2],wr.getHeaderField(s1));

22           //准备期望的网页链接

23           String[] Explinks ={

24                         "http://hi.baidu.com/baidu",

25                         "http://news.baidu.com",

26                         "http://tieba.baidu.com",

27                         "http://zhidao.baidu.com",

28                         "http://mp3.baidu.com",

29                         "http://image.baidu.com",

30                         "/search/jiqiao.html",

31                         "/gaoji/advanced.html",

32                         "http://hi.baidu.com",

33                         "http://www.baidu.com/more",

34                         "http://utility.baidu.com/traf/click.php?id=215&url=http://www.baidu.com",

35                         "http://jingjia.baidu.com",

36                         "http://top.baidu.com",

37                         "/home.html",

38                         "http://ir.baidu.com",

39                         "http://www.baidu.com/duty",

40                         "http://www.miibeian.gov.cn",

41                         "http://www.hd315.gov.cn/beian/view.asp?bianhao=010202001092500412"

42           };

43           //对网页上所有的链接进行断言

44           for(int i = 0; i <= wr.getLinks().length -1; i++)

45           {

46                  assertEquals(Explinks[i],wr.getLinks()[i].getURLString());

47                  System.out.println(wr.getLinks()[i].getURLString());

48           }

49    }

17           String s1 = wr.getHeaderFieldNames()[0];

18           System.out.println(wr.getHeaderField(s1));

19           assertEquals(Heads[0],wr.getHeaderField(s1));

20           s1 = wr.getHeaderFieldNames()[2];

21           assertEquals(Heads[2],wr.getHeaderField(s1));

22           //准备期望的网页链接

23           String[] Explinks ={

24                         "http://hi.baidu.com/baidu",

25                         "http://news.baidu.com",

26                         "http://tieba.baidu.com",

27                         "http://zhidao.baidu.com",

28                         "http://mp3.baidu.com",

29                         "http://image.baidu.com",

30                         "/search/jiqiao.html",

31                         "/gaoji/advanced.html",

32                         "http://hi.baidu.com",

33                         "http://www.baidu.com/more",

34                         "http://utility.baidu.com/traf/click.php?id=215&url=http://www.baidu.com",

35                         "http://jingjia.baidu.com",

36                         "http://top.baidu.com",

37                         "/home.html",

38                         "http://ir.baidu.com",

39                         "http://www.baidu.com/duty",

40                         "http://www.miibeian.gov.cn",

41                         "http://www.hd315.gov.cn/beian/view.asp?bianhao=010202001092500412"

42           };

43           //对网页上所有的链接进行断言

44           for(int i = 0; i <= wr.getLinks().length -1; i++)

45           {

46                  assertEquals(Explinks[i],wr.getLinks()[i].getURLString());

47                  System.out.println(wr.getLinks()[i].getURLString());

48           }

49    }

 测试代码01-04说明本用例需要的jar包。由于HTTPUNIT是由junit扩展的,读者在编写测试代码的时候也可以直接从HttpUnitTest扩展,但是这样不是特别灵活,会造成其他框架诸如XmlUnit等无法使用,所以建议还是从junit扩展,然后使用其中功能即可。

 

场景2:访问www.mytest.com 跳转到www.mylogin.com,添加参数用户名密码,返回到www.mytest.com。并且验证放回的soap消息中的内容是否正确,如果成功登陆那么返回消息”Success”。测试代码如代码5.2

01    @Test

02    public void TestCase8() throws Exception

03    {

04           String sip_appkey = "100";//app_id

05         String sip_apiname = "ali.ali-7695-sip";

06         String sip_appsecret = "test_secret";

07         //跳转到的登陆页面

08         String api_server = "http://www.mylogin.com";

09         //第一次访问页面

10         String url = "http://www.mytest.com/";

11          //先登第一次要访问的页面,目的获得测试的Post

12           WebConversation conversation = new WebConversation();

13           WebRequest request = new PostMethodWebRequest(url);

14           WebResponse response = conversation.getResponse(request);

15          WebForm. testForm. = response.getForms()[0];

16          request = testForm.getRequest();

17          //添加第一页面需要的参数

18          request.setParameter("sip_appkey", sip_appkey);

19          request.setParameter("sip_apiname", sip_apiname);

20          request.setParameter("sip_appsecret", sip_appsecret);

21          request.setParameter("api_server", api_server);

22          response = conversation.getResponse(request);

23          System.out.println(response.getText());

24          //由于需要登陆才能访问所以转到登陆页面,

25          //

TAG: http HTTP Http 工具

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)