(一)软件测试定义
软件测试是利用人工或自动化的手段,发现程序,需求文档中的错误、缺陷、不合理以及是否满足用户需求。
软件测试的意义/目的:对产品质量的全面评估和测试。
(二)软件测试的分类
- 按开发阶段划分:
(1) 单元测试
(2) 集成测试
(3) 系统测试(包括回归测试,冒烟测试)
冒烟测试:测试主流程是否能够跑通,主要功能是否能够正常操作。(不通过可以打回)
回归测试:对开发修复的bug进行复测。
(4) 验收测试 - 按是否手工执行进行划分:
(1) 手工测试
(2) 自动化测试 - 按是否查看代码进行划分
(1) 黑盒测试(只关心输入和输出数据。)
(2) 白盒测试(对程序的内部结构和代码进行测试。)
(3) 灰盒测试(不仅关心输入输出数据,还关心内部结构。较多用于接口测试。)
- 按是否运行程序进行划分
(1) 静态测试
(2) 动态测试 - 按测试对象进行划分
(1) 功能测试
(2) 非功能测试
性能测试(性能指标包括稳定性,响应时间,吞吐量(tps))
安全测试
界面(UI)测试
兼容性测试(对平台、浏览器、软件新旧版本、数据兼容,与其它软件兼容)
文档测试(常见是对用户操作说明书进行测试)
易用性(用户体验)测试
安装卸载测试 - 按测试实施组织进行划分
(1) Alpha测试(把用户请到开发场所进行测试)
(2) Beta测试(在用户场所测试)
(3) 第三方测试(介于开发方和用户方之间的测试(请第三方机构进行测试)) - 按测试地域进行划分
(1) 本地化测试
(2) 国际化测试
(三) 软件测试原则
- 尽早进行(最好在需求阶段就开始介入)。
- 开发避免检查自己的程序,应由测试人员负责测试软件。
- 设计测试用例考虑合法的输入、不合法的、边界、特殊情况等。
- 程序是否做了该做的事,是否做了不该做的事。
- 长期保留测试用例(有助于回归测试)。
(四) 软件测试的策略
(测试策略属于测试计划的一部分)
- 选择合适的测试方法
- 明确角色和职责
- 环境需求(系统环境,软硬件以及网络环境等)
- 风险分析
- 测试进度评估
- 回归测试策略(确定哪些测试用例应在回归测试中运行)
- 优先级(对测试模块排定优先级)
(五) 软件测试的模型
- 瀑布模型
缺点:测试介入时间太晚。
- V模型
缺点:测试介入时间晚。
优点:测试和开发各阶段对应关系很明确。
- 敏捷研发模型
- 探索式测试
探索性测试是一种测试思维模式,优点:灵活。
(六) 软件测试生命周期
- 需求分析
需求评审:
(1)主讲人员:BA(需求分析师)/PM(产品经理)
(2)文档:PRD(产品需求文档)
(3)流程:测试、开发进行初步学习—BA串讲—测试、开发提出问题和建议—BA确认后给出答复—测试、开发反串讲需求----确认后输出详细版的PRD - 测试计划
(1)整体的测试计划一般由测试经理/测试组长进行编写,然后按人来拆分或者按模块来拆分分配到每个人进行小的测试计划的编写。
(2)测试计划内容包括:
a.产品概述
b.测试策略
c.测试方法
d.测试范围
e.测试人力
f.时间安排
g.风险分析等
(3)测试计划的作用:
a.保证测试工作更顺利的进行,有预先的工作安排,保证效率。
b.促进项目团队人员之间的沟通,了解彼此之间负责的模块。
c.有利于软件测试工作的管理。 - 测试用例设计
先用Xmind罗列各模块的测试点,在使用Excel或Testlink工具编写测试用例。 - 测试执行
- 测试评估