阶段总结
软件开发的生命周期
-
客户提出需求(概念)
-
根据客户的需求写出相对应的需求文档
-
前端设计效果图(原型图)
后台开发人员设计与编写代码实现功能
测试人员根据需求文档编写测试计划和测试用例
-
在后台开发实现功能后根据测试用例测试人员进行测试
-
开发完全结束后,测试人员进行整体测试,全面测试,测试成功后进入上线
-
软件上线后根据用户体验和实际效果进行小版本迭代
测试流程
- 在立项会上根据客户需求编写需求文档/规格说明书,UI设计原型图后台编码,测试人员编写测试计划和测试用例
- 随着开发的代码实现,测试进行测试评审
- 主要代码实现后测试人员先进行冒烟测试
- 代码实现后测试执行测试用例
- 根据执行的结果进行对应bug提交给相对于的开发人员让其修改代码
- 开发修改后测试人员进行回归测试
冒烟测试:在这个软件中主要功能实现后进行测试
回归测试:在开发人员修改后进行的同一个问题的测试
软件测试的分类
-
按阶段划分
-
单元测试:对一个模块测试
-
集成测试:对多个模块测试(有一定的关联)
-
系统测试:在软件编译后执行的整体测试
-
验收测试:对软件执行后的用户体验的测试
α 阿尔法测试:有一定的开发测试人员的测试 内测
β 贝塔测试: 只有用户参与的测试 公测
-
-
按是否运行程序划分
- 静态测试:UI设计图
- 动态测试:由执行代码过程中产生的问题
-
按是否查看源代码方式划分
-
黑盒测试:不看源代码结构 只关心外观和能否输入输出以及响应时间
功能测试:界面 安装 兼容 易用
性能测试:压力测试 负载测试 一般性能 稳定性测试
压力测试:在同一时间内进行多个用户的访问 负载测试:在多个用户在一段时间的持续访问
-
白盒测试:只看代码结构以及代码实现方式
-
灰盒测试:介于黑盒和白盒之间一种
-
软件测试的原则
- 尽早原则
- 考虑意外情况和极端情况的发生
- 群集现象
- 测出问题能够复现问题
- 不要在短时间进行高效测试
- 回归测试的关联性
- 善于总结相关文档
测试工具
world文档 测试计划 测试用例 缺陷报告
接口工具 charles Fiddler postman
性能工具 Jmeter Loadrunner
bug管理工具 禅道 jira QTP
自动化管理工具 selenium appnium uptest pytest
云测工具 Testing
测试计划
- 需求
- 提取测试点
- 编写测试用例
测试用例
测试用例的定义:
执行测试的依据,将测试的操作步骤进行以文档的方式记录下来
测试用例的格式:
测试用例的模块 测试用例的编号 执行条件 测试输入 预期结果 实际结果
测试用例的模块:操作软件的一个大的菜单 命名以模块名称为主
测试用例的编号:命名以菜单下具体功能_数字
执行条件:操作的先决条件
测试输入:对具体的功能操作步骤
预期结果:以需求文档上的内容为主
实际结果:依据测试数据的内容输出后得到的结果可能与预期一致或者不一致
测试用例的特性:
代表性:能够代表并覆盖各种合理的和不合理、合法的和不合法的、边界的和越界的以及极限的输入数据、操作等。
针对性:对程序中的可能存在的错误有针对性地测试
可判定性:测试执行结果的正确性是可判定的,每一个测试用例都应有相应的期望结果
可重现性:对同样的测试用例,系统的执行结果应当是相同的
测试用例的输入类型:
- 字母
- 数字
- 特殊符号
- 空字符
- 汉字
软件分类
OA:办公自动化
crm:客户管理系统
ERP:进销存系统
编写测试用例的时候3步骤走:
- 根据需求提取测试用例的测试点
- 根据测试点内容输入不同数据类型
- 得到不用结果来编写测试用例
测试方法(测试策略)
- 等价类划分法
- 边界值法
- 因果图法
- 正交法
- 场景法
- 错误推断法
测试评审的标准
- 测试用例的正确性测试用例不含有争议
- 测试用例是否冗余
- 测试用例的覆盖率
- 测试用例是否满足需求文档
评审的内容有以下几个方面
- 用例设计的结构安排是否清晰、合理,是否利于高效对需求进行覆盖。
- 优先极安排是否合理。
- 是否覆盖测试需求上的所有功能点。
- 用例是否具有很好可执行性。例如用例的前提条件、执行步骤、输入数据和期待结果是否清晰、正确_期待结果是否有明显的验证方法。
- 是否已经删除了冗余的用例。
- 是否包含充分的负面测试用例。充分的定义,如果在这里使用2&8法则,那就是4倍于正面用例的数量,毕竟一个健壮的软件,其中80%的代码都是在"保护"20%的功能实现。
- 是否从用户层面来设计用户使用场景和使用流程的测试用例。
- 是否简洁,复用性强。例如,可将重复度高的步骤或过程抽取出来定义为一些可复用标准步骤
测试计划
- 需求
- 提取测试点
- 编写测试用例
测试用例
测试用例的定义:
执行测试的依据,将测试的操作步骤进行以文档的方式记录下来
测试用例的格式:
测试用例的模块 测试用例的编号 执行条件 测试输入 预期结果 实际结果
测试用例的模块:操作软件的一个大的菜单 命名以模块名称为主
测试用例的编号:命名以菜单下具体功能_数字
执行条件:操作的先决条件
测试输入:对具体的功能操作步骤
预期结果:以需求文档上的内容为主
实际结果:依据测试数据的内容输出后得到的结果可能与预期一致或者不一致
测试用例的特性:
代表性:能够代表并覆盖各种合理的和不合理、合法的和不合法的、边界的和越界的以及极限的输入数据、操作等。
针对性:对程序中的可能存在的错误有针对性地测试
可判定性:测试执行结果的正确性是可判定的,每一个测试用例都应有相应的期望结果
可重现性:对同样的测试用例,系统的执行结果应当是相同的
测试用例的输入类型:
- 字母
- 数字
- 特殊符号
- 空字符
- 汉字
软件分类
OA:办公自动化
crm:客户管理系统
ERP:进销存系统
编写测试用例的时候3步骤走:
- 根据需求提取测试用例的测试点
- 根据测试点内容输入不同数据类型
- 得到不用结果来编写测试用例
测试方法(测试策略)
- 等价类划分法
- 边界值法
- 因果图法
- 正交法
- 场景法
- 错误推断法
测试评审的标准
- 测试用例的正确性测试用例不含有争议
- 测试用例是否冗余
- 测试用例的覆盖率
- 测试用例是否满足需求文档
评审的内容有以下几个方面
- 用例设计的结构安排是否清晰、合理,是否利于高效对需求进行覆盖。
- 优先极安排是否合理。
- 是否覆盖测试需求上的所有功能点。
- 用例是否具有很好可执行性。例如用例的前提条件、执行步骤、输入数据和期待结果是否清晰、正确_期待结果是否有明显的验证方法。
- 是否已经删除了冗余的用例。
- 是否包含充分的负面测试用例。充分的定义,如果在这里使用2&8法则,那就是4倍于正面用例的数量,毕竟一个健壮的软件,其中80%的代码都是在"保护"20%的功能实现。
- 是否从用户层面来设计用户使用场景和使用流程的测试用例。
- 是否简洁,复用性强。例如,可将重复度高的步骤或过程抽取出来定义为一些可复用标准步骤
缺陷报告编写
缺陷严重程度划分:系统崩溃,严重,一般,次要,建议
修正优先级:高,中,低
Bug定级示例
1级,系统崩溃
定义:严重阻碍测试和开发工作
对应优先级:最高
具体可分为:
- 功能完全没有实现
- 应用闪退/崩溃无法运行
- 应用必现安全模式,无法运行
- 其他导致功能无法测试的问题
2级,至关重要
定义:非阻碍用例执行的严重问题
对应优先级:高
具体可分为:
- 简单操作应用闪退/崩溃,卡死
- 数据丢失
- 严重影响系统,自身功能无法运行
- 严重数值计算错误
- 数据库损坏或无法保存配置
- 安全性问题(包括数据加密等)
3级,主要
定义:功能存在缺陷,但不影响应用和系统的稳定性
对应优先级:中
具体可分为:
- 内存泄露(长时间不用的对象需要被回收,不被回收占内存)
- 功能实现逻辑覆盖不全面
- 非必现,但复现概率超过50%的闪退/崩溃和安全模式
4级,一般
定义:对应用熟悉度高才能感知到的问题,对应用基本功能实现无影响
对应优先级:中
具体可分为:
- 轻微数值计算错误
- 功能实现有误,与产品文档不完全贴切
- 用户简单操作,即可明显感知的UI问题
5级,较小
定义:界面,性能缺陷
对应优先级:低
具体可分为:
- 操作界面错误(提示显示规则,刷新规则是否与文档一致)
- 边界条件显示错误
- 提示信息和界面效果展示错误(包括未给出信息、信息提示错误等)
- 复现率低于5%的闪退/崩溃和安全模式
- 插件兼容和性能未优化问题
- 非正常操作导致UI显示异常
6级,建议
定义:对于产品的意见或者建议
对应优先级:低
具体可分为:
- 对于产品设计方面的意见和建议
- 对于产品界面优化方面的意见和建议
- 对于产品需要优化增强用户体验方面的意见和建议
Bug生命周期
新建 确认 解决 重新验证 关闭 重新打开
-
一个Bug由测试人员发现并提交,我们将状态标注为新建;
-
开发人员接收了该Bug,将Bug的状态改为已分配(Assigned),表示已经认可;
-
开发人员解决了该Bug后,将Bug的状态修改为已解决,并发给测试人员回归测试;
-
测试人员对Bug进行回归测试,如果确实已经解决,就将Bug状态修改为关闭,否则的话则发给开发人员重新修改。
注意:Bug是可以“死而复生”的,以前版本已经关闭的Bug,如果新版本中重新出现,我们就需要将其状态修改为重新打开。