二、论述题以下是某软件项目规格说明,请按要求回答问题。
某一软件项目的规格说明:对于处于提交审批状态的单据,数据完整率达到80%以上或已经过业务员确认,则进行处理。1. 请根据规格说明,画出对应的因果图。
首先根据规格说明,列出所有可能的输入和输出,得到如下结果:
●输入:处于提交状态、数据完整率达到80%以上、已经过业务员确认。
●输出:处理或不处理。
●找出所有输入与输出的关系,通过分析,得到以下的对应关系。
●如果单据处于提交审批状态且数据完整率达到80%以上,则处理。
●如果单据不处于提交审批状态,则不处理。
●如果单据处于提交审批状态,数据完整率未达到80%以上,但已经过业务员确认,则处理。
下面列出所有的原因和结果,并进行编号,根据上面分析的关系,画出因果图,如下图所示。
原因:1:处于提交状态。
2:数据完整率未达到80%以上。
3:已经过业务员确认。
结果:21:处理。
22:不处理。
[解析] 首先根据程序的规格说明,根据所有可能的输入和输出条件,找出所有的原因和结果以及二者之间的关系,画出因果图。然后基于因果图的方法设计测试用例。
2. 采用基于因果图的方法为该软件项目设计测试用例。
首先将上面的因果图转换成判定表,如下表所示。
8 |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
条件 |
1 |
Y |
Y |
Y |
Y |
N |
N |
N |
N |
2 |
Y |
Y |
N |
N |
Y |
Y |
N |
N |
3 |
Y |
N |
Y |
N |
Y |
N |
Y |
N |
中间结果 |
11 |
Y |
Y |
Y |
N |
Y |
Y |
Y |
N |
动作 |
21 |
Y |
Y |
Y |
N |
N |
N |
N |
N |
22 |
N |
N |
N |
Y |
Y |
Y |
Y |
Y |
然后将判定表中的8列转换成测试用例即可。
3. 以下是某程序说明,请按要求回答问题。
程序说明:假设有一个把数字串转换为整数的函数。其中数字串要求长度为1~6个数字构成,机器字长为16位。
分析程序中出现的边界情况,采用边界值法为该程序设计测试用例。
分析该程序的说明和功能,显然可以划分4组测试等价类:有效输入等价类、无效输入等价类、合法输出等价类和非法输出等价类。在考虑该程序的合法输出和非法输出时需要考虑计算机的字长,这时要进行边界值法设计测试用例,以补充等价类法设计的测试用例。具体采用边界值法设计的测试用例如下:
(1)使程序输入刚好等于最小的负整数:
输入:'-32768'
输出:-32768
(2)使程序输入刚好等于最大的正整数:
输入:'32767'
输出:32767
(3)使程序输入刚好小于最小的负整数:
输入:'-32769'
输出:错误
(4)使程序输入刚好大于最大的正整数:
输入:'32768'
输出:错误
[解析] 首先根据程序的规格说明,考虑所有可能的边界情况,然后根据边界值方法设计测试用例。
简单谈一下你对穷举测试的理解,并按要求回答问题。4. 穷举测试的方法对于所有项目程序都是可行的吗?
不是。穷举测试的方法并不是对所有程序都可以实现。
[解析] 在黑盒测试中,测试数据完全来源于软件的规格说明,即不需要了解程序的内部结构。若要用这种方法来发现程序中的所有错误,可行的途径就是穷举测试。但在实际情况下,该方法仅对一些小型简单的程序适用,而对于一些大型或稍微复杂的程序都是不可能实现的。
5. 若是针对小型的程序,穷举测试是可行的吗?若是,说明此时采用穷举测试能否保证程序是100%正确呢?
对小程序进行穷举测试,也不见得能保证程序百分之百正确。所谓穷举测试是拿所有可能的输入数据来作为测试用例(黑盒测试),或覆盖程序中所有可能的路径(白盒测试)。对于小程序来说,实际上并不能真正做到穷举测试。