您的位置:首页 > 编程语言

编程之美—《三角形测试用例》

2014-04-30 11:01 134 查看
设计测试用例是软件测试中相当关键的一部分,因此在面试过程中,经常会被问到怎么设计测试用例,根据一个功能点,设计多少种测试用例等类似的问题。在这里还是就一个古老的话题,谈谈如何设计测试用例。

例子:输入三角形的三条边长,判断是否能构成一个三角形(不考虑退化三角形,即面积为零的三角形),是什么样的三角形(直角、锐角、钝角、等边、等腰)。

函数声明为:byte GetTriangleType(int ,int, int)。

(1) 如何用一个byte来表示各种输出情况?

(2) 如果你是一名测试工程师,应该如何写测试用例来完成功能测试呢?

问题(1)解法:

步骤一:首先要考虑三角形的状态,简单分为三角形和非三角形两种,其中三角形又包括直角,锐角,钝角,等边,等腰。

步骤二:题目要求用一个byte来表示各种输出结果,一个byte为8个bit,能够表示0~255,即一个byte可以表示256种状态,自然我们可以穷举所有可能的三角形状态,然后对其一一编号,如将非三角形编号为0,直角三角形编号为1、锐角三角形为2,依次类推。但考虑,一个直角三角形同时也可能是等腰三角形,一个等边三角形同时也是锐角三角形,那么在上述的编码的基础上,要想表达更精确,需要继续扩展编码。但这样的编码没有规律可循,容易造成混淆。

步骤三:为了克服穷举无规律可循的问题,可以考虑按标志位编码,将1个byte从右到左(或者从左到右)依次按位赋予含义,如下表所示:



以上表中,第0位表示等腰,第1位表示等边,等等。各位取1表示该状态为真,其中第7位表示该状态是否为三角形,是则为1,否则为0。那么便可很方便的表示几种状态同时存在,如10010001则表示这是一个直角等腰三角形。剩余的第6位和第5位可以留作错误编码,比如用于表示两边之和小于第三边等。

问题(2)解法:

作为一名测试者,要测试一个程序,具体的工作就是要分析程序可能出现的漏洞,并编制测试用例来有针对性的进行测试,观察程序是否正常工作。通常测试可以分为以下三个方面:程序在正常输入下的功能测试,测试程序在非法输入时的表现,测试程序对边界值附近输入的处理。

设计三角形的测试用例,如下:

预期输入:a,b,c (三个数值,代表三条边的长度)

预期输出:采用问题1中的编码输出,即非三角形或三角形的具体状态

1. 程序在正常输入下的功能测试,如下表所示:



注:须要交换三边长度顺序以确保对每条边的判断,如对用例1还须要测试(1,2,4)及(2,4,1)等5组用例(后面的用例应做相同的操作)

2. 测试程序在非法输入时的表现,如下表所示:



3. 测试程序对边界值附近输入的处理(假设1<=a,b,c<=100),如下表所示:



注:中间值通常能被正确处理,而边界值则往往因为判断语句使用<、>、<=、>= 而引起错误

以上表格中尚未包括换位枚举。读者可以扩充滴。。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: