2012年4月

之前安装<u>QTP</u>时遇到的问题,最近在安装Add-in时又遇到了。<p>     问题描述: 安装QTP或者Add-in时,安装程序在安装到第三步时突然没有了进度,停止不动了,界面一直显示为”正在执行产品配置,此过程需要几分钟的时间..."(具体忘记了,诸如此类的话)。我记得第一次安装时我大概等了有2个小时才执行下面的安装程序。当时问了蛮多人,都不清楚。</p><p> </p><p>      原因:具体原因我也是在最近的一次Trainning中才知道的,这是因为在有两个“msiexec.exe”进程在运行。</p><p>      解决办法:打开任务管理器,找到进程名字为“msiexec.exe”,且用户是“SYSTEM”的进程,将占用大小较小的那个进程kill掉~,你会发现,一下子就执行下面的安装了。</p><p>LR有同样的问题,解决方法同上。。</p><p></p>

<p><span style="">        在测试设计过程中,大家都会遇到很多变量进行组合的情况,对相互组合的两个或更多变量进行的测试活动就是组合测试,一般情况下都是使用组合测试法,但这种情况很多测试人员研究得不够深入。测试人员需要开发或了解组合测试法中使用到的工具,通过程序得到用例组合才更加合理和全面,如果不在测试中一起改变某些变量,就会遗漏由不同的变量组合而触发的错误。</span></p><p><span style="">
</span></p><p><span style="">       首先介绍下组合测试法的定义,组合测试是一种测试用例生成方法。它将被测系统抽象出来的变量的取值进行组合并生成一组测试用例的过程,一般情况下,组合测试能够在保证错误遗漏率的前提下采用较少的测试用例测试系统。但是对于如何从全集合的变量组合中抽取出有效的测试用例,会有不同的方法,两因素(<span>Pairwise</span>)组合测试就是一种比较好的方法去挖掘出有效的测试用例组合。接下来介绍另外一种方法去自动生成较好的测试用例集,那就是全对偶测试法<span>(All Pairs)</span>。这些组合测试方法也是高级测试工程师必须掌握的。</span></p><p><span style="">       现在我们假设存在<span>3</span>个变量:<span>V1</span>、<span>V2</span>、<span>V3</span>,<span>V1</span>变量存在<span>3</span>个值:<span>A</span>、<span>B</span>、<span>C</span>;<span>V2</span>变量存在<span>2</span>个值:<span>D</span>、<span>E</span>;<span>V3</span>变量存在<span>2</span>个值:<span>F</span>、<span>G</span>。按照组合测试法,可以组合出<span>322 = 12</span>种情况,也就是可以设计出<span>12</span>个测试用例。如果<span>3</span>个变量都存在<span>5</span>个不同的值的话,那就可以组合出<span>555 = 125</span>种情况,也就是需要设计出<span>125</span>个测试用例。测试专家<span>James Bach</span>使用全对偶测试法<span>(All Pairs)</span>将这<span>125</span>个测试用例压缩成<span>25</span>个测试用例,从理论上来覆盖变量组合的测试覆盖率,全对偶测试法有个基本的原则是每个变量的每个取值都要与至少一个用例中的每个其他变量的每个取值配对。</span></p><p><span style="">      为了让业界测试人员更能方便的使用全对偶测试法产生的组合测试的测试用例,<span>JamesBach</span>使用<span>Perl</span>语言开发了一个<span>allpairs</span>工具,接下来通过讲解<span>allpairs</span>工具的使用方法来了解全对偶测试法<span>(All Pairs)</span>的实现原理和组合策略。本工具的下载地址:<span>http://www.satisfice.com/tools/pairs.zip</span>。</span></p><p><span style="">假设我们有两个参数需要测试,比如操作系统,打印机,先列出每个参数的值:</span></p><p><span style="">操作系统:</span>Win 98 Win XP Win 7</p><p><span style="">打印机:</span>HP 4050 HP 4100</p><p><span style="">为了测试所有的组合对<span>(pairings)</span>,测试用例包括如下情况:</span></p><p>

