测试的分类可以分为以下几类. 本篇文章将大致介绍这几类测试.
界面是软件与用户进行交流的工具, 是软件提供给用户的可视化界面, 用户可以通过界面与软件进行交互. 一个美观的界面可以给用户留下良好的印象.
界面测试又称为UI测试, 测试的依据是UI设计稿, 测试的内容主要有以下几点:
可靠性指的是系统正常运行的能力. 又称可用性, 用正常运行时间/(正常运行时间+非正常运行时间)*100%
来表示
可用性指标一般要求达到4个或5个9, 即99.99%或99.999%. 对于不同的应用系统, 可用性要求不一样.
对于可靠性测试, 需要使用测试工具.
容错性是指系统对于用户输入了一个非法数据, 或用户操作错误, 不会使系统奔溃.
对于容错性测试可以采用下面的方法.
文档测试是测试文档的专业术语, 文档的正确性, 完整性, 一致性, 易用性等.
软件开发中的文档有开发文档, 用户文档, 管理文档等.
兼容性测试主要涉及以下几个方面:
易用性测试验证用户使用起来是否方便流畅
安全测试属于非功能测试中很重要的一个方面
软件运行过程中越来越慢, 查询数据时的响应速度长等问题都属于性能问题. 常见性能问题有如下几种:
衡量一个系统性能好坏的关键性指标有, 响应用户时间, 事务平均响应时间, 吞吐率, 内存和cpu使用率.
内存泄露问题对于缺乏自动垃圾回收机制的语言编写的系统中更为常见, 内存泄露是可积累的, 当耗尽所有内存之后, 软件的执行就会越来越慢, 最后奔溃.
对于内存泄露的测试方法:
按是否查看代码可以划分为黑盒测试和白盒测试.
黑盒测试, 又叫数据驱动测试, 只注重系统的功能, 而忽略代码的内部逻辑和结构. 直接按照需求说明测试软件功能是否符合功能描述.
黑盒测试的优点:
黑盒测试的缺点: 不能覆盖所有代码.
白盒测试又称为逻辑测试 / 结构测试, 关注代码内部结构和逻辑, 忽略业务功能, 针对程序的逻辑结构来设计测试用例.
白盒测试的测试目的是, 通过检查软件内部的逻辑结构, 对软件中的逻辑结构进行覆盖测试.
白盒测试有六种测试方法: 语句覆盖, 判定覆盖, 条件覆盖, 判定条件覆盖, 条件组合覆盖, 路径覆盖.
白盒测试的优点: 代码覆盖率高
白盒测试的缺点: 业务逻辑覆盖率低
灰盒测试是介于白盒和黑盒测试之间的一种测试, 灰盒测试多用于集成测试阶段. 不仅关注业务逻辑, 同时也关注着代码内部的情况.
测试金字塔
从上到下依次是ui测试, 业务测试, 单元测试. 越靠下的排查成本越低. 越靠上越靠近用户.
单元测试是对软件最基本的组成单元进行测试. 测试的对象是软件设计的最小单位:函数/方法. 又称为模块测试.
测试阶段: 编码后或这编码前
测试对象: 函数/方法等最小模块
测试人员: 白盒测试工程师或软件开发工程师
测试依据: 代码, 注释, 详细设计文档
测试方法: 白盒测试
单元测试完之后, 对多个单元结合起来所对应的接口进行测试. 主要是检查软件单位之间的接口是否正确.
测试阶段: 单元测试之后
测试对象: 模块间的接口
测试人员: 白盒测试工程师或开发工程师
测试依据: 概要设计文档.
测试方法: 黑盒测试和白盒测试
测试内容: 模块之间的数据传输, 功能冲突等.
系统测试是对整个软件系统的测试, 包括了功能, 性能, 环境等的测试.
测试阶段: 集成测试完成之后
测试对象: 整个系统
测试人员: 黑盒测试人员
测试依据: 需求规格说明书.
测试方法: 黑盒测试
测试内容: 功能, 性能, 兼容, 安全, 界面, 易用性, 可靠性等
回归测试是指修改了代码之后, 重新进行测试确认修改没有引入新的错误或导致其他代码产生了错误. 软件开发的各个阶段会多次进行回归测试, 随着系统的逐步完善, 回归测试的成本也会逐渐扩大.
冒烟测试的对象是每一个新编译的正式测试的软件版本, 也就是测试此次开发新加的需求, 目的是确认软件本次新加的主要功能和核心流程正常. 回归测试和冒烟测试都属于系统测试, 但是冒烟测试在正式进行系统测试之前进行, 由开发人员先进行冒烟测试, 然后由测试人员进行冒烟测试. 冒烟测试通过之后, 测试人员开始正式的系统测试.
验收测试通常由产品经理或运营进行, 是产品上线之前最后的一个测试流程. 又称为交付测试. 目的是确保软件准备就绪.
测试阶段: 系统测试之后
测试对象: 整个系统
测试人员: 最终用户或需求方.
测试依据: 用户需求, 验收标准(由测试人员编写)
测试方法: 黑盒测试
介于开发方和用户方间的组织(公司中单独的组织)的测试
不运行代码, 静态分析检查源代码, 检查程序的正确性.
运行被测试系统, 输入测试用例, 检查输出结果是否与预期结果相符合.
手工测试由人工手动输入一个个的测试用例. 执行效率慢, 手工测试出错率大, 但是可以进行探索性测试, 具有发散性思维.
自动化测试是将以人为手工的测试行为转化为机器执行.
按照功能划分分为功能测试自动化, 性能测试自动化, 安全测试自动化
按照测试对象可以分为接口测试, UI测试等.
下篇文章将具体介绍自动化测试.
如果系统不止国内使用, 则需要进行国际化测试, 要有与对应国家相适应的语言, 日期, 界面风格等.