软考-软件测试
一.测试概述
经典定义
在规定的条件下对程序进行操作,已发现错误,对软件质量进行评估
对象
程序,文档,数据
目的
发现软件的错误,验证软件是否满足用户需求,并通过分析软件错误产生原因,以帮助开发工作所采用的软件过程缺陷,以便进行软件过程评估。
嵌入式软件的测试工作与台式机上的应用软件的测试工作有许多相似之处,但也有区别。
嵌入式系统的硬件一般采用专门的测试仪器进行测试
由于嵌入式软件自身的特点,测试过程及其fuz
与PC软件相比,测试嵌入式软件,除了逻辑上的正确性之外,还要看重系统的性能和健壮性。
嵌入式软件的一个重要特点就是实时性
嵌入式系统开发是一个软硬件互相协调,相互反馈和相互测试的过程。
二.测试方法
动态测试
黑盒测试,白盒测试,灰盒测试
静态测试
桌前检查,代码审查,代码走查
三.测试用例设计

语句覆盖(SC)
首先设计若干个测试用例,使程序中的每个可执行语句至少执行一次。这里所谓“若干个”,自然是越少越好
判定覆盖(DC)
设计若干测试用例,使得程序中每个判断的取真分支和取假分支至少经历一次,即判断的真假值均曾被满足。
条件覆盖(CC)
设计若干测试用例,使每个判断中每个条件的可能取值至少满足一次。
判定-条件覆盖(C/DC)
设计足够的测试用例,使得判断中每个条件的所有可能至少出现一次,并且每个判断本身的判定结果也至少出现一次。
条件组合覆盖(MCC)
设计足够的测试用例,使得判断中每个条件的所有可能至少出现一次,并且每个判断本身的判定结果也至少出现一次。它与条件覆盖的差别是它不是简单的要求每个条件都出现“真”与“假”两种结果,而是让这些结果的所有可能组合都出现一次。
修正的条件判断覆盖(MC/DC)
路径覆盖
设计足够的测试用例,要求覆盖程序中所有可能的路径。
例题
int logicExample(int x,in t y)
{
int magic=0;
if(x>0&&y>0)
{
magic = x+y+10; //语句1
}
else
{
magic = x+y-10; //语句2
}
if(magic<0)
{
magic = 0; //语句块3
}
return magic; //语句块4
}

语句覆盖(SC)
设计若干个测试用例,使程序中的每个可执行语句至少执行一 次。在本例中,可执行语句是指语句块1到语句块4中的语句。

判定覆盖(DC)
设计若干测试用例,使得程序中每个判断的真和假至少经历一次,即判断的真假值均曾被满足。

条件覆盖(CC)
设计足够的测试用例,使得被测试程序中的每个逻辑条件的可能值至少被满足一次(条件覆盖没达到判定覆盖)

判定-条件覆盖(C/DC)
设计足够的测试用例,使得被测程序中每个判断本身的判断结果至少满足一次,同时,每个逻辑条件的可能值也至少满足一次,即同时满足100%判定覆盖和100%条件覆盖标准。

条件组合覆盖(MCC)
设计足够的测试用例,使得被测试程序中每个判断的所有可能条件取值的组合至少被满足一次。
条件组合只针对同一个判断语句内存在多个条件的情况,让这些条件进行笛卡尔乘积组合。
不同的判断语句内的条件取值之间无需组合
对于单个条件的判断语句,只需要满足自己的所有取值即可。
路径覆盖
设计足够的测试用例,要求覆盖程序中所有可能的路径。

修正的条件判断覆盖(MC/DC)
要求在一个程序中每一种输出输入至少得出现一次,在程序中每一个条件必须产生所有可能的输出结果至少一次,并且每一个判定中的每一个条件必须能够独立影响一个判断输出,即在其他条件不变的前提条件下仅改变这个条件的值,而使判定结果改变。
MC/DC首先要求实现条件覆盖,判定覆盖,在此基础上,对于每一个条件c,要求存在符合以下条件的两次计算:
1) 条件C所在判定内的所有条件,除条件C外,其他条件的取值完全相同。
2)条件C的取值完全相反
3)判定的计算结果相反
代码示例:以下程序要达到100%MC/DC覆盖所需的最少测试用例数目?
int func( bool L A,bool b,bool c )
{
if(A&&(B||C))
{
return 1;
}
return 0;
}
解题思路
先进行条件组合
再进行两次计算
1)条件C所在的判定内所有条件,除条件C外,其他条件的取值完全相同
2)条件C的取值完全相反
3)判定的计算结果相反

最少用例数:
用例2 用例5用例6用例7
用例3 用例5用例6用例7


四.测试阶段

白盒测试:白盒测试 集成测试方面、
灰盒测试:系统测试
黑盒测试:确认测试
产品测试
Alpha测试:开发环境测试
Beta测试:用户使用环境测试