</p><p><span style="">      在两个参数的情况下,所有的组合对<span>(pairings)</span>就是参数之间的所有组合情况。但是如果我们新增一个参数将会发生什么呢?</span></p><p><span style="">是否双面打印:</span>是 否</p><p><span style="">下面是<span>3</span>个参数进行组合的所有测试用例:</span></p><p><span>
</span></p><p><span style="">对应三个参数的所有组合情况就是<span>12</span>个测试用例。但是我们需要的是在一组测试用例中能够保证至少一个用例中的每个其他变量的每个取值都配对过。这种情况就可以得到较少的测试用例,我们就可以得到<span>6</span>个测试用例。</span></p><p><span>
</span></p><p><span style="">事实上,如果这三个参数中的某两个参数的值的任意不同的组合会触发一个<span>bug</span>的话,那表格上的那组测试用例也可以发现该<span>bug</span>。当三个特殊的值组合在一起触发的某个<span>bug</span>,那表格上的那组测试用例不一定能发现该<span>bug</span>,但是至少我们覆盖了所有的全对偶<span>(all pairs)</span>。</span></p><p><span style="">相对于所有组合情况来说,全对偶的测试覆盖率要容易很多。例如,如果你想测试<span>10</span>个参数且都有<span>26</span>个值的功能,所有组合情况将导致存在<span>141,167,095,653,376</span>个测试用例。而全对偶测试法就只要测试<span>1094</span>个测试用例就可以。</span></p><p><span style="">为了能较好的使用<span>allpairs</span>工具,测试人员需要在表格上列出所有的参数和参数值,一般可以使用<span>Excel</span>工具来表达:</span></p><p><span>
</span></p><p><span style="">然后将这个<span>Excel</span>表格拷贝到一个<span>text</span>文件<span>(</span>暂时命名为<span>vars.txt)</span>,在<span>Dos</span>平台上运行<span>Allpairs</span>程序,使用如下的命令:</span></p><p><span style="">ALLPAIRS VARS.TXT > TESTCASES.TXT </span><span style="">如果测试人员也安装了<span>Perl</span>,也可以使用如下的命令:</span></p><p><span style="">PERL ALLPAIRS.PL VARS.TXT > TESTCASES.TXTTESTCASES.TXT</span><span style="">文件里面的数据也适合拷贝到<span>Excel</span>文件中,类似于如下:</span></p><p><span style="">
</span></p><p><span style="">上图的第一部分是测试用例的集合,那个”<span>pairrings</span>”列说明的是全对偶方法找到的唯一<span>pairrings</span>的数量。</span></p><p><span style="">上图的第二部分是帮助测试人员了解全对偶方法的是怎么完成的。它列出了每个<span>pair</span>,且显示了这个<span>pair</span>在测试用例列表中出现的次数,且列表出了每个<span>pair</span>出现的时候所对应的测试用例的用例号。</span></p><p><span style="">James Bach </span><span style="">也在《软件测试经验与教训》中详细的说明任何使用全对偶的测试方法进行组合测试。主要分三大步骤,第一个步骤是从域划分开始,确定和压缩每个参数所取的值和个数;第二个步骤是 获得全单值,保证覆盖到每个变量的每个重要取值;第三个步骤是 获得全对偶,保证每个变量的每个取值都要与至少一个测试用例中的每个其他变量的每个取值配对。同时他还表示仅仅使用全对偶测试是有风险的,与全单值一样,测试人员可能知道被广泛应用的特定组合,或可能有麻烦的组合。</span></p><p><span style="">
</span></p><p><span style="">      当然很多人会问是不是还有其他的工具来自动化生成组合的测试用例,由于全对偶测试法并不是一个最完美的解决办法,但在大部分情况下,对测试来说还是足够的。考虑<span>10</span>个参数且都有<span>10</span>个值的情况,全对偶测试<span>(All Pairs)</span>需要使用<span>177</span>个测试用例来覆盖组合测试情况。最有可能的最佳的用例个数是<span>100</span>到<span>177</span>之间,<span>James</span>怀疑在<span>130</span>个测试用例左右。但是与成千上万的测试用例集合相比,<span>177</span>个并不是特别差的情况。当然,对于使用全对偶测试<span>(All Pairs)</span>法产生的所有测试用例集合也可以是可运行的自动化脚本,由于参数和取值之间没有约束关系,所以产生的用例集合有规律,目前淘宝网技术质量部开发了相关的工具用于通过组合测试法生成页面自动化脚本,该脚本是<span>Ruby</span>语言编写,通过规则和参数化取值来准备数据,使用关键的<span>key</span>标识来组合自动化脚本的框架,有兴趣的同学可以一同研究。</span></p><p><span style="">
</span></p><p><span style="">      一般在测试设计过程中,组合测试法不会单独使用,而是会与其他方法进行组合使用,大部分时候是和判定表和边界值组合使用,在关键性的高稳定要求的系统软件中,组合测试和边界测试的组合覆盖率尤其重要。这个组合测试策略在兼容性测试策略方案上也有很大的作用,在选择操作系统,浏览器版本,其他软件配置的兼容性测试上给出方向性的指导。</span></p><p><span style="">
</span></p><p><span style="">      美国<span>Telcordia </span>技术公司有一个基于<span>web</span>的工具,它产生的结果集要优于全对偶测试<span>(All Pairs)</span>得到的结果集。例如,存在<span>40</span>个参数且都有<span>3</span>个值的情况,这个工具可以使用<span>21</span>个测试用例来覆盖所有的<span>pairs</span>。全对偶测试<span>(All Pairs)</span>则需要<span>29</span>个测试用例才能达到同样的效果,但是这个工具是收费的,相比较免费的全对偶测试<span>(All Pairs)</span>,测试人员可以自己做出选择。</span></p><p><span style="">
</span></p><p><span style="">      当然,微软也会有相关的工具来构造组合测试用例,<span>PICT</span>就是一个比较易用的工具。<span>PICT</span>(<span>Pairwise Independent CombinatorialTesting tool</span>)可以有效地按照两两测试的原理,进行测试用例设计。在使用<span>PICT</span>时,需输入与测试用例相关的所有参数,以达到全面覆盖的效果。下载地址:<span>http://download.csdn.net/source/3078728</span>。使用过程中关键的是需要建立组合测试的模型,以便于用尽可能少的测试用例,覆盖尽可能多的影响因素,详细使用介绍如下:<span>http://www.cnblogs.com/liangshi/archive/2010/07/25/1784666.html</span>。</span></p><p><span> </span></p><p>
</p>


