软件测试 -- 进阶 6 软件缺陷

Posted Rolei_zl

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了软件测试 -- 进阶 6 软件缺陷相关的知识,希望对你有一定的参考价值。

    上工治未病之病,中工治欲病之病,下工治已病之病。-- 孙思邈 .《千金方药方》
    释译:未病之病:未病,未发之病(及早干预,防止病发);欲病之病:小病,病初起之时(症状不明显,病人无痛苦时);已病之病:重病,病情严重时。

1. 软件缺陷

  • 从产品内部看,缺陷是软件产品开发或维护过程中存在的错误、毛病等各种问题;从产品外部看,缺陷是系统所需要实现的某种功能的失效或违背。  -- IEEE729-1983 
  • 计算机软件或程序中存在的某种破坏正常运行能力的问题、错误,或者隐藏的功能缺陷。缺陷的存在会导致软件产品在某种程度上不能满足用户的需要。
  • 软件产品中所存在的问题,最终表现为用户所需要的功能没有完全实现,不能满足或不能全部满足用户的需求。

2. 常用述语

  • 错误,Error。软件生命周期内不希望或不可接受的人为痕迹(人为过程、错误,外部行为),错误导致缺陷的产生。(异常、矛盾)
  • 缺陷,Defect / Bug。(缺点、偏差 variance、问题 problem) -- 那张有名的BUG图,Harvard Mark II计算机里的一只飞蛾(来源:网络)

  • 故障,Fault。软件运行过程中出现的不希望或不可接受的运行结果(内部行为)。
  • 失效,Failure。软件运行过程中出现的不希望或不可接受的系统外部表现(外部行为)。(失败)
  • 事故,Incident。软件运行失效后出现的不希望或不可接受的损失。(外部行为)

       错误 -- 导致 --> 缺陷 -- 激活 --> 故障 -- 未处理 --> 失效

3. 发现软件缺陷

  • 发现人

    - 用户、客户;需求、设计、开发、测试、运维、市场;随机“苦力”。。。。。 。
    - 软件生命周期中的所有参与者都可能发现软件缺陷
  • 发现阶段

    - 业务;需求、设计、开发、测试、构建、发布。。。。。。
    - 软件缺陷存在于软件生命周期的每一个阶段,随着生命周期中软件运行状态的变化,会产生新的非预期缺陷
  • 发现方法

    - 有计划、有策略的执行:测试用例
    - 总结与经验:探索式测试、验收测试、系统试运行(并行)、业务高危维护
    - 随机发现:Ad-hoc测试、Monkey测试、走廊测试。。。。。。
    - 快速验证:冒烟测试(Smoking Test)、主流程测试、专项测试
    - 手工测试 + 工具/自动化测试

4. 软件缺陷生命周期

5. 新建软件缺陷属性(参考 JIRA 缺陷新建页面)
    说明
    * 缺陷类型,由测试执行的版本类型决定,也可在提交页面中自定义,如 功能、UI、接口、配置、集成、性能、文档。。。。。。
    * 产生原因(Root Cause),可由开发人员修复缺陷后确认 或 测试人员关闭缺陷时确认,后期用来对缺陷分布进行分析,从而持续改进质量。如,
       > 过程阶段(客户;需求、架构、设计、编码、测试、发布)
       > 过程管理(时间、成本、范围、办公环境、沟通/管理方式。。。)
       > 团队/人力(沟通、能力、责任心。。。)
       > 文档(需求分析、详细设计、测试用例。。。)
       > 业务(服务器、数据库、接口、代码)
       > 环境(平台、网络、浏览器、工具。。。)
       > 硬件(型号、版本、驱动。。。)
       > 软件(版本、配置。。。)

 6、新建软件缺陷注意点

  • 概要/Summary

    - 精炼、短小。标识(统一、格式化、提前定义) + 简述(哪类用户,做了什么,系统响应情况)
    - 例:缺陷注册人,未输入概要,点击提交按钮后系统正常提交
  • 描述

    - 可再现/复现(指导)
    - 客观:只描述、不评价,缺陷现象描述避免使用形容词、副词
    - 条件:缺陷操作产生条件,环境 + 数据 + 角色 + 配置。。。。。。
    - 结果:预期结果 + 实际结果;对比需求/设计,明确缺陷现象
    - 完整、清晰、条理、准确、详细、简洁
    - 步骤使用序号排列,每个步骤只描述一个操作,实际结果描述准确
    - 描述语句使用:简单句、陈述句、主动句(以操作对象为主语,描述实际系统表现; 与测试用例区别:多使用被动句,避免使用具体人称)
    - 建议建立一定格式要求,保证缺陷描述内容完整
  • 附件

    - 截图(强烈建议),缺陷发生快照(辅助缺陷描述):保留必要的缺陷发生时的快照 + 添加必要提示、描述(圈示、标号、说明)
    - 录屏,缺陷复现操作复杂、现象难于清晰描述、或难于再现时,可进行录屏,供缺陷修复人原分析、定位缺陷
    - 测试数据,特别设计的测试数据 或 特殊测试所用数据

7. 软件缺陷管理

  • 软件缺陷管理,即软件缺陷生命周期管理,参考 3. 软件缺陷生命周期
  • 软件缺陷登记/注册/提交时,应关连对应的测试用例,以确保每一条用例都经过验证
  • 不放过任何的缺陷,每一个缺陷都应被有效记录、跟踪 和 解决
  • 应充分利用工具,以提高软件缺陷发现率,提升测试覆盖率

    - 缺陷管理工具:Excel(microsoft相关组件);JIRA、Bugzilla、Mantis、禅道、Redmine 。。。。。。
    - 测试脚本开发:针对测试对象,使用开发语言开发专项测试工具,如 python, java, ruby。。。。。。
    - 专业测试工具:Loadrunner(性能测试套件)、Jemeter(功能+性能测试)、Postman(接口测试)。。。。。。
  • 软件过程管理,将软件缺陷管理纳入软件生命周期管理的有机部分

8. 软件缺陷分析
    说明:
    * 以测试代评,通过缺陷分析评价软件对象质量
    * 缺陷分析指标,应以项目目标为基础,充分考虑 时间、成本、范围 在质量间的平衡关系

  • 缺陷数量
  • 缺陷状态

    - New、Processing、Fixed、Won't fix、Duplicate、Delay。。。。。。
    - 提交缺陷与修复缺陷关系,燃尽图(Burn Down 剩余工作 / Burn Up 完成工作)
  • 缺陷分布

    - 版本
    - 功能
    - 模块(缺陷聚集效应)
    - 类型(功能、性能、UI、易用性、可用性。。。。。。)
    - 时间(日期)
    - 严重度
    - 产生来源
    - 提交者
    - 开发者(谁开发谁维护)
  • 质量评价

参考:

  1. 1044-1993 - IEEE Standard Classification for Software Anomalies. | IEEE Standard | IEEE Xplore
  2. 【分享】软件缺陷生命周期 - 基智地
  3. 软件缺陷的详细整理 - 知乎

以上是关于软件测试 -- 进阶 6 软件缺陷的主要内容,如果未能解决你的问题,请参考以下文章

进阶篇:软件测试工程师的岗位职责

跨平台应用开发进阶(二十五) :uni-app实现IOS云打包解决IOS提交审核相册等隐私描述语导致审核失败问题

bug?软件测试之缺陷管理流程

缺陷数据分析

缺陷数据分析

软件测试--进阶