webInject中文手册

webInject是一款Perl语言编写的测试工具,适用于HTTP协议的测试。本文档详细介绍了webInject的系统框架、运行方式,特别是配置文件config.xml中的各项参数,如代理设置、超时时间、HTTP验证等。此外,还讲解了如何在测试用例中处理session ID,通过代码捕获和使用session ID以管理web应用的状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

webInject 手册

系统框架

 WebInjectperl语言编写,其系统框架如下:

webInject包含webInject Engine,可以用命令行调用,或者使用GUI调用webInject Engine. webInject Engine对应代码文件为webinject.pl.

 

webInject使用

webInject可以使用GUI运行以及命令行运行.下面步骤为gui运行,command运行具体参看: http://www.webinject.org/manual.html

步骤一:下载webInject: http://www.webinject.org/download.html

步骤二:解压,例如C:/ webinject

步骤三:双击webinjectgui.exe运行webinject自带的gui.

步骤四:点击run,运行默认配置config.xml

 

 

 

 

 

配置

3.1 config.xml

Config.xml用于配置测试项目,config.xml指定webInject运行哪几个test case并配置一些运行中使用的常量.config.xmlGUI运行时默认的配置文件名称.在命令行运行webInject时候,用户可以指定自己的配置文件.

下面讲述config,xml中使用的各类参数.

3.1.1 Proxy(代理)

config.xml,配置http request代理.代码如下:

<proxy>http://127.0.0.1:8080</proxy>
   
   
如果配置需要验证的代理服务器,代码中加入用户名+密码.代码如下:
   
   
<proxy>http://username:password@127.0.0.1:8080</proxy>

  
  
   
    
  
  

3.1.2 useragent(User-agent翻译为用户代理)

User-agent 字段指的是每个request的自身的标志符,相当于request的身份证号码.默认的user-agentwebInject

<useragent>Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)</useragent>
  
  
3.1.3 httpauth(http验证)
对于需要http验证,配置如下:
<httpauth>www.fakedomain.com:80:my_realm:foo:welcome</httpauth>
   
   

   
   
    
     
   
   
 
 3.1.4  
 
 baseurl(常量baseurl)
   
   
<baseurl>http://myserver</baseurl>

   
   
    
     
   
   

   
   
    
     
   
   
3.1.5 globalhttplog(httplog配置)
   
   

   
   
    
     
   
   
参数yes,记录所有的test case运行过程中的http log
   
   
参数onfail,只记录失败的test casehttp log.
   
   

   
   
    
     
   
   
3.1.6 comment(注释)
   
   
<comment>this will be ignored</comment>
3.1.7      timeout(超时时间)
定义http响应的timeout时间(单位:second),如果test case中的response相应超过设定的timeout时间.这个test case表明为失败.默认配置为180.
<timeout>10</timeout>
   
   

   
   
    
     
   
   
3.1.8 reporttype(报告形式)
这个配置项,用来指定输出的报告以何种形式显示.这里可以指定外部程序作为显示插件.例如:
<reporttype>mrtg</reporttype>
<reporttype>nagios</reporttype>
   
   

   
   
    
     
   
   
 
 3.1.8  
 
 globatimeout
   
   
这个配置项用于nagios 插件,当所有的case通过,但是时间超过globaltimeout时间,警告消息将发送至nagios.
<globaltimeout>10</globaltimeout>

  
  
   
    
  
  
3.1.9  Gnuplot
使用此参数,配置webinject使用的gnuplot产生相应时间图表.
<gnuplot>/usr/bin/gnuplot</gnuplot>
 
3.1.10 standaloneplot
使用webinject.pl生成png图片.此参数只对gui模式下有效.
<standaloneplot>on</standaloneplot>
   
   

   
   
    
     
   
   
 
 3.2  
 
 测试用例配置 testcase.xml.
     
     
配置文件中,配置测试用例文件.代码如下:
   
   
<testcasefile>tests_1.xml</testcasefile>
   
   
<testcasefile>tests_2.xml</testcasefile>
   
   
<testcasefile>tests_3.xml</testcasefile>
Note:可以使用相对路径.
3.3 命令模式(指定自定义的config 文件)
webInject engine(webinject.pl)可以在命令模式下直接调用.
webinject.pl [-c|--config config_file] [-o|--output output_location] 
   
   
             [-n|--no-output] [testcase_file [XPath]]
   
   

   
   
    
     
   
   
命令模式下,可以直接指定测试用例.
   
   
perl webinject.pl mytests.xml
如果没有指定测试用例,将会查找config.xml中配置的测试用例,如果没有测试用例配置,将会查找testases.xml文件.如果还是没有,将会报错.
下面的命令直接执行mytests.xml中的第二个case.
perl webinject.pl mytests.xml testcases/case[2]
   
   

   
   
    
     
   
   
 
 4              
 
 测试用例
   
   
  测试用例为xml 文档,文档中只有id 以及url为必选项,其他为可选项,如果没有验证参数,pass的标准为http response在范围100-399以内.
   
   
     最简单的测试用例配置如下:
   
   
<case
   
   
    id="1"
   
   
    url="http://myserver/test/test.html"
   
   
/>
编号
       
       
参数名称
       
       
描述
       
       
1
       
       
Id
       
       
指定测试用例的执行顺序编号
       
       
2
       
       
Description1
       
       
测试报告的描述
       
       
3
       
       
Description2
       
       
测试报告的描述
       
       
4
       
       
method
       
       
http request的方法,默认下为get方法,可以设置为post
       
       
5
       
       
url
       
       
可以使用ip地址或者主机名称.
       
       
6
       
       
Posttype
       
       
指定上传form的内容类型:
       
       
1 application/x-wwww-form-urlencoded(默认设置)
       
       
2 multipart/form-data
       
       
3 text/xml
       
       
4 application/soap+xml
       
       
7
       
       
postbody
       
       
"application/x-www-form-urlencoded"下为text data,
“multipart/form-data”下为perl code
"text/xml" or "application/soap+xml"下为指定外部文件地址: postbody="file=>soap_payload.xml"
       
       
8
       
       
verifyresponsecode

      
      
       
        
      
      
指定response的正确验证码
       
       
9
       
       
verifypositive

      
      
       
        
      
      
使用perl正则表达式匹配验证码.
       
       
10
       
       
verifypositive2
同上
       
       
11
       
       
verifypositive3
同上
       
       
12
       
       
verifynegative
如果response中存在指定的错误码,则这个response为错误.
       
       
13
       
       
verifynegative1

      
      
       
        
      
      
同上
       
       
14
       
       
verifynextpositive

      
      
       
        
      
      
指定下一个responese的正确验证码,如果下一个response中不包含这个验证码,response错误.
       
       
15
       
       
verifynextnegative
指定下一个response的错误验证码,如果下一个response中包含此验证码,则这个response为错误.
       
       
16
       
       
logrequest
       
       
设置当前case发送的http request是否记录在log文件中.
        
        
17
       
       
logresponse
       
       
设置当前case接受的response是否记录在log文件中.
        
        
18
       
       
parseresponse
       
       
常用于需要解析sessioncase,以及动态产生valuecase.
       
       
19
       
       
sleep
       
       
Case执行的间隔时间.
        
        
20
       
       
errormessage
如果case失败,将会显示指定的errormessage.
        
        
21
       
       
addheader
http request中加入header.
        
        
addheader="Foo: bar|Boo: far"
       
       

  
  
   
    
  
  
4.1 重复执行
重复执行测试用例代码如下:
<testcases repeat="5">
4.2 xml文档中的一些特殊字符
符号名称
正确代码
错误代码
<
      
      
       
        
      
      
verifypositive="<OPTION SELECTED>APPLE"
verifypositive="/<OPTION SELECTED>APPLE"
       
       

      
      
       
        
      
      
"

      
      
       
        
      
      
verifypositive=' 'this' '

      
      
       
        
      
      
verifypositive=' "this" '

      
      
       
        
      
      

  
  
   
    
  
  
4.3常量设置
常量设置以{} config.xml中设置.例子如下:
如果test case中用到: url=http://myserver/test/login.jsp
   
   
config.xml中如下设置: <baseurl>http://myserver</baseurl>
Test case中可以如下重写: url="{BASEURL}/test/login.jsp"
常量设置非常有用,特别是你的测试环境需要改变.比如上面中myserver的名字在不同的测试环境下不同.

  
  
   
    
  
  
 
 5             
 
 通过以及失败的标准
    
    
定义测试用例通过还是失败.
 
 5.1       
 
 Verifications(从内容中定义)
“verifypositive” 如果response中不包含此内容,则测试失败
“verifynegative” 如果response中包含此内容,测试失败.
Verifypositive以及verifynegative可以使用string或者正则表达式.
 
 5.2       
 
 http response code
如果返回的http response code与指定的code相同则通过,反之不通过.
   
   
默认下通过范围为100-399
   
   

  
  
   
    
  
  
5 输出结果
    
    
webInject的输出结果有三个地方:
    
    
5.1 显示结果于gui
   
   
5.2 显示结果于result.html
   
   
 Result.html中为可以得到最详细的细节.
   
   
5.3 显示结果于result.xml
   
   

  
  
   
    
  
  
6 session的处理以及状态管理
    
    
6.1 summary
http 为无状态协议,因此web应用使用不同的方法来管理状态.一种方法为使用cookies,另一种方法为使用session id.
下面介绍如何使用session id :
1 test case中设置如下代码:
parseresponse="JSESSIONID=|;"
  
  
这段代码将捕捉上一个上一个responsesession id,凡是http header中左面为JSESSIONID=右面为;里面的内容将被赋值到变量{PARSEDRESULT}.
url中使用{PARSEDRESULT},webinject将自动替代捕获到的sessionid.
url="http://myserver/search.jsp?value=123&;JSESSIONID={PARSEDRESULT}"
上述代码下:如果上一个responseheader
   
   
Set-Cookie: JSESSIONID=16CD67F723A6D2218CE73AEAEA899FD9; Path=/
在发送过去的url将被解析为: http://myserver/search.jsp?value=123&;JSESSIONID=16CD67F723A6D2218CE73AEAEA899FD9
 
 7 webInject的不足
1 不支持中文
2 异常处理不好(config.xml中配置错误路径的testcase.xml,run gui后界面无反应)
3 不执行response中的脚本.(javascript,vbscript等)
4 不支持http 重定向
 

 

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值