定义:软件的预期结果和实际结果做对比的过程
分类
-
方法
黑盒测试:对外部暴露出来的功能进行测试
白盒测试:是通过程序的源代码进行测试而不使用用户界面
灰盒测试:介于黑盒和白盒之间,同时看暴露出来的功能和内部的结构 -
阶段
单元测试:测试软件的代码中的函数、方法、类等等代码单元
一般都是开发自己做
集成测试:测试的就是两个模块之间是否能够正常对接
测试的对象就是接口
系统测试:对整个软件的整体进行测试
功能、性能、安全、UI、等等
验收测试:
α测试:内测
β测试:公测 -
方向
功能测试:对功能做测试
性能测试:
压力测试:这个软件最多可以容纳多少人使用
通过模拟用户的数量来发现软件的瓶颈
负载测试:找到系统在极限的情况下,能够运行的最长时间
并发测试:内存溢出、系统崩溃、数据库宕机等等
安全测试:弱口令、渗透测试、流量攻击、跨域攻击、SQL注入
UI测试:检查软件的界面好不好看
风格是否统一
有没有错别字
按钮是否符合UI设计的思路
兼容性测试:就是测试同一个软件在不同的平台上是否运行正常
web
app
易用性测试:好不好用,能少就别多,尽量不要有学习成本
稳定性测试:软件长时间运行使用会不会有问题
前端:2~5小时
后端:7*24小时
APP的专项测试
弱网测试:模拟在不同的网络条件下APP是否能够正常的使用
2G 3G 4G 5G WiFi
通过fiddle做弱网测试
权限测试
场景交互测试:电话来了、短信来了、不同软件之间的切换、前后台的切换、放音乐、分屏
资源争用测试:两个同样类型的APP同时操作或者使用同一个资源
安装、卸载、更新测试
消息推送测试:APP退出后能不能收到消息推送
断网后再联网能不能收到消息推送
离线测试:在没有网络的情况下,APP会不会出现一些莫名其妙的错误提示
在断网的情况下,APP还能使用不 -
对象
APP测试
web测试
大数据测试
AI测试
游戏测试
物联网测试
车联网测试
小程序测试
嵌入式测试 -
状态
动态测试
静态测试 -
其他
回归测试:检查之前发现的bug开发有没有正确的修改成功
冒烟测试:测试前的测试,检查软件是否具备可测试性
灰度测试:在正式发布之前,选择一些特定的人群试用
打桩测试:是一种测试手段
埋点测试:通过开发协助,让我们在每次操作软件的时候,可以直接看到操作的过程和结果
测试流程
需求分析阶段
当产品经理提出需求后,就开始这个阶段
- 需求是什么:
产品原型
需求文档
口述 - 需求分析:
梳理出整个项目的业务逻辑、流程
找出每一个最小的功能点
确定每个功能点的相关规则 - 编写需求分析说明书
测试设计阶段
- 测试计划
测试的内容
什么时候去做什么测试
为什么要去做这个测试
安排谁负责去做这个测试内容
测试工作如何去做
各种资料或者测试环境的管理 - 测试策略
规定测试的内容、测试的顺序
哪些测试内容需要做,哪些不需要做
哪些先做,哪些后做,以及原因
风险分析:找出可能会遇到的风险,并且制定解决方案 需求风险、时间风险、人员风险、技术风险 - 测试方案
关于每一个测试内容应该如何开展单独地写成文档 - 测试用例
用例编号:唯一的
用例标题:言简意赅,用最少的字描述清楚这个用例是做什么的
前置条件:在执行这个用例前,软件需要满足什么条件
优先级:和时间有关,越紧急的优先级越高
重要级:和功能是否核心业务有关,越核心的功能重要级越高
测试数据:通过等价类和边界值所设计的数据
测试步骤
预期结果
实际结果
测试方法:
边界值
等价类:有效等价类、无效等价类
场景法:站在用户的角度去分析用户对于某个功能可能会有哪些操作
猜错法
路径覆盖法
因果图
判定表
测试执行阶段
-
执行测试用例
-
记录管理跟踪bug
bug的管理:
bug六要素:编号、bug标题、重要级、优先级、复现步骤、附件(截图、视频、日志)
bug的等级:
致命的:和钱有关的任何bug都是致命的
导致软件崩溃,完全不能使用的问题
严重的:导致了软件的核心业务流程无法进行的
重要级高的用例的正向场景导致的问题
一般的:逆向场景出问题的bug
轻微的:UI上的,易用性上的bug
bug的生命周期
-
版本管理
版本迭代:
测试环境需要更新,重新运行
测试迭代:
全量测试
增量测试:只做回归测试,新增的功能的测试,已知的有修改的功能的测试
引入自动化测试,通过自动化测试的手段,去保证那些没有测试的地方出现问题
测试总结阶段
测试报告:
工作总结
bug的统计和分析
质量评估:说明当前的软件的质量的情况,比如功能的完成情况,比如bug的修复情况;所有的需求以及开发完成,并且全部测试通过,已经发现的一二三级的bug全部关闭