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