测试金字塔:从上到下:ui层->业务逻辑层->数据处理层
从下到上,投入产出比越来越小?
(1)越往上定位问题越困难
(2)越往上层,测试效率越低
测试分类
-
按照开发阶段划分:
单元测试:对软件组成单元进行测试
测试阶段:编码后 或 编码前(TDD:先写测试用例,根据测试用例产生的异常去补充开发代码)
测试对象:最小模块
测试人员:白盒测试或开发工程师
测试依据:代码注释+详细设计文档
测试方法:白盒测试
测试内容:模块接口测试,局部数据结构测试,路径测试(if else; switch case),错误处理测试(try catch),边界测试(for while)
测试框架:JUnit
集成测试:
测试阶段:单元测试之后
测试内容:模块之间数据传递,模块之间功能的冲突,模块功能的正确性,全局数据结构,单个模块的缺陷对整个系统的影响
系统测试:
测试阶段:开发完成后,集成测试完成以后
测试内容:界面,功能,性能,易用性,安全性,兼容性等
(1)回归测试:当系统代码进行了修改(添加新需求,修bug),为了防止新添加的代码对系统引入新的错误而进行测试
(2)冒烟测试:对系统核心功能和主要流程进行测试 决定是否进行正式测试的依据
验收测试:
测试阶段:系统测试之后,用户进行测试
测试内容:界面,功能,性能,易用性,安全性,兼容性等 开发文档,使用说明书
-
按照测试的实施组织
α测试 : 把用户(除开发和测试以外人员)在开发现场进行测试 及时发现问题,测试时间集中,但环境首开发环境限制
β测试:让用户在正常使用环境进行测试,测试时间比较分散,在真实使用环境下进行测试
第三方:第三方软件测评机构 根据行业标准和规范进行测试
-
按照是否运行进行划分
静态测试:测试代码风格和规则
动态测试:检查运行结果与预期结果差异,测试运行效率与正确性
-
按照是否手工划分
手工测试:大量测试容易出错,但比较灵活
自动化测试:在系统功能比较稳定的前提下做自动化测试,脚本的重复利用率越高意义越大
-
按照是否查看代码划分
黑盒测试:不关心软件内部逻辑,结构,只关心输入输出是否达到我们的预期,相对于把软件看成一个只有输入输出的黑色盒子
黑盒测试方法:等价类,边界值,因果图,正交法,场景设计,错误猜测
测试覆盖率角度,一般只能覆盖到代码量的不到40%;针对黑盒测试的自动化测试,复用率较低,维护成本较高
白盒测试:研究软件内部程序逻辑和结构
白盒测试方法:语句覆盖,逻辑覆盖,路径覆盖,判断覆盖,条件覆盖,判断和条件的组合,判定组合,条件组合
灰盒测试:介于白盒测试和黑盒测试之间,即关心输入输出,又关心程序内部的机构
-
按照测试地域划分
国际化测试
本地测试
-
按照测试对象划分
业务测试
界面测试
容错性测试(数据容错,校验容错,界面容错,环境容错,灾难恢复性测试)
文档测试(完整性,一致性)
兼容性测试(不同设备,不同操作系统,不同浏览器 内核不一致标准不一致)
易用性测试
安装测试
安全性测试
性能测试(能够快速响应用户请求,能够负载用户数量(并发用户数),能够处理事务数量)
资源利用率,响应时间,吞吐量