- 软件质量概述
- 满足需求规定:软件产品符合开发者明确定义的目标,并且能可靠运行。
- 满足用户需求:软件产品的需求是由用户产生的,软件最终目的就是满足用户需求,解决用户的实际问题
- 满足用户隐式需求:软件如果满足用户的隐式需求,极潜在的可能需要在将来开发的功能。将会极大的提升用户的满意度,这就意味着软件质量更高。
- 功能性:在指定条件下,软件满足用户显示需求和隐式需求的能力。
- 可靠性:在指定条件下使用时,软件产品维持规定的性能级别的能力。
- 可使用性:在指定条件下,软件产品被使用、理解、学习能力。
- 效率:在指定条件下,相对于所有资源的数量,软件产品可提供适当性能的能力。
- 可维护性:指软件产品被修改的能力。修改包括修正、优化和功能规格变更的说明。
- 可移植性:指软件产品从一个环境迁移到另一个环境的能力。
- 测试项目:纸杯
- 需求测试:查看纸杯说明书是否完整
- 界面测试:观察纸杯外观,表面是否光滑、手感是否舒适
- 功能测试:用纸杯装水,观察是否漏水
- 安全测试:纸杯是否有毒或细菌
- 易用性测试:用纸杯盛放开水是否烫手、纸杯是否易滑、是否方便饮用
- 兼容性测试:用纸杯分别盛放水、酒精、饮料、汽油等,观察是否有渗漏现象
- 可靠性测试:从不同的高度摔下来,观察纸杯的损坏程度
- 可移植性测试:将纸杯放在温度、湿度等不同的环境中,查看纸杯是否还能正常使用
- 可维护性:将纸杯揉捏变形,看其是否能恢复
- 压力测试:用一根针扎在纸杯上不断增加力量,记录多大压强时能穿透纸杯
- 疲劳测试:用纸杯分别盛放水、汽油放置 24 小时,观察其渗漏情况(时间和程度)
- 跌落测试:纸杯(加包装)从高度落下,查看达到破损的高度
- 震动测试:纸杯(加包装)六面震动,评估它是否能应对恶劣的公路 / 铁路 / 航空运输等
- 测试数据:编写具体测试数据(略),其中可能会用到场景法、等价类分法、边界值分析法等测试方法
- 期望输出:期望输出需求查阅国际标准及用户的使用需求
- 用户文档:使用手册是否对纸杯的用法、使用条件、限制条件等有详细描述
- 说明书测试:查看纸杯说明书的正确性、准确性及完整性
- 影响软件质量的因素:
- 需求模糊
- 软件开发缺乏规范性文件指导
- 软件开发人员问题
- 缺乏软件质量控制管理
- 软件缺陷管理:
- 软件缺陷产生的原因
- 需求不明确
- 软件结构复杂
- 编码问题
- 项目期限短
- 使用新技术
- 软件缺陷的分类
划分标准 | 缺陷类型 | ||||
测试种类 | 界面类 | 功能类 | 性能类 | 安全性类 | 兼容性类 |
严重程度 | 严重………………一般………………次要………………建议 | ||||
优先级 | 立即解决………………高优先级………………正常排队………………低优先级 | ||||
发生阶段 | 需求阶段 | 架构阶段 | 设计阶段 | 编码阶段 | 测试阶段 |
- 软件缺陷的处理流程
- 常见的软件缺陷管理工具
- Bugzilla
- 禅道
- JIRA
- 软件测试简介
- 测试:找到软件中存在的缺陷(find bugs)
- 调试:根据 所发现的错误而进行代码跟踪和分析,确定缺陷产生的原因,即为了修正缺陷(fix bug)而进行Debug
- 软件测试的目的
- 对于软件开发:软件测试通过找到的问题缺陷帮助开发人员找到开发过程中存在的问题,包括软件开发模式、工具、技术等方面的问题与不足,预防下次缺陷的产生
- 对于软件测试:使用最少的人力、物力、财力、时间找到软件中隐藏的缺陷,保证软件的质量,也为以后软件测试积累丰富经验
- 对于客户需求:软件测试能够检验软件是否符合客户需求,对软件质量进行评估和度量,为客户审评软件提供有力的依据
- 软件测试的分类
- 按照测试阶段分类
- 单元测试:验证软件单元是否符合软件需求与设计,开发人员自测
- 冒烟测试:软件构建版本建立后,对系统的基本功能进行简单的测试,这种测试重点验证的时程序的主要功能,而不会对具体功能进行深入测试
- 集成测试:冒烟测试之后,将已经测试过的软件单元组合到一起测试它们之间的接口,用于验证软件是否满足设计需求
- 系统测试:将经过测试的软件在实际环境中运行,并与其他系统的成分(如数据库、硬件和操作人员等)组合在一起进行测试
- 验收测试:主要是对软件产品说明进行验证,逐行逐字的按照说明书的描述对软件产品进行测试,确保其符合客户的各项需求
- 按照测试技术分类
- 黑盒测试:把软件(程序)当作一个有输入与输出的黑匣子,它把程序当作一个输入域到输出域的映射,只要输入的数据能输出预期的结果即可,不必关心程序内部是怎样实现的
- 白盒测试:测试人员了解软件程序逻辑结构、路径与运行过程,在测试时,按照程序的执行路径得出结果。白盒测试就是把软件(程序)当作一个透明的盒子,测试人员清楚的知道从输入到输出的每一步过程
- 按照软件质量特性分类
- 功能测试:测试软件的功能是否满足客户的需求,包括准确性、易用性、适合性、互操作性等
- 性能测试:测试软件的性能是否满足客户的需求,性能测试包括负载测试、压力测试、兼容性测试、可移植性测试和健壮性测试等
- 按照自动化程度分类
- 手工测试:测试人员一条一条的执行代码完成测试工作。费时费力且很验证保证测试效果。
- 自动化测试:借助脚本、自动化测试工具等完成相应的测试工作,它也需要人工的参与,但是它可以将要执行的测试代码或流程写成脚本,执行脚本完成整个测试工作。
- 按照测试项目分类
- 界面类测试:验证软件界面是否符合客户需求。
- 安全性测试:试软件在没有授权的内部或外部用户的攻击或恶意破坏时如何进行处理,是否能保证软件与数据的安全。
- 文档测试:以需求分析、软件设计、用户手册、安装手册为主,主要验证文档说明与实际软件之间是否存在差异。
- 其他分类
- α测试:软件上线之前进行的版本测试。由开发人员和测试人员或者用户协助进行测试。测试人员记录使用过程中出现的错误与问题,整个测试过程是可控的。
- β测试:软件上线之后进行的版本测试。由用户在使用过程中发现错误与问题并进行记录,然后反馈给开发人员进行修复。
- 回归测试:对修改后的程序重新进行测试确认原有的缺陷已经消除并且没有引入新的缺陷,这个重新测试的过程就叫作回归测试。
- 随机测试:没有测试用例、检查列表、脚本或指令的测试,它主要是根据测试人员的经验对软件进行功能和性能抽查。
- 常见的软件测试模型
- V模型
- W模型
- H模型
- X模型
- 软件测试原则
- 软件测试流程
- 分析测试需求
- 制定测试计划
- 设计测试用例
- 执行测试
- 编写测试报告