试题一
阅读下列C程序,回答下面问题。
【C程序】
int tb base64_decode(char* ib, int in, char* ob, int on) { //1
extern int tb _arrayn(char [] );
static char table [] ={
0x3e, 0xff, 0xff, 0xff, 0x3f, 0x34, 0x35, 0x36
, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0xff
, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x01
, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09
, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11……此处隐藏34893个字…… 同时可满足第一个判断的假分支,可减少1个测试用例。故问题2最少需要3个测试用例来满足分支覆盖要求。
按照上述MC/DC覆盖要求,即每个判断中的每个条件必须能够独立影响一个判断的输出。第一个判断有两个组合条件(设为C1,C2),最多有4种组合情况,即C1真C2真、C1真C2假、C1假C2真、C1假C2假。其中C1真C2真、C1真C2假、C1假C2真改变其中任一条件都会改变判断的结果,但C1假C2假改变任一条件后判断结果仍为假,即C1假C2假条件中的C1或C2的真或假均不能独立影响整个判断为假的输出。故最少需要3个测试用例来满足MC/DC覆盖。
15、(1)20%或1/5或等效解答
(2)91.7%
[考点] 本题主要考查软件测试的一些基本概念和方法在测试实践中的应用。
[解析] 本问题第一个问题是嵌入式软件工程中的一个要求,为了提高软件后续的可维护性,要求嵌入式软件的注释率一般不小于代码行数的20%(或1/5,或等效数字),这样要求的目的是在后期维护软件时,能更快地理解软件语句的含义,提高软件适应性更改的效率。
本问题第二个问题是一个简单的测试概念,缺陷探测率(DDP)=测试发现的软件问题/软件总的发现问题。对本题而言:
缺陷探测率(DDP)=111(11+1)=91.7%。