51Testing软件测试论坛

标题: 有谁用过开源自动化工具webInject? [打印本页]

作者: 测试皇后    时间: 2009-2-19 10:05
标题: 有谁用过开源自动化工具webInject?
现在正在研究webinject,有哪位高手用过,可否赐教两招?好多东西都不懂啊
作者: archonwang    时间: 2009-2-19 10:53
给你一份中文手册参考下:
http://os.rdxx.com/Linux/LinuxRudiment/2008/9/25647396780.shtml
webInject 手册

一 系统框架

WebInject为perl语言编写,其系统框架如下:

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.xml是GUI运行时默认的配置文件名称.在命令行运行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-agent为webInject

<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 case的http 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

       

常用于需要解析session的case,以及动态产生value的case.

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=|;"

这段代码将捕捉上一个上一个response的session id,凡是http header中左面为JSESSIONID=右面为;里面的内容将被赋值到变量{PARSEDRESULT}中.
当url中使用{PARSEDRESULT},webinject将自动替代捕获到的sessionid.

url="http://myserver/search.jsp?value=123&;JSESSIONID={PARSEDRESULT}"

上述代码下:如果上一个response的header为

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 重定向

[ 本帖最后由 archonwang 于 2009-2-19 10:55 编辑 ]
作者: archonwang    时间: 2009-2-19 10:54
WEBInject中文支持方法

webinject支持中文的方法
一、环境
   webinject配置文件为:UTF-8,网页内容为UTF-8
二、不支持中文原因
    webinject从配置文件中读入的字符被编码为unicode,因此需要在webinject程序中将 unicode编码转换成UTF-8编码。
三、方法为:
1、在webinject.pl文件中加入use Encode;
2、修改sub verify 子程序:将
           if ($case{$_}) {
            if ($response->as_string() =~ m~$case{$_}~si) {  #verify existence of string in response
修改为:
if ($case{$_}) {
my $regx = encode('UTF-8', $case{$_});
     if ($response->as_string() =~ m~$regx~si) {  #verify existence of string in response

四、注意
   如果主配置文件中定义<reporttype>standard</reporttype>,在运行webinject.pl时会出现Wide character in print …… 错误。
   解决方法为在webinject.pl中加入no warnings 'utf8';
作者: 测试皇后    时间: 2009-2-20 16:21
标题: 回复 2# 的帖子
哦谢谢了,这些我也有的,但具体情况还是不清楚,config配置文件必须要按用户手册配置才可以正常运行吗?
不是需要另外一个工具捕获和产生HTTP/SOAP请求和响应吗?




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2