软件黑盒测试基础补充正交实验法及场景法测试用例2/47内容进度•正交试验法–正交表–正交实验•场景法–原理–例子3/47正交试验法简介•在进行测试,设计测试用例时,我们所遇到的实际问题涉及的因素往往很多,如果考虑全面测试,将这些因素各种可能的组合都至少做一次试验,那么,工作量是十分巨大的。那么该如何适当安排试验,减少试验次数呢?4/47正交试验法简介•我们在实际工作中,可以利用数理统计的方法,用正交表安排试验。•其主要优点是能在很多试验方案中挑选出代表性强的少数几个试验方案,并且通过这少数试验方案的试验结果的分析,推断出最优方案。•正交表是一种特别的表格,是正交设计的基本工具。•那么,什么是正交表呢?•日本著名的统计学家田口玄一将正交试验选择的水平组合列成表格,称为正交表。•例如作一个三因素三水平的实验,按全面实验要求,须进行33=27种组合的实验,且尚未考虑每一组合的重复数。–若按L9(33)正交表按排实验,只需作9次–按L18(37)正交表进行18次实验•显然大大减少了工作量。因而正交实验设计在很多领域的研究中已经得到广泛应用。•利用因果图来设计测试用例时,作为输入条件的原因与输出结果之间的因果关系,有时很难从软件需求规格说明中得到。•往往因果关系非常庞大,以至于据此因果图而得到的测试用例数目多的惊人,给软件测试带来沉重的负担,为了有效地,合理地减少测试的工时与费用,可利用正交实验设计方法进行测试用例的设计。7/47正交表的概念•正交表的概念和性质–正交表:一种特制的表,一般的正交表记为)(knmL这表示这是一个K因素,m水平数的正交表,需要进行n次试验。K代表表的列数,表示最多可安排因素的个数,m表示各因素的水平数,也就是因素可选择的取值。n是需要进行试验的次数。L9(33)示意图9/47正交表的种类•正交表共分两种–各列水平数均相同的正交表–混合水平正交表10/47各列水平数均相同的正交表)(knmL各列水平数均相同的正交表782L表示各因素的水平数为2,做8次试验,最多考虑7个因素(含交互作用)的正交表。11/47混合水平正交表12/47正交表的特点•1、正交表中任意一列中,不同的数字出现的次数相等;•表示:在试验安排中,所挑选出来的水平组合是均匀分布的(每个因素的各水平出现的次数相同)——均衡分散性•2、正交表中任意两列,把同行的两个数字看成有序数对时,所有可能的数对出现的次数相同。•表示:任意两因素的各种水平的搭配在所选试验中出现的次数相等——整齐可比性•这是设计正交试验表的基本准则13/47拉丁方名称的由来•古希腊是一个多民族的国家,国王在检阅臣民时要求每个方队中每行有一个民族代表,每列也要有一个民族的代表。•数学家在设计方阵时,以每一个拉丁字母表示一个民族,所以设计的方阵称为拉丁方。14/47拉丁方和正交拉丁方的表述•什么是n阶拉丁方–n个不同的拉丁字母排成一个n阶方阵(n26),如果每行的n个字母均不相同,每列的n个字母均不相同,则称这种方阵为n*n拉丁方,或n阶拉丁方(n26)。–也即:每个字母在任一行、任一列中只出现一次•备注:此时可以用数字代替拉丁字母,它们是等价的•什么是正交拉丁方•设有两个n阶的拉丁方,如果将它们叠合在一起,恰好出n*n个不同的有序数对,则称为这两个拉丁方为互相正交的拉丁方,简称正交拉丁方。15/47•两个n阶拉丁方在同一位置上的数依次配置成有序数对时,如果这两个有序数对恰好各不相同,则这两个拉丁方为互为正交的拉丁方。下面是两个互为正交的4阶拉丁方:•(4.1)(3.3)(2.4)(1.2)•(2.2)(1.4)(4.3)(3.1)•(1.3)(2.1)(3.2)(4.4)•(3.4)(4.2)(1.1)(2.3)16/47正交试验法–3阶拉丁方ABCABCBCA和CABCABBCA用数字替代拉丁字母123123231和31231223117/47正交试验法•利用正交实验设计测试用例的步骤–提取功能说明,构造因子—状态表–加权筛选,生成因素分析表–利用正交表构造测试数据集18/47正交试验法•利用正交实验设计测试用例的步骤–提取功能说明,构造因子—状态表–加权筛选,生成因素分析表–利用正交表构造测试数据集19/47案例分析例1:对某人进行查询,假设查询某人时,有三种不同的查询方式:根据身份证进行查询,根据姓名进行查询,根据手机号查询。考虑输入条件要么填写,要么不填写。可以用正交试验表进行设计。20/47•1、首先确定因素和水平数:•有三个因素:姓名、身份证、号码•每个因素有两个水平数:填写,不填写•2、因此我们选择正交表时要考虑到,所选的表中因素数要求大于等于3,并且表中至少有3个因素的水平数大于等于2。•3、在可选的正交表中,取行数最少的一个。•000•011•101•110•测试用例如下:–1:填写姓名、填写身份证号、填写手机号–2:填写姓名、不填身份证号、不填手机号–3:不填姓名、填写身份证号、不填手机号–4:不填姓名、不填身份证号、填写手机号•增补测试用例–5:不填姓名、不填身份证号、不填手机号•测试用例可以看出:如果按每个因素两个水平数来考虑的话,需要8个测试用例,而通过正交实验法进行的测试用例只有5个,大大减少了测试用例数。用最小的测试用例集合去获取最大的测试覆盖率。23/47正交表的构成•行数(runs):正交表中行的个数,即试验的次数。•因素数(Factors):正交表中列的个数。•水平数(Level):任何单个因素能够取得的值的最大个数。如果因素数不同的话•可以采用包含的方法,在正交表公式中找到包含该情况的公式,如果有N个符合条件的公式,那么选取行数最少的公式。水平数不相同•采用包含和组合的方法选取合适的正交表公式。114系统查询企业单位•当用户打114查询某公司的电话时,电信局的坐席人员会输入该公司相关信息,并进行查询,最后把查询的结果告之用户。•那么,测试人员如何对该此查询功能点进行测试呢?如何设计测试用例呢?测试方法•全部测试•部分测试一•部分测试二•用正交表法设计用例并测试•全部测试(25=32)测试用例太多测试时投入和回报不相符•音形码:0不填、1填•拼音码:0不填、1填•路名码:0不填、1填•行业类别:0不填、1填•特征码:0不填、1填•部分测试一测试时没有把握•部分测试二测试时也没有把握•利用正交表的正交试验法•加上可疑用例1因素数、水平数相符•水平数(变量的取值)相同、因素数(变量)刚好符合正交表对某人进行查询•假设查询某个人时有三个查询条件:根据“姓名”进行查询根据“身份证号码”查询根据“手机号码”查询•考虑查询条件要么不填写,要么填写,此时可用正交表进行设计因素数和水平数•有三个因素:姓名、身份证号、手机号码•每个因素有两个水平姓名:填、不填身份证号:填、不填手机号码:填、不填选择正交表•表中的因素数>=3•表中至少有三个因素的水平数>=2•行数取最少的一个•结果:L4(23)变量映射•姓名:0填写,1不填写•身份证号:0填写,1不填写•手机号码:0填写,1不填写用L4(23)设计的测试用例•测试用例如下:1:填写姓名、填写身份证号、填写手机号2:填写姓名、不填身份证号、不填手机号3:不填姓名、填写身份证号、不填手机号4:不填姓名、不填身份证号、填写手机号•增补测试用例•5:不填姓名、不填身份证号、不填手机号•测试用例减少数:852因素数不相同•水平数(变量的取值)相同但在正交表中找不到相同的因素数(变量)(取因素数最接近但略大的实际值的表)114系统查询企业单位因素数和水平数•有五个因素:音形码、拼音码、路名码、行业类别和特征码•每个因素有两个水平音形码:填、不填拼音码:填、不填路名码:填、不填行业类别:填、不填特征码:填、不填选择正交表•表中的因素数>=5•表中至少有五个因素的水平数>=2•行数取最少的一个•结果:L8(27)变量映射•音形码:0不填写,1填写•拼音码:0不填写,1填写•路名码:0不填写,1填写•行业类别:0不填写,1填写•特征码:0不填写,1填写用L8(27)设计的测试用例•测试用例如下:•音形码填写、拼音码填写、路名码填写、行业类别填写、特征码填写•音形码填写、拼音码填写、路名码填写、行业类别不填、特征码不填•音形码填写、拼音码不填、路名码不填、行业类别填写、特征码填写•音形码填写、拼音码不填、路名码不填、行业类别不填、特征码不填•音形码不填、拼音码填写、路名码不填、行业类别填写、特征码不填•音形码不填、拼音码填写、路名码不填、行业类别不填、特征码填写•音形码不填、拼音码不填、路名码填写、行业类别填写、特征码不填•音形码不填、拼音码不填、路名码填写、行业类别不填、特征码填写•增补测试用例•音形码不填、拼音码填写、路名码不填、行业类别不填、特征码不填•音形码不填、拼音码不填、路名码填写、行业类别不填、特征码不填•音形码不填、拼音码不填、路名码不填、行业类别填写、特征码不填•音形码不填、拼音码不填、路名码不填、行业类别不填、特征码填写•音形码不填、拼音码不填、路名码不填、行业类别不填、特征码填写•测试用例减少数:32133水平数不相同•因素(变量)的水平数(变量的取值)不相同水平数不相同的情况•假设有一个系统有5个独立的变量(A,B,C,D,E)。变量A和B都有两个取值(A1、A2和B1、B2)。变量C和D都有三个可能的取值(C1、C2、C3和D1、D2、D3)。变量E有六个可能的取值(E1、E2、E3、E4、E5、E6)。因素数和水平数•有五个因素(变量):A、B、C、D和E•两个因素有两个水平(变量的取值)、两个因素有三个水平,一个因素有六个水平A:A1、A2B:B1、B2C:C1、C2、C3D:D1、D2、D3E:E1、E2、E3、E4、E5、E6选择正交表•表中的因素数(变量)>=5•表中至少有二个因素的水平数(变量的取值)>=2•至少有另外二个因素的水平数>=3•还至少有另外一个因素的水平数>=6•行数取最少的一个(L49(78)、L18(3661))•结果:L18(3661)变量映射•A:0A1、1A2•B:0B1、1B2•C:0C1、1C2、2C3•D:0D1、1D2、3D3•E:0E1、1E2、2E3、3E4、4E5、5E6用L18(3661)设计的测试用例•测试用例如下:省略•测试用例减少数:21618•加上一些可疑的情况(设为n个)为18+n它比原来也少多了56/47正交试验法•案例:PowerPoint软件的打印功能•假设功能描述如下:–打印范围分:全部、当前幻灯片、给定范围共三种情况;–打印内容分:幻灯片、讲义、备注页、大纲视图共四种方式;–打印颜色/灰度分:颜色、灰度、黑白共三种设置;–打印效果分:幻灯片加框和幻灯片不加框两种方式。因素状态表状态/因素A打印范围B打印内容C打印颜色/灰度D打印效果0全部幻灯片颜色幻灯片加框1当前幻灯片讲义灰度幻灯片不加框2给定范围备注页黑白3大纲视图因素状态表:状态/因素ABCD0A1B1C1D11A2B2C2D22A3B3C33B4•被测项目中一共有四个被测对象,每个被测对象的状态都不一样。•选择正交表:–1、表中的因素数=4–2、表中至少有4个因素的水平数=2–3、行数取最少的一个–4、最后选中正交表公式:L16(45)123451000002011113022224033335101236110327123018132109202311021320112201312231024730312143120315321301633021123451A1B1C1D102A1B2C2D213A1B3C3224A1B43335A2B1C2236A2B2C1327A2B33D118A2B4C3D209A3B1C33110A3B232011A3B3C1D2312A3B4C2D12473B13D22143B2C3D13153B3C230163B4C121