测试金字塔理论
投入相同的人力精力,越往上层,
产出越低、定位问题越困难、测试效率越低!
按开发阶段划分
- 测试阶段:编码后或者编码前;
- 测试对象:最小模块;
- 测试方法:白盒测试;
- 测试依据:代码和注释+详细设计文档;
- 测试内容:模块接口测试(输入参数数量、类型、类型排列,输出是否符合接口设计文档),
局部数据结构测试,路径测试(if,else,switch等逻辑判断),错误处理测试, 边界测试;
@Ignore 忽略该部分单元测试
@Before 执行单元测试前执行xx
@After 执行单元测试后执行xx
- 测试阶段:单元测试以后;
- 测试对象:模块间的接口;
- 测试方法:灰盒测试;
- 测试人员:开发工程师,白盒测试工程师
- 测试依据:概要设计文档,详细设计文档
- 测试内容:接口之间的数据传输,模块之间的功能冲突,模块组装功能正确性,全局数据结构,单个功能模块缺陷对整体的影响;
- 测试阶段:集成测试以后;
- 测试对象:整个系统(软、硬件);
- 测试方法:黑盒测试;
- 测试人员:黑盒测试工程师
- 测试内容:功能、界面、可靠性、易用性、性能、兼容性、安全性等
回归测试指修改了代码后(增加新功能、修复bug),重新进行测试以确认修改后没有引入新的错误;
- 测试阶段:系统测试之后;
- 测试对象:整个系统;
- 测试人员:客户
- 测试方法:黑盒测试;
- 测试内容:系统测试内容+文档测试(软件设计文档、功能设计文档、用户使用手册、详细功能使用文档等)
按测试实施组织划分
- α测试是由用户在开发环境下进行的测试;问题及时发现解决(开发人员和测试人员不能参加)
- β测试是由用户在一个或者多个场所进行测试;(测试环境不受影响)测试结果接近实际使用结果
α 测试和 β 测试的区别:
- 测试场所不同:Alpha测试指把用户请到开发方的场地来测试,测试环境受开发方控制;Beta测试时一个 或多个用户在不同场所进行测试,测试环境不受开发方控制;
- 时间集中程度不同:Alpha用户数量较少,时间比较集中;Beta时间分散;
- alpha测试先于beta测试;
按是否运行划分
- 不运行被测程序本身,通过分析源程序的语法,结构,过程等检查程序的正确性;
- 代码静态分析和文档测试都属于静态测试;
- 静态质量标准:功能性、性能、兼容性、易用性、可靠性、安全性、维护性、可移植性
- 写测试用例,运行程序,检查运行结果和预期结果的差异,并分析运行效率,正确性等;
按是否手工划分
- 优点:思维发散,测试灵活,根据不同情况进行测试用例的完善和修改;
- 缺点:执行效率低,量大易错;
自动化测试的步骤:1. 功能测试,确保版本基本稳定;2. 根据项目特性,选择合适项目的自动化测试工具,搭建环境;3. 手工测试的测试用例转化为自动化测试的用例;4. 通过工具、代码实现自动化的构造输入,自动检测输出结果是否符合预期;5. 生成自动化测试报告;6. 持续改进,脚本优化;
按是否查看代码划分
按地域划分
国际化测试、本地化测试
按照测试对象划分
- 界面测试
文字:大小、类型、粗细、斜体、颜色、下划线、超链接
图片:大小、颜色、清晰度、排版、重叠
控件:按钮、文本框、滚动条、下拉框、勾选框 (有效控件——高亮;无效控件:置灰)
备注的提示说明语言表述是否清楚;整体布局排版
响应式测试(界面测试的一种)——系统的页面可以随着屏幕的分辨率不同而自适应
ps:文字、图片不会随着屏幕分辨率的变化而重叠、遮挡、消失、模糊;页面功能随着屏幕分辨率变化可以正常使用;严格遵循UI设计图;页面在不同屏幕分辨率进行衔接是否丝滑不出现断层
常见错误界面:不合适的快捷键,文字消失(或截断),重叠展示,重复的快捷键,未对齐等
- 容错性测试
当系统因外部环境影响或用户误操作导致系统内部发生错误,但系统可以自处理,使系统可正常稳定运行
验证级别:查询信息前后的空格,trim(),验证码输入错误,同一个系统前后信息的容错处理
环境容错处理:系统运行出现断电断网、服务器故障等情况时,随时切换电器,网络,备用服务器并让用户无感知
界面容错处理:进行危险操作时,是否给用户提示或将这些功能屏掉;账户注册账户和密码的位数限制,输入最大位数时禁止输入;用户输入规定的选项时,可存在下拉框;出现复杂易出错操作时,给用户提示
灾难恢复性测试:人为让系统发生一系列故障,让系统出现断网断电、系统崩溃的极端情况,检测系统是否可以自我恢复,以及恢复正确数据的准确性和耗时长短
- 文档测试
对软件开发过程中产生的文档进行测试:软件设计文档、流程图文档、功能分析设计文档、用户使用手册等
主要测试文档和软件系统的一致性;文档术语是否得当,正确性、完整性、易用性
- 兼容性测试
web系统兼容性:
平台:Windows(Windows10、Windows7……)、Mac(IOS不同版本)
浏览器:Firefox、Chrome、Opera、IE、360……(不同浏览器的当下市场的主流版本:不同;浏览器内核不同,对同一个页面的解析不同)
APP兼容性:
iOS:不同iPhone机型,不同的iOS系统(主流)
Android:不同安卓手机的不同型号,不同的Android系统(主流)
软件本身向前向后的兼容性:不影响之前之后的兼容性
软件是否和其他相关软件的兼容性:APP之间的第三方登录(例:QQ登录CSDN),软件之间信息数据的共享(例:淘宝快递和菜鸟裹裹)
数据的兼容性
- 易用性测试
用户体验性测试:符合标准规范,直观性,灵活性,舒适性,实用性……
- 安装/卸载测试
APP安装方式:应用商店、安装包、命令行、压缩包解压、第三方应用安装(手机助手,软件助手)
APP卸载方式:应用商店、桌面卸载、命令行、第三方应用卸载
断电断网、手机电脑关机情况下的安装和卸载情况;安装过程中空间不足情况;安装过程能否暂停;暂停之后是否能继续成功安装;卸载能否连带清楚所有相关数据;
- 性能测试
性能测试的目的:为了用户体验感,系统能够快速响应用户需求;系统能够处理预期的用户负载和事务数量;系统能够满足以上的情况下稳定运行
响应时间:系统响应用户操作的时间
TPS:每秒处理的事务数量
吞吐量:系统在单位时间内处理的信息量
点击量:每秒向服务器发送的HTTP请求的个数
系统运行时占用资源情况:CPU、内存、磁盘、网络带宽、耗电量…
- 安全测试
SQL注入
上传下载:对保密文件进行测试,防测试分类止被截取信息;上传病毒文件;上传下载大文件
防爬虫:xss注入、黑客、病毒
- 内存泄漏测试
分配内存时,没有及时释放内存或无法释放,导致系统运行占得内存越来越多,系统运行越来越慢,甚至崩溃
原因:使用API函数不准确;程序写的有问题,无法释放内存空间;分配内存空间之后,忘记释放
- 静态测试
走读代码;使用工具测试