<p></p><p>在测试设计过程中,大家都会遇到很多变量进行组合的情况,对相互组合的两个或更多变量进行的测试活动就是组合测试,一般情况下都是使用组合测试法,但这种情况很多测试人员研究得不够深入。测试人员需要开发或了解组合测试法中使用到的工具,通过程序得到用例组合才更加合理和全面,如果不在测试中一起改变某些变量,就会遗漏由不同的变量组合而触发的错误。</p><p>  首先介绍下组合测试法的定义,组合测试是一种<u></u>测试用例生 成方法。它将被测系统抽象出来的变量的取值进行组合并生成一组测试用例的过程,一般情况下,组合测试能够在保证错误遗漏率的前提下采用较少的测试用例测试 系统。但是对于如何从全集合的变量组合中抽取出有效的测试用例,会有不同的方法,两因素(Pairwise)组合测试就是一种比较好的方法去挖掘出有效的 测试用例组合。接下来介绍另外一种方法去自动生成较好的测试用例集,那就是全对偶测试法(All Pairs)。这些组合测试方法也是高级测试工程师必须掌握的。</p><p>  现在我们假设存在3个变量:V1、V2、V3,V1变量存在3个 值:A、B、C;V2变量存在2个值:D、E;V3变量存在2个值:F、G。按照组合测试法,可以组合出322 = 12种情况,也就是可以设计出12个测试用例。如果3个变量都存在5个不同的值的话,那就可以组合出555 = 125种情况,也就是需要设计出125个测试用例。测试专家James Bach使用全对偶测试法(All Pairs)将这125个测试用例压缩成25个测试用例,从理论上来覆盖变量组合的测试覆盖率,全对偶测试法有个基本的原则是每个变量的每个取值都要与至 少一个用例中的每个其他<u></u>变量的每个取值配对。</p>   为了让业界测试人员更能方便的使用全对偶测试法产生的组合测试的测试用例,James Bach使用Perl语言开发了一个allpairs工具,接下来通过讲解allpairs工具的使用方法来了解全对偶测试法(All Pairs)的实现原理和组合策略。本工具的下载地址:http://www.satisfice.com/tools/pairs.zip
<p>假设我们有两个参数需要测试,比如操作系统<u></u>,打印机,先列出每个参数的值:</p><p>  操作系统:
  Win 98
  Win XP
  Win 7</p><p>  打印机:
  HP 4050
  HP 4100</p><p>  为了测试所有的组合对(pairings),测试用例包括如下情况:</p><p>用例</p><p>操作系统</p><p>打印机</p><p>1</p><p>Win 98</p><p>HP 4050</p><p>2</p><p>Win 98</p><p>HP 4100</p><p>3</p><p>Win XP</p><p>HP 4050</p><p>4</p><p>Win XP</p><p>HP 4100</p><p>5</p><p>Win 7</p><p>HP 4050</p><p>6</p><p>Win 7</p><p>HP 4100</p><p>  在两个参数的情况下,所有的组合对(pairings)就是参数之间的所有组合情况。但是如果我们新增一个参数将会发生什么呢?</p><p>  是否双面打印:</p><p>  是
  否</p><p>  下面是3个参数进行组合的所有测试用例:</p><p>用例</p><p>操作系统</p><p>打印机</p><p>是否双面打印</p><p>1</p><p>Win 98</p><p>HP 4050</p><p>是</p><p>2</p><p>Win 98</p><p>HP 4100</p><p>是</p><p>3</p><p>Win XP</p><p>HP 4050</p><p>是</p><p>4</p><p>Win XP</p><p>HP 4100</p><p>是</p><p>5</p><p>Win 7</p><p>HP 4050</p><p>是</p><p>6</p><p>Win 7</p><p>HP 4100</p><p>是</p><p>7</p><p>Win 98</p><p>HP 4050</p><p>否</p><p>8</p><p>Win 98</p><p>HP 4100</p><p>否</p><p>9</p><p>Win XP</p><p>HP 4050</p><p>否</p><p>10</p><p>Win XP</p><p>HP 4100</p><p>否</p><p>11</p><p>Win 7</p><p>HP 4050</p><p>否</p><p>12</p><p>Win 7</p><p>HP 4100</p><p>否</p>
<p></p><p></p>

<p> 在<u>性能测试</u>中,我们经常会涉及到<u>测试数据</u>,对于测试数据我们可以为两种:一种是执行测试用例中使用的测试数据;另一种是在大数据量下测试时需要的测试基础数据。两者的主要区别是在于是否会在测试中直接用于测试执行。测试基础数据可以转化为测试数据。在这里主要说明测试基础数据。</p><p>  一个系统经常会规划多年的业务规模,并对其性能提出要求。在测试设计时就需要测试在系统运行了多年时的性能,此时<u>数据库</u>中会有大量的历史数据,我们在测试时需要首先构造这些历史数据,我们称之为基础数据,这种情况的测试称为大数据量测试。由于构造数据的量级不同,我们会考虑采用不同的构造数据的方法。</p><p>  常用构造基础数据的方法有:</p><p>  1、使用<u>自动化测试</u>工具;</p><p>  2、使用专用的测试数据产生工具;</p><p>  3、使用数据库脚本语言直编写存储过程等产生;</p><p>  4、使用<u>其他</u>的辅助工具产生;</p><p>  下面讲解一下各种数据产生方法的优缺点。</p><p>  1、使用自动化测试工具</p><p>  使用自动化测试工具如<u>QTP</u>、WinRunner、Robot等录制脚本,参数化需要构造的业务数据,然后运行脚本,通过反复运行业务场景在后台数据库中产生业务数据。</p><p>  该方法的使用场合:不熟悉后台数据库结构,业务数据量需求不是很大。</p><p>  优点:测试脚本录制一遍,可以反复运行。</p><p>  缺点:参数化数据,需要对业务规则或数据库表有一定了解,否则会导致运行失败。</p><p>  2、使用专用的测试数据产生工具</p><p>  常用的数据构造数据有Quest公司的DataFactory、开源DBMonster。</p><p>  DataFactory 是一种快速的、易于产生测试数据工具,它能建模复杂数据关系,且有带有GUI界面。DataFactory是一个功能强大的数据产生器,它允许测试人员毫不费力地产生百万行有意义的测试数据。在使用中首先读取数据库中表的schema,即表的定义之类的内容,以列表的形式显示;然后由用户定制要产生数据的具体内容,如数字范围、字符串长度、要产生数据记录的个数等等,最后运行工程,生成数据。</p><p>  DBMonster (http://dbmonster.kernelpanic.pl)是一个Java的开源项目,通过JDBC方式连接数据库,因此可以在任何支持Java和JDBC的平台上运行。DBMonster开发的原意是为数据库开发者服务,可以协助产生大量的规则或不规则数据,便于数据库开发者基于这些数据进行数据库的调优。DBMonster通过两个XML文件(配置文件和 schema文件)控制数据产生的行为,配置文件指明需要连接的数据库、连接使用的用户名和口令、需要操作的sheme、重试次数等全局设置,而 scheme文件则指明针对每张数据表的每个字段产生数据的规则。</p><p>  3、使用数据库脚本语言直编写存储过程等产生</p><p>  要利用该方法构造基础数据,需要对后台数据库的表结构有一定的了解,例如表之间的关联关系、表的自增长主键如何实现的、表中的特殊字段的代码如何产生等。在熟悉表结构的基础上编写存储过程。对于复杂业务系统其数据库结构往往也相当复杂,可编写多个存储过程去分别产生各个表中的数据,然后由一个总的存储过程控制产生数据的规则和数量等。</p><p>  该方法的适用场合:对数据库表结构非常熟悉,并且熟悉相应的存储过程编写。</p><p>  优点:在数据库后台执行,效率非常高。</p><p>  缺点:需要花大量的时间熟悉表结构和存储过程的调试。</p><p>  4、使用其他辅助工具</p><p>  使用PowerDesigner工具。</p><p>  首先从数据库中Reverse Engineering出来数据库的Schema,然后设置测试数据所需要的Profile,以及各个表所需要的测试数据量,再生成Insert脚本,最后通过数据库的命令行程序执行这个<u>SQL</u>脚本将数据Insert到数据库中。对于不同的数据库命令行程序不同,比如对MS SQL Server是osql,对Sybase ASE是isql,对<u>Oracle</u>是sqlplus等。</p><p>  该方法的使用场合:对数据库结构不熟悉,同时需要产生大量业务数据(如千万级)。</p><p>  优点是:做了相应设置之后,Insert脚本自动生成,产生数据时不需要有业务数据。</p><p>  缺点是:对于千万级的测试数据可能要分成若干个SQL脚本,分别产生,并行运行。对Oracle之类的数据库尤其要考虑时间日期以及时间戳类型的字段的值得处理问题。</p><p>  使用PL/SQL Developer工具</p><p>  在该工具中【Tools】菜单栏下有【Data Generator】菜单,利用该工具可以针对具体的表构造利用其构造规则,设置需要产生的数据。</p><p>  TOAD工具:</p><p>  TOAD工具与PL/SQL Developer工具类似,也是数据库客户端管理工具。TOAD套件中集成了数据生成测试工具和<u>压力测试</u>工具。数据生成测试工具有助于开发人员快速生成大量有实际意义且引用关系正确的测试数据,简化应用的测试过程。</p><p>  使用Informatica工具:</p><p>  Informatica是数据挖掘工具。可利用该工具构造海量数据。在现有的业务数据的基础上,使用Informatica工具,将现有的业务数据(平面文件数据或数据库表中的数据)多次重复装载到数据库中,可以快速构造出千万级的大数据量数据,且生成的大数据量数据在质量和可用性方面有保障。</p><p>  优点:生成速度很快。</p><p>  缺点:使用这种方法数据库相应的表中必须有相应的数据,且数据重复利用时也要考虑字段值重复问题。</p><p></p><p>Thanks 4 http://www.uplook.cn/index-Index-show-view12397.html<;/p><p></p>