51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 7082|回复: 3
打印 上一主题 下一主题

[讨论] 有谁用过开源自动化工具webInject?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2009-2-19 10:05:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
现在正在研究webinject,有哪位高手用过,可否赐教两招?好多东西都不懂啊
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

  • TA的每日心情
    奋斗
    2018-2-28 18:04
  • 签到天数: 40 天

    连续签到: 1 天

    [LV.5]测试团长

    2#
    发表于 2009-2-19 10:53:10 | 只看该作者
    给你一份中文手册参考下:
    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 编辑 ]
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2018-2-28 18:04
  • 签到天数: 40 天

    连续签到: 1 天

    [LV.5]测试团长

    3#
    发表于 2009-2-19 10:54:06 | 只看该作者
    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';
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    4#
     楼主| 发表于 2009-2-20 16:21:40 | 只看该作者

    回复 2# 的帖子

    哦谢谢了,这些我也有的,但具体情况还是不清楚,config配置文件必须要按用户手册配置才可以正常运行吗?
    不是需要另外一个工具捕获和产生HTTP/SOAP请求和响应吗?
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-6 07:59 , Processed in 0.073779 second(s), 26 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表