进阶篇
1.按照开发阶段划分测试类型
(1)单元测试
测试工具:java Junit框架
测试阶段:编码前(TDD)或者编码后
测试内容:接口,局部数据结构,路径测试,错误处理测试,边界测试
白盒测试
(2)集成测试
测试阶段:单元测试之后
测试内容:模块之间接口的测试,全局数据结构测试,单个模块的缺陷对系统的影响,模块之间功能是否有冲突
黑盒测试和白盒测试相结合
(3)系统测试
测试阶段:编码后,集成测试之后
测试内容:界面,系统的功能,性能,安全性,兼容性,易用性,可移植性,可靠性
黑盒测试
回归测试:
测试内容:当系统引入新的代码的时候要测试新代码是否对旧功能产生影响
测试时机:改BUG或者进行迭代之后
冒烟测试:
测试内容:判断系统是否可以进行全面系统测试的标准,测试主要功能和核心流程
(4)验收测试
测试阶段:系统测试通过之后
测试对象:整个系统(包括软硬件)
测试人员:主要是最终用户或者需求方
测试内容:验收测试不仅要对系统进行全面测试,验收文档(开发文档,软件设计文档,需求分析文档,功能使用文档,用户使用手册)
2.按照实施组织划分
(1)α测试:
- 用户和公司内部非测试和非开发人员请到开发现场进行测试
- 时间比较集中在开发现场沟通产品的问题哦
- 容易受到开发环境的影响
(2)β测试:
Beta测试是一种验收测试,测试的参与者是购买者,场景和环境也不再是厂家的环境和场所。
-
用户在实际使用环境下进行测试
-
用户测试结果更接近于实际使用情况的反馈
-
α测试优先于β测试
不同点:
测试环境:α测试在开发环境,β测试在实际使用环境
测试人员:α测试除了开发和测试人员以外的任何人,β测试是用户
在进行β测试之前要进行很长时间的α测试
(3)第三方:
3.按照是否运行划分
静态测试:
不运行程序,根据需求规格说明书,软件设计文档,程序文档等结合程序(代码),查看代码的风格,语法,逻辑等是否符合需求.
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zCe2xWgi-1629092516236)(https://i.loli.net/2021/08/06/51rPv2XtEJ6nzDW.png)]
动态测试:
编写测试用例,运行系统(程序),执行测试用例
4.按照是否手工来划分
手工测试:
优点:灵活性强,发散性强
缺点:测试量过大容易出错
自动化测试:
按照预设的条件去自动执行测试,预测测试结果,设置正常验证和异常验证
UI界面测试自动化:selenium unittest ddt HTMLResultRepport
接口测试自动化:jmeter postman
性能测试自动化:loaderrunner
开启自动化测试的前提:项目功能要相对稳定
自动化价值:脚本的重复使用率越高,自动化越有价值。
自动化实施步骤:
- 完成功能测试,版本基本稳定
- 根据项目特性,选择适合项目的自动化工具,并搭建环境
- 提取手工测试的测试用例转化为自动化测试的用例
- 通过工具、代码实现自动化的构造输入,自动检测输出结果是否符合预期
- 生成自动测试报告
- 持续改进,脚本优化。
5.按照是否查看代码来划分
黑盒测试:(系统测试,验收测试)
概念:
把软件当成一个黑色的盒子,软件的具体实现是被屏蔽的,测试人员只关心软件的输入和输出。
设计测试用例的方法:
- 等价类
- 边界值
- 因果图法
- 场景法
- 错误猜测法
- 正交法
白盒测试:(单元测试)
概念:
对软件的具体实现,结构,逻辑进行测试。
设计测试用例的方法:
- 语句覆盖
- 路径覆盖
- 循环覆盖
- 逻辑覆盖
- 判定覆盖
- 条件覆盖
- 判定组合覆盖
- 条件组合覆盖
灰盒测试:(集成测试)
介于白盒和黑盒之间的测试,不仅关注输入输出的正确性,也关注程序内部的情况
6.按照地域来划分
国际化测试
本地化测试
7.按照测试对象来划分
(1)业务测试 : 场景法
如何快速了解新接触的系统的业务
- 系统文档(需求文档,系统设计文档)
- 询问开发人员
一个采购系统,向供应商采购商品,供应商发货之后,需要给供应商打款
打款逻辑,收到货物之后延迟15天打款
问:公司仓库9月20收到货物,但是15天之后供应商没有收到货款,为什么。
- 银行非工作日不提供转款业务,节假日财务不上班
- 在编写代码的过程中,应该写为工作日15天的逻辑
- 闰年和平年的区别
- 每年节假日时间不同
(2)界面测试(UI测试)
要测试界面的完整性,准确性,一致性,易用性
借助页面设计稿来检查界面的正确性
**布局:**字体、图像大小位置
**控件:**对话框 文本框 按钮 滚动条 CheckBox
不同页面大小的自适应测试(遵循完整性,一致性,准确性)
- 页面从小到大文字图片有没有消失重叠
- 页面从小到大功能有没有消失
- 页面从小到大是否可以正常使用
- 页面从小到大过程衔接是否丝滑
(3)容错性测试
当系统由于外界异常环境或者人为错误操作,系统可以自我处理错误,而不是把错误或者异常直接抛出展示给用户,甚至直接崩溃。
数据级别
校验级别:验证码,前后信息的一致性,
环境级别
界面级别
前端限制,后端处理返回异常
失效恢复性测试
通过各种手段,将软件强制性的发生故障,然后验证系统已经保存的用户数据是否丢失,系统和数据能否尽快恢复
(4)文档测试
文档的完整性、术语专业行、准确性、一致性、易用性
(5)兼容性测试
移动应用平台
-
IOS 不同版本的苹果手机,不同的IOS系统
-
Android 不同版本的Android系统,在不同品牌的手机上测试
-
Windows phone
-
塞班
软件向前或者向后的兼容性
软件和其他相关软件的兼容性
桌面端应用平台
- Windows
- Mac
- Unix
- Ubuntu
不同系统的不同版本
Web应用
- 不同浏览器的不同版本
(6)易用性测试(用户体验测试)
- 遵循标准(行业惯例)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RPk6I514-1629092516238)(C:\Users\精神小伙\AppData\Roaming\Typora\typora-user-images\image-20210619132709497.png)]
- 直观性
标识要直观可见
- 灵活性
灵活性过高会导致复杂性提升
- 舒适性
上传下载之类的进度条,可以缓解用户等待的焦虑。
- 实用性
微信朋友圈评论,可以发收藏的表情
(7)安装测试 APP基础功能的测试
测试程序的安装、卸载
典型的是app的安装、卸载
(8)安全测试
数据泄露、黑客攻击、SQL注入、XSS注入、病毒等
例如:
- Web的安全测试
需要熟悉各种网络协议
TCP\HTTP,防火墙,CDN,熟悉各种操作系统的漏洞,熟悉路由器等。从软件来说,熟悉各种攻击手段,例如
SQL注入、Xss等。
作为web入门测试,可以IBM的appscan。
- 上传,下载的安全测试:
- 检测文件上传是否过大
- 上传时文件过大,导致内存爆掉
(9)性能测试
资源泄露 资源瓶颈 线程阻塞 数据库查询慢效率低等。
性能测试指标:
TPS(每秒事务处理量)
响应时间:越短越好 ,最慢不能超过10秒
点击率:每秒向服务器发送的http请求数量
资源利用率:(CPU 带宽 硬盘等利用率)
(10)内存泄露测试
引起内存泄漏的原因:
- 分配的内存没有释放
- 使用API函数的时候不正确
- 代码有问题,导致无法正确释放内存
代码评审的工具
例子: