|
|
|
|
移动端

2.4 边界值分析(2)

《软件测试基础教程》第2章基于需求的测试生成,本章主要介绍从非形式化或形式化定义的软件需求生成测试集的技术。这些技术,有的可以自动地执行,而大部分则需测试人员付出艰辛的劳动,特别是在测试大型软件时。本章所介绍的大部分测试技术属于黑盒测试,因为生成测试集时不需参考被测软件的源代码。本节为边界值分析。

作者:王峰/郭长国/陈振华 等译来源:机械工业出版社|2011-09-17 21:23

技术沙龙 | 邀您于8月25日与国美/AWS/转转三位专家共同探讨小程序电商实战

2.4 边界值分析(2)

至此,由边界值分析所得到的fP的测试用例集包括t2,t3,t4,t5,t7,t8,t9,t10。有理由认为,那些同时包含两个输入变量边界值的测试用例有可能失效,因此,必须替换测试用例t2、t6,以防止code和qty的边界值出现在同一个测试用例当中(参见练习2.17)。

例2.12考虑方法textSearch,其功能为在文本文件txt中查询非空字符串s。在文件txt中,字符位置从0开始,0代表txt中的第一个字符,1代表第二个字符,以此类推。txt和s均作为textSearch的输入参数。方法textSearch返回一个整数值x:如果x≥0,则指针p指向字符串s在文件txt中的起始位置;如果x<0,则表示在文件txt中没有查询到字符串s。

采用边界值分析方法,首先对各输入变量构建等价类。在本例中,两个输入变量都是字符串,且对字符串的长度和内容没有限制。依据表2-1、表2-2中的指导原则,得到s和txt的4个等价类如下:

s的等价类E1:空串,E2:非空串。

txt的等价类 E3:空串,E4:非空串。

对于字符串变量,可以依据其长度和语义信息定义相应的边界。在本例中,s和txt的长度的最小值为0,由此,可以分别得到二者的下边界值,但无法确定二者的上边界值,因此,只能获得这两个变量的一个边界。可以看出,E1、E3包含的正是这个边界。这样,基于输入变量等价类划分方法得到的测试用例,与基于边界值分析方法得到的测试用例是相同的。

现在对textSearch的输出空间进行等价类划分。我们得到x的两个等价类如下:

x的等价类E5:x<0, E6:x≥0。

要想获得属于E5的输出结果,则txt中一定不存在输入串s。同样,要获得属于E6的输出结果,则txt中一定包含输入串s。E5和E6都是开放的区间,基于E5、E6,我们只能得到一个边界x=0。使textSearch正确输出x=0的测试输入,必须满足以下两个条件:

(i) s存在于txt中;

(ii) s位于txt的起始位置。基于这两个限制条件,利用边界值分析将生成下面两个测试输入:

  1. s="Laughter" and  
  2. txt="Laughter is good for the heart." 

基于这6个等价类和2个边界值,得到textSearch的包含4个测试输入的测试集T:

  1. T={t1:( s=ε,txt="Laughter is good for the heart." ),  
  2. t2:( s="Laughter"txt=ε ),  
  3. t3:( s="good for"txt="Laughter is good for the heart." ),  
  4. t4:( s="Laughter"txt="Laughter is good for the heart." ) } 

可以很容易地验证,t1和t2覆盖了等价类E1,E2,E3,E4和E5,t3覆盖了E6。注意,这6个等价类并未要求我们一定?鷗3。但是,基于输出等价类E5、E6的边界值分析,要求设计一个s位于txt起始位置的测试用例。因此,根据边界值分析的要求,t4是必须要的。

受t4启发,增加另一个s位于txt结尾处的测试用例t5:

  1. t5:( s="heart.",  
  2. txt="Laughter is good for the heart." ) 

其实,上面的6个等价类以及它们的边界,没有哪一个直接要求产生测试用例t5的。尽管如此,测试用例t4和t5可以验证当s位于txt的前后边界处时textSearch能否正确运行。

在使用s和txt确定了边界处的测试用例后,现在来讨论那些位于边界附近的测试输入。下面列出了4种这样的情况:

s起始于txt第二个字符。期望输出为:p=1。

s结束于txt倒数最后二个字符。期望输出为:p=k,k为s在txt中的起始位置。

s的第二个字符位于txt的起始位置。期望输出为:p=-1。

s的倒数第二个字符位于txt的结束位置。期望输出为:p=-1。

增加下面的测试用例后,就能满足上面所列的4种情况:

  1. t6:( s="aughter",  
  2. txt="Laughter is good for the heart.")  
  3. t7:( s="heart",  
  4. txt="Laughter is good for the heart.")  
  5. t8:( s="gLaughter",  
  6. txt="Laughter is good for the heart.")  
  7. t9:( s="heart.d",  
  8. txt="Laughter is good for the heart."

至此,我们获得了9个测试用例,其中有6个是由边界值分析产生的。边界值、边界附近值如图2-8所示,边界值由标记①、②表示,边界附近值由③、④、⑤、⑥表示。

 
图2-8 c0至c7是txt中最左边从位置0开始的8个字符。s0s1是
输入的字符串s。图中的标记①、②表示s位于txt两个边界点时的
位置,而标记③、④、⑤、⑥分别表示s位于txt的4个
边界附近点时的位置
【责任编辑:云霞 TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

嬴在用户:Web人物角色创建和应用实践指南

您如何保证您的网站确实给予用户他们所需要的,并对您产生商业成果?您需要了解谁是您的用户,您的用户的目标、行为和观点是什么,还要把他...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