按开发阶段划分
单元测试:对系统最小模块进行测试,小到可能只是一个方法。
- 测试阶段:编码后、编码前(TDD)
- 测试对象:最小模块
- 测试人员:白盒测试人或开发工程师
- 测试依据:代码、注释、详细设计文档
- 测试方法: 白盒测试
- 测试内容
– 模块接口测试(输入参数)、参数个数、参数类型、顺序要符合接口文档) – 局部数据测试(局部变量在不同方法处理逻辑转化是否正确) – 路径测试(if-else、switch) – 错误处理测试(try-catch-finally) – 边界测试(for、while) - 测试框架:Junit
集成测试:按照一定的逻辑对不同的模块进行组装,对系统的接口及集成后的功能进行正确性检测的测试工作。
- 测试阶段:单元测试之后(实现模块后)
- 测试对象:模块间接口
- 测试依据:单元测试模块+概要设计
- 测试方法:黑盒测试+白盒测试
- 测试内容
– 模块间数据传输:数据流向是否按照测试策略的逻辑进行 – 功能冲突:组装过程中,要确保每一个模块的功能不能影响其他模块 – 组装功能正确性、全局数据结构 – 单个模块缺陷对系统的影响:单个模块设计时的小缺陷可能对自身几乎没什么影响,但组装在一起可能对整体或其他模块造成影响。
系统测试: 对系统进行全面测试(网络、兼容、安全等)
-
测试阶段:开发完成后即,集成测试后 -
测试方法:黑盒测试 -
测试依据:系统需求分析说明文档 -
测试内容:界面、功能、易用性、安全性、兼容性等。
两个方法:回归测试和冒烟测试
验收测试:是系统部署前的最后一个测试工作,即交付测试。目的是确保软件准备就绪,按照项目合同、任务书、双方约定的验收依据文档,向软件购买都展示该软件系统满足原始需求。
- 测试阶段:在系统测试之后
- 测试对象:整个系统
- 测试内容:界面、功能、易用性、安全性、兼容性、文档(功能说明文档、开发文档、使用说明书等)等
- 测试方法:黑盒测试
- 测试人员:用户(甲方)
按测试实施组织
α测试:将用户(或公司内部人员)请到开发现场,模式实际操作环境下的测试(不能由程序员或测试人员进行)
-
目的:评估软件的各方面性能 -
优点:可及时解决发现的问题、测试时间比较集中 -
缺点:受开发环境影响(毕竟不是实际场景)
β测试:(验收测试) 用户在正常使用环境下进行测试,通常一个周期测试完成,需要将问题整理成文档,反馈给开发人员。
- 测试阶段: 在α测试之后
- 优点:用户在真实使用场景下测试,测试结果更有借鉴意义。
- 缺点: 测试时间比较分散
- 常见形式:微信/APP邀请您系统内测
第三方: 第三方软件测评机构,根据软件行业的标准和规范进行测试,更加正规(测试人/开发人是有自己的角度—“偏见”)
按是否运行划分
静态测试:不运行被测程序本身,仅通过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性。
动态测试:运行被测程序,检查运行结果与预期结果的差异,并分析运行效率、正确性、健壮性等性能。
- 组成:构造测试用例、执行程序、分析程序的输出结果。
Tip:大多数软件测试都属于动态测试。
按是否手工划分
手工测试:由人去一个一个的输入用例,然后观察结果,和机器测试相对应,属于比较原始但是必须的一个步骤。
-
优点:比较灵活、可以进行发散的测试 -
缺点:进行大量测试容易出错
手工测试可以被替代吗?
不可以,机器没有办法代替人的思维
自动化测试
将人为驱动的测试行为转化为机器测试 在预先条件(正常条件、异常条件)下运行系统或应用程序,评估运行结果。
前提:在系统功能比较稳定的前提下才能自动化测试
价值:脚本利用率越高,重复利用率越高价值越大。
实施步骤:
完成功能测试、版本基本稳定
根据需求文档写测试用例;
把测试用例转换成自动化测试脚本;
执行自动化测试脚本;
分析运行结果,输出测试报告。
按是否查看代码划分
黑盒测试
概念:不关心软件内部的逻辑结构,只关心输入输出是否达到我们的预期,相当于将软件当成一个只有输入输出的黑色黑子(观众看大变活人)
设计测试用例的方法:等价类、边界值法、因果图法、正交法、场景设计、错误猜测
白盒测试
概念:研究软件内部的程序逻辑和结构,验证是否满足软件需求,相当于把软件当成一个能看见内部结构的白盒去测试。
测试方法:循环覆盖、逻辑覆盖、基本路径覆盖
灰盒测试:介于白盒测试和黑盒测试之间,即关心输入输出、又关心程序内部结构。
按地域划分
软件国家化:在设计软件时,采用一种工程技术,使得软件在转化不同国家的语言、风俗习惯时不需要修改源码的技术。
国际化测试
除了基本功能外,还要检测本地化后各项功能是否发生变化、时间日期等是否适应不同国家的文化风俗等…
举例: Windows、word
本地测试
在进行软件开发时,对原始语言开发的软件进行语言处理和工程处理,可以生成不同的语言版本。
按测试对象划分
业务测试:是测试人员把系统各个模块串接起来运行、模拟真实用户实际的工作流程,满足用户需求定义的功能来进行测试的过程。
界面测试
对界面各种东西的细节细致检测
测试内容:
- 文字大小、字体排版颜色等
- 图片清晰度大小排版色彩等
- 危险操作是否有友好提示
- 控件是否正常:对话框、弹出框、对话框
- 按钮亮度显示:有效高亮、无效置灰
容错性测试
当系统出现一些异常,或者用户输入错误信息,进行异常操作,系统可以自我处理这些错误情况,不会出现崩溃、页面异常等情况,可以给用户友好提示。
- 数据容错性:时间、日期、数字
- 校验容错性:例如查询信息前后加空格,trim去掉、大小写不敏感,大小写转换、验证码、数据信息一致性:密码输入两次(校验)
- 信息级别:表单异常关闭是否会自动保存、同一数据被不同人操作时,是否会被锁定(多线程原子性–腾讯文档)。、同一账号下不同平台操作是否同步
- 界面容错性:复杂操作有说明提示、用户执行有风险操作时有提示
- 环境容错性:网络、电源、服务器无缝切换备用网络,保证用户体验流畅无感知
- 灾难恢复性测试:人为的让服务器或依赖的环境发生故障,测试系统是否具有自我修复能力。
兼容性测试
指软件之间能否很好的运作、是否会影响、软件和硬件之间能否发挥很好的效率工作,是否会导致系统崩溃。
- 系统所在平台兼容性
- 软件本身向前或向后的兼容性
- 软件和其他相关软件的兼容性
- 数据兼容性
易用性测试
符合标准和规范:为便于用户使用,开发时要遵循一定的易用性标准(前期开发经验),越来越贴近人类使用习惯。
|