软件测试 - 测试原则与类型:
![](https://img-blog.csdnimg.cn/20210321115211411.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3hjOTE3NTYzMjY0,size_16,color_FFFFFF,t_70)
测试的原则:
回归测试指的是修改了旧代码后,重新进行测试以确认没有引入新的错误或导致其他代码产生错误。
尚未发现的错误数量与该程序已发现的错误数成正比指的是:假设一个模块有50个错误,另一个模块有100个错误,那么那个有100个错误的模块尚未发现的错误要比之前的模块更多。
测试的类型:
动态测试:有利用到计算机
静态测试:没有利用到计算机,人工检查
桌前检查:程序员写完程序后,自己浏览一遍看有没有问题
代码走查:代码人工的执行一遍
代码审核:程序员之间交叉检查代码
软件测试 - 测试用例设计:
![](https://img-blog.csdnimg.cn/20210321115332614.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3hjOTE3NTYzMjY0,size_16,color_FFFFFF,t_70)
黑盒测试:只知道输入和输出,不知道内部结构
等价类划分:将程序的输入值分为几种不同的类型。例如:100分算满分,90 ~ 100为优,80 ~ 90为良,60 ~ 80为中,60分以下为差。设计测试用例时使用95,82,71,52作为输入参数,这样每一个不同类型的分数就都覆盖到了。
边界值分析:由于边界比中间值更容易发现问题,所以往往边界值分析可以用来补充等价类划分。例如还是上面那个分数的例子,设计测试用例时使用101,100,90,89,80,79,60,59,0,-1作为输入参数。
错误推测:基于经验和直觉推测程序中可能存在的问题
因果图:通过程序规格说明书的自然语言中找出输入和输出,可以又因推出果,也可以由果推出因。
白盒测试:可以看到代码的结构,根据程序的内部结构和逻辑来设计测试用例,对程序的路径和过程进行测试。
逻辑覆盖测试:包含语句覆盖,判定覆盖,条件覆盖,路径覆盖等,它们的覆盖程序从低到高。
语句覆盖:测试程序的每一条语句都至少执行一次,是很弱的逻辑覆盖。
判定覆盖:测试程序的每一个判断表达式都至少执行一次 true 或 false的值。例如:
if((age >= 0 && age <= 150) && (name.length > 0 && name.length < 50))
{
// code statement
}
else
{
// code statement
}
测试用例:
1. 输入age = -1, name = "abc" 就能执行else中的语句
2. 输入age = 0,name = ”abc" 就能执行if中的语句了
条件覆盖:测试程序的每一个判断表达式中的每一个条件都至少执行一次 true 或 false的值。还是使用上面的例子:
测试用例:
1. 输入age = -1 ,name = "" 执行else中的语句
2. 输入age = -1, name = "abc" 执行else中的语句
3. 输入age = 0,name = “” 执行else中的语句
4. 输入age = 0,name = “abc” 执行if中的语句
路径覆盖:测试程序所有可能的路径都被覆盖到了,这种情况比较理想化,个人认为很难实现,而且成本应该也蛮高的吧。
软件测试 - 测试阶段:
![](https://img-blog.csdnimg.cn/20210321115815389.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3hjOTE3NTYzMjY0,size_16,color_FFFFFF,t_70)
单元测试:也称为模块测试,测试各个方法的输入和输出参数是否正确。
集成测试:按照需求说明将模块的功能组合起来测试。
系统测试:侧重与性能和压力,可用性方面的测试。
确认测试:在集成测试完毕,并修复已发现的问题后。以软件需求说明书中的内容为基础并和用户确认软件是否满足要求。