一、软件测试与测试优先的编程
▪ 测试驱动编程。在编写代码之前编写测试。
▪ 划分和界限以系统地选择测试用例。
▪ 白盒测试和语句覆盖来完善测试套件。
▪ 尽可能独立地对每个模块进行单元测试。
▪ 自动化回归测试以防止错误再次出现。
▪ 预防错误。测试的目的是发现代码中的错误,而测试驱动编程则是尽早地在引入错误后立即发现它们。
二、面向正确性与健壮性的软件构造
健壮性(Robustness)和正确性(Correctness)是软件质量的两个关键方面:
正确性:
1.定义:正确性指的是软件在特定条件下是否按预期行为,并产生正确的结果。它意味着软件准确地满足其功能需求。
2.衡量方法:正确性可以通过多种方法来衡量:
3.测试:进行功能测试(单元测试、集成测试、系统测试)来验证软件是否按照其指定的需求执行。
4.形式验证:使用形式化方法数学上证明软件符合其规范,不表现出意外的行为。
5.代码审查:审查代码以查找逻辑错误、潜在边界情况以及是否符合需求。
6.质量指标:例如缺陷密度、缺陷到达率和发现的错误严重程度等间接衡量正确性。
健壮性:
1.定义:健壮性指的是软件在面对意外输入或极限条件(如无效输入、高负载或外部系统故障)时,能够维持稳定的性能并保持运行状态的能力。
2.衡量方法:健壮性可以通过以下几种方法来衡量:
3.压力测试:将软件置于极端条件下(如高负载、大输入、同时故障场景),观察其如何处理意外情况。
4.故障测试:故意引入故障(如崩溃服务器、断开网络连接),验证软件是否能够在不崩溃或损坏数据的情况下优雅地处理这些问题。
5.故障注入:向系统引入故障(如网络延迟、损坏数据),评估其处理和从这些问题中恢复的能力。
6.韧性指标:例如平均故障间隔时间(MTBF)、平均恢复时间(MTTR)和可用性百分比,可以提供关于软件系统健壮性的洞见。
正确性关注软件是否准确地满足其预期需求,而健壮性则评估软件在各种操作场景下的稳定性和性能。这两个方面对于确保软件系统在不同运行情况下的可靠性和性能至关重要。