软件测试

19-软件测试

软件测试目标

向开发者和用户展示软件满足了需求,是一个合格的产品。(有效性测试)

找出软件中的缺陷和不足,测试的目标是发现尽可能多的缺陷而不是所有缺陷。。(缺陷测试)

验证与确认

验证:检测开发者是否用正确的技术开发系统。如“编程错误”,“设计思路错误”,“文档书写错误”。

确认:检查开发者是否建立了正确的系统,确保最终产品符合规格。如“需求文档是否反映需求”,“设计能否跟踪到需求”,“测试是否覆盖需求”。

桩程序:被测试部件的交互环境,扮演被调用的其他部件,用于自顶向下集成,下层的模块使用伪装的具有相同接口的桩测试上层。

驱动程序:被测试部件的执行环境,驱动和监控测试用例的执行过程并判定结果,用于自底向上集成,上层的模块使用伪装的相同接口的驱动测试下层。

缺陷、错误、失败的关系:

缺陷(defect/fault 故障):系统代码中不正确的地方。

错误(error):系统执行到缺陷代码,使得执行结果不符合预期且无法预测,表现出的不稳定状态。

失败(failure):错误的发生使得软件的功能失效。

缺陷如果不检测会长期存在,直到触发了特定条件被激活,就会出现错误,显示在终端输出上,最终导致系统功能失效的失败现象。

测试的层次划分

单元测试:对程序单元进行正确性检验,更关注代码的内部具体逻辑,常用的方法为白盒测试。

集成测试:对系统接口进行正确性检验,更关注软件组件之间的交互,集成依赖桩和驱动,集成策略有大爆炸和增量集成(自顶向下、自底向上,持续集成)

系统测试: 更关注整个系统的行为,评价系统功能需求和非功能需求以及系统与外界环境的交互。更关注不符合需求的缺陷和需求自身的内在缺陷。

测试目标:

功能测试:

确认观察到的被测试软件的行为是否满足软件需求规格说明。

α与β测试

在软件发布前,让小规模且有代表性的潜在用户试用。

α测试在开发机构处进行,开发人员和测试人员能记录使用中出现的问题。

β测试在用户处进行,开发人员和测试人员都不在场。

回归测试:变更系统后进行,重新执行测试过的系统用例子集,确保变更没有造成未预期的副作用。

验收测试:按照客户的需求检查系统。

性能测试:针对性能需求进行验证。

可靠性测试:验证和评价系统可靠性的测试。

压力测试:以最大负载或超过最大负载运行软件,验证软件的负载能力。

安全测试:验证系统内的安全保护机制不受非法入侵的能力。

测试技术

随机测试

根据软件工程师的直觉和经验,建立测试用例,也是实践中使用最为广泛的测试技术。

黑盒测试(基于规格的技术)

把测试对象看作一个黑盒子,完全基于输入和输出来判断测试对象的正确性。

测试方法:

等价类划分: 将输入域划分为若干子集,从每个子集中选取少数具有代表性的数据作为测试用例。

边界值分析:对等价类划分的补充,针对边界情况设计测试用例。

决策表:为复杂的逻辑判断设计测试用例。

状态转换:为输入输出与状态相关联的复杂测试对象设计测试用例

优点 :

不需要关注软件内部结构,测试效率高,基于软件开发文档,可以检验需求规格。

缺点:

代码覆盖率低,发现缺陷数量较少。

白盒测试 (基于代码的技术)

把测试对象看作是透明的,不关心测试对象的规格,针对测试对象的内部程序结构来设计测试用例。

测试方法:

语句覆盖:保证每一行代码都至少执行一次。

条件覆盖:保证每个判断的每个结果都至少满足一次。

路径覆盖:保证每条独立的执行路径都至少执行一次。

优点:

代码覆盖率高,发现缺陷数量较多。

缺点:

测试开销大,基于代码的测试,不能检验需求规格。

黑白盒测试的异同和优缺点:

定义,具体方法,优缺点。

测试活动

测试计划,测试设计,测试执行,测试评价。


软件测试
http://example.com/2022/06/15/计算机基础/软件工程/19-软件测试/
作者
PALE13
发布于
2022年6月15日
许可协议