软件可靠性测试落地实践
如果无法正常显示,请先停止浏览器的去广告插件。
1. 软件可靠性测试的落地实践
分享人:马珍珍
2. 个人简介
• 姓名:马珍珍
• 所在组织:360技术中台
• 专业领域:安全软件测试
3. 软件可靠性测试落地实践
01
• 含义及重要性
02
• 测试实践
03
• 持续改进
4. 可靠性测试含义及重要性
什么是软件的可靠性?
软件可靠性是指软件产品在规定的条件下和规定的时间内完成规定功能的能力。
规定的条件
规定的时间
规定的功能
5. 可靠性测试含义及重要性
软件可靠性的子属性
01 成熟性
产品为避免因软件故障而导致失效的能力
02 可用性
系统、产品或组件在需要使用时能够进行操作和访问的程度
03 容错性
产品在发生故障或者违反指定接口规范的情况下,维持规定的性能级别的能力
04 易恢复性
产品在失效的情况下,重建规定的性能级别并恢复受直接影响的数据的能力
05 依从性
产品遵循与可靠性相关的标准、约定或法规的能力
6. 可靠性测试含义及重要性
对四个子属性的理解
成熟性
例:对浏览器来说,成熟性可以理解为产品失
效的概率,比如持续运行一段时间后出现页面
无法加载或显示错误等问题的概率。
容错性
例:对浏览器来说,容错性可理解为产品应对
用户“错误操作”的能力,例如输入无效网址或
点击损坏链接时,应给出合适提示,而非无响
应或崩溃。
易恢复性 可用性
例:对浏览器来说,易恢复性可理解为浏览器 例:可用性代表了成熟性、容错性和易恢复性
在出现意外情况(比如无响应、崩溃)后,能 的组合,统计浏览器在一段时间内出现故障的
否自动或半自动地回到之前的状态,例如恢复 时间和可以正常使用的时间比例,得到的就是
会话、标签页和数据等。 浏览器的可用性。
7. 可靠性测试含义及重要性
为什么我们关心软件的可靠性?
业务连续性
用户体验
社会影响
经济效益
安全性和合规性
8. 可靠性测试含义及重要性
软件可靠性测试的含义
软件可靠性测试是指在预期的使用环境中,为检出软件缺陷,验证和评估是否达到用户对软件可靠性需求而组织实施的一种软件
测试。
一般在系统测试阶段和交付验收阶段进行。
9. 可靠性测试含义及重要性
软件可靠性测试的原则
尽早开始测试
测试要全面
模拟真实环境
测试数据记录要真实、准确
数据分析与改进
10. 可靠性测试实践
11. 可靠性测试实践
可靠性测试实践流程
软件可靠性测试实践流程
12. 可靠性测试实践
实践中的关键点
实践中的关键点:需求分析--收集与产品相关的可靠性需求
了解产品的使用场景和用户需求 参考类似产品的可靠性数据 考虑潜在的可靠性问题
通过收集和分析产品的使用场景和用 通过收集和分析已有类似产品的可靠 除了产品的正常使用条件外,还需要
户需求,可以了解产品在各种情况下 性数据,可以了解产品的一般可靠性 考虑潜在的可靠性问题,例如产品在
的使用条件、负载要求、操作频率 水平,为新产品的可靠性测试提供参 安装和维护过程中的潜在问题和影
等,为可靠性测试提供依据。 考和比较基础 。 响,以便在测试中加以考虑和评估。
13. 可靠性测试实践
实践中的关键点
实践中的关键点:
实践中的关键点:需求分析—明确软件失效等级
失效等级
描述
1:关键性失效 整个系统中止或严重毁坏数据库
2:严重性失效 重要功能无法运行,并且没有替代的运行方式
3:普通失效
绝大部分功能仍然可用,次要功能受到限制或要采用替代方式
14. 可靠性测试实践
实践中的关键点
实践中的关键点:
实践中的关键点:需求分析—明确度量指标
属性
成熟性
名称
描述
指标
故障修复率 度量检测到的与可靠性相关的故障修复比例 故障修复率≥于90%
平均失效间隔时间(MTBF) 度量软件在正常运行期间的故障频率 平均失效间隔时间大于7*24小时
周期失效率 度量在特定时间段内软件失效的概率 周期失效率小于1%
测试覆盖率 度量实际执行的软件功能、运行场景与预期的软件功能、运行场 测试覆盖率不低于95%
景的比例
系统可用性 度量软件可用状态的时间 系统可用性不低于99.999%
平均宕机时间 度量软件失效时的不可用时间 平均宕机时间不高于30min
避免失效率 度量软件能控制多少种故障模式以避免关键或严重的失效 避免失效率不低于98%
组件的冗余度 度量为避免系统失效而安装的冗余组件比例 组件冗余度不低于10%
平均故障通告时间 度量系统报告故障的发生的快慢程度 平均故障通告时间不大于5min
平均恢复时间 度量软件从失效中恢复需要的时间 平均恢复时间不大于5min
数据备份完整性 度量定期备份数据项的比例 数据备份完整性不低于99%
可用性
容错性
易恢复性
15. 可靠性测试实践
实践中的关键点
实践中的关键点:
实践中的关键点:构造测试环境、执行用例、收集数据
构造测试环境 运行测试 收集数据
被测软件的测试环境应和预期的 运行测试时,需要按测试计划和 收集的数据包括软件的输入数
实际使用环境尽可能一致,包括 顺序对每一个测试用例进行测 据、输出数据、软件运行时间数
硬件配置、软件配置、网络环境 试,判断输出是否符合预期结 据、可靠性失效数据及故障数据
等,以保证测试结果的真实性。 果。 等。
执行测试用例时可以考虑进行“强 为获得更多可靠性数据,可以使
化输入”,即输入比正常输入更恶 用多台计算机同时运行软件,以
劣的输入。 增加累计运行时间。
测试时应记录测试结果、运行时
间和判断结果。如果软件失效,
还应该记录失效现象和时间,以
备以后核对。
16. 可靠性测试实践
实践中的关键点
实践中的关键点:
实践中的关键点:数据分析
失效分析
数据分析
可靠性分析
失效分析是根据运行结果判断软件是 可靠性分析主要是根据失效数据,估
否失效,以及失效的后果,原因等; 计软件的可靠性水平,预计可能达到
的水平,评价产品是否已经达到要求
的可靠性水平。为管理决策提供依
据。
17. 可靠性测试实践
可靠性测试方法:
可靠性测试方法
异常值输入法
稳定性测试法
故障植入法
恢复测试法
压力测试法
18. 可靠性测试实践
测试工具使用
使用的测试工具:
使用的测试工具:
自动化测试工具 用来自动执行测试用例(如Pytest、JUnit, TestNG等)
负载测试工具 用于模拟高压力环境,检测软件在极限条件下的表现(如Apache JMeter、LoadRunner、Stress等)
监控工具 用于实时监测系统的运行状态,记录系统的可用时间和宕机时间(如Prometheus、Zabbix等)
故障注入工具 模拟各种故障,帮助评估系统的容错能力(如Chaos Monkey、Gremlin等)
备份和恢复软件 可以测试数据的恢复流程和备份完整性(如Veeam Backup & Replication,RMAN等)
缺陷跟踪工具 用来记录,跟踪问题,以及管理测试活动(Jira, Bugzilla,禅道等)
19. 可靠性测试实践
案例分享—项目背景
软件功能:采用多种防御措施,如实时监控、恶意软件查杀、隐私保护、主动防御、
入侵检测系统、漏洞扫描等来保护计算机的安全,防范各类网络攻击。
采用C/S架构
可部署在Windows和Linux系统
20. 可靠性测试实践
案例分享—需求分析
安装、运行、卸载可靠
性测试
功能可靠性测试
性能可靠性测试
21. 可靠性测试实践
案例分享—通用测试用例
22. 可靠性测试实践
案例分享—通用测试用例
23. 可靠性测试实践
案例分享—可靠性测试管理平台搭建
24. 可靠性测试实践
案例分享—可靠性测试报告
25. 可靠性测试实践
实践中遇到的问题及解决方案:
资源和时间限制,成熟性测试运行需要大量的时间和资源。
解决方案:尽量采用自动化测试工具,以节省人力,提高测试效率。
无法覆盖所有的故障情况,实际环境中可能出现的故障和错误场景千变万化,无法测试所有的故障场景
解决方案:需要甄别并聚焦在最可能出现的、影响最大的故障类型上进行测试。
重现故障的难度:由于环境和状态的变化,一些故障可能无法稳定地重现
解决方案:采用尽可能全面记录状态数据的方式,以降低重现故障的难度。
26. 可靠性测试实践
实践中遇到的问题及解决方案:
难以模拟实际硬件故障:模拟硬件故障通常涉及到设备的物理损害,可能会导致设备不可再用。
解决方案:使用虚拟化技术模拟硬件故障,或者使用较老的、即将淘汰的硬件设备进行物理级别的故障测试。
数据和系统恢复的可靠性验证:验证备份数据完整性和系统恢复状态是否符合预期有些困难。
解决方案:通过采用更严格的数据备份措施和高质量的备份工具来实现。设置明确的恢复目标,在设计初期就规划好在
系统恢复后应该达到的状态。
27. 软件可靠性测试持续改进
28. 软件可靠性测试持续改进
加强可靠性管理,确保可靠性贯穿于各个阶段
AI在测试中的应用
更多仿真环境的搭建
引入混沌工程
29. THANK YOU