软件需求
软件需求是测试需求的基础。软件需求分为业务需求、用户需求、功能需求3个层次。
需求包括功能需求和非功能需求两个方面。
测试需求
测试需求是解决“测什么”的问题,是整个测试项目的基础,是制订测试计划、开发测试用例的依据。清晰完整的测试需求有助于保证测试的质量与进度,有助于确保测试的覆盖率。如果没有明确的测试需求就开展测试工作,那么经常会出现需求遗漏、产品质量关注不全面等问题。
测试需求分析的目标是明确测试范围和功能处理过程。
测试分类
- 根据测试阶段
- 单元测试
- 模块测试
- 集成测试
- 系统测试
- 验收测试
- Alpha测试
- Beta测试
- 根据是否执行被测软件
- 静态测试:不运行被测软件,比如需求文档评审、设计文档评审、代码走查等
- 动态测试
- 根据是否使用工具
- 手工测试
- 自动化测试
- 根据测试技术
- 白盒测试:通过对程序内部结构的分析、检测来寻找问题
- 黑盒测试:通过软件的外部表现来发现其缺陷和错误
- 灰盒测试:介于白盒测试和黑盒测试之间的测试,灰盒测试不仅关注输出、输入的正确性,同时也关注程序内部的情况;通过一些表征性的现象、事件、标志来判断内部的运行状态
- 根据测试类型
- 功能测试
- 兼容性测试
- 性能测试
- 用户界面测试
- 安装卸载测试
- 接口测试
- …
测试类型 | 测试内容描述 |
---|---|
功能测试 | 是对产品的各功能进行验证,根据功能需求逐项测试,检查产品是否达到用户要求的功能 |
兼容性测试 | 测试软件在特定的硬件平台上、不同的应用软件之间、不同的操作系统平台上、不同的网络等环境中是否能够正常运行 |
安全性测试 | 针对的是未授权的访问、拒绝访问攻击等,一般包括程序、网络、数据库的安全性测试 |
接口测试 | 是对测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是检查数据的交换、传递和控制管理过程,以及系统间的相互逻辑依赖关系等 |
数据库完整性测试 | 该项测试内容主要以数据库表为单位,检查数据库表及表中各字段命名是否符合命名规范,表中字段是否完整,数据库表中的字段描述是否正确地包括字段的类型、长度,是否为空,数据库表中的关系、索引、主键、约束是否正确 |
用户界面测试 | 即UI测试,测试用户界面功能模块的布局是否合理,整体风格是否一致,各个控件的放置位置是否符合客户使用习惯,操作是否便捷,导航是否简单易懂,界面文字是否正确,命名是否统一,页面是否美观,文字、图片组合是否合适等。除此之外,还要确保 UI功能内部的对象符合预期要求,并遵循公司或行业的标准 |
负载测试 | 负载测试通过改变系统负载方式增加负载等来发现系统中所存在的性能问题。负载测试更多的是一种测试方法,而不是测试类型,可以为性能测试、压力测试所采用。负载测试的加载方式也有很多种,可以根据测试需要来选择 |
性能测试 | 性能测试是为获取或验证系统性能指标而进行的测试。多数情况下,性能测试会在不同的负载情况下进行。性能指标主要有系统吞吐量、响应速度、CPU占用率、内存占用率等 |
压力测试 | 压力测试通常在高负载的情况下来对系统的稳定性进行测试,能更有效地发现系统稳定性的隐患及系统在负载峰值下的功能隐患等 |
疲劳强度测试 | 通过长时间运行系统,测试系统的性能,发现性能问题。测试系统的日常业务(正常情况)和高峰业务(最大业务量)长时间运行的结果 |
恢复性测试 | 测试一个系统从灾难或出错中能否很好地恢复,如系统崩溃、硬件损坏或其他灾难性出错。恢复性测试一般通过人为的各种强制性手段让软件或硬件出现故障,然后检测系统是否能正确恢复(自动恢复和人工恢复) |
配置测试 | 一般是针对硬件配置的测试,测试软件在最低配置和推荐配置情况下是否能够正常运行 |
安装卸载测试 | 确保软件在正常情况和异常情况下都能正确地完成安装和卸载。例如,进行首次安装、升级,或进行完整的或自定义的安装 |
用户文档测试 | 软件文档是软件的一部分,要确保文档能够给用户提供正确的说明或指引,重点关注文档的正确性、完备性及可理解性。交给用户的文档主要有系统帮助、用户使用手册、用户安装手册、示例及模板、图像和声音帮助、用户许可协议等 |
可用性(易用性)测试 | 让一群具有代表性的用户对产品进行典型操作,同时观察员和开发人员在一旁观察,聆听,做记录。可用性有5 个指标,分别是易学性、易记性、容错性、交互效率和用户满意度 |
稳定性(可靠性)测试 | 稳定性测试通过给系统加载一定的业务压力,让系统持续运行一段时间(一般为7x24h),检测系统是否能够稳定运行 |
内存泄漏测试 | 内存泄漏是指用动态存储分配函数动态开辟的空间,在使用完毕后未释放,导致一直占据该内存单元,直到程序结束。内存泄漏测试就是测试有没有内存空间使用完毕之后未回收的情况,一般使用专门的检测工具 |
本地化测试 | 也称为国际化测试,有些产品为了满足特定区域用户的需要,有多个语言版本,比如简体中文、繁体中文、英文、日文等。本地化测试针对特定目标区域性或区域设置的产品进行测试,在本地化的软硬件环境下测试界面、安装、卸载等内容,也要关注产品目标地区的文化、 宗教、喜好等适用性测试 |
软件测试类型分析
- 不同的测试类型分析产品的角度不同
- 不同的测试阶段重点采用的测试类型也不同
- 不同的测试类型会发现不同类型的缺陷
- 不同的测试类型有不同的测试方法
- 不同的产品对应的测试类型的集合可能有很大的不同
移动APP软件测试类型 | 测试涉及的内容简介 |
---|---|
安全测试 | 软件授权注册 软件获取系统的权限,比如访问联系人信息等 |
用户界面测试 | 测试用户界面,包括导航、布局、文字、图片、配色等 |
功能测试 | 对需求文档中的功能进行测试 |
性能测试-响应速度测试 | 正常环境下,APP中的关键操作响应时间能否满足用户要求,比如安装、升级、卸载响应时间,APP启动时间,其他关键操作响应时间(搜索、上传、下载等) |
性能测试-极限测试 | 在极限条件下APP的响应速度测试,比如电量低、存储空间紧张、网速慢等运行环境比较差的情况 |
性能测试-资源占用率测试 | 典型场景下系统资源(CPU、内存)的使用情况,如 APP启动后,APP加载数据后(打开一个文件或显示了一些数据), APP长时间反复操作后 |
兼容性测试 | 不同操作系统的兼容性 不同手机分辨率的兼容性 不同手机品牌的兼容性 |
交叉事件测试 | APP在运行过程中,另外一个事件或操作发生时的测试,比如有来电、收发邮件等 |
安装卸载测试 | 在主流的系统和不同手机品牌上开展测试,包括 APP 安装、升级更新、卸载 |
建立软件的测试类型列表
- 参考以往的项目经验
- 对照软件特性寻找对应的测试类型
质量特性 | 质量特性说明 | 子特性 | 对应的测试类型 |
---|---|---|---|
功能性 | 与一组功能及其指定的性质有关的一组属性。这里的工鞥指满足明确或隐含需求的功能 | 适合性 | 功能测试 |
准确性 | 功能测试、负载测试、压力测试、疲劳强度测试 | ||
互操作性 | 接口测试 | ||
保密安全性 | 安全性测试 | ||
功能型依从性 | 功能测试 | ||
可靠性 | 在规定的一段时间和条件下,与软件维持其性能水平的能力有关的一组属性 | 成熟性 | 功能测试、疲劳强度测试、稳定性测试 |
容错性 | 安全性测试、接口测试、完整性测试、疲劳强度测试 | ||
易恢复性 | 恢复性测试 | ||
可靠性依从性 | |||
易用性 | 与一组规定或潜在的用户为使用软件所需做的努力和对这样的使用所做的评价有关的一组属性 | 易理解性 | 用户界面测试 |
易学习性 | 用户界面测试、用户文档测试 | ||
易操作性 | 用户界面测试 | ||
吸引性 | 用户界面测试 | ||
易用性依从性 | |||
效率 | 与在规定条件下软件的性能水平和所用资源量之间的关系有关的一组属性 | 时间特性 | 负载测试、压力测试、性能测试 |
资源利用特性 | 负载测试、压力测试、性能测试、内存泄漏测试 | ||
效率依从性 | |||
可维护性 | 与进行指定的修改所需的努力有关的一组属性 | 易分析性 | |
易改变性 | |||
稳定性 | |||
易测试性 | 功能测试 | ||
维护性依从性 | |||
移植性 | 与软件可以从某一环境转移到另一环境的能力有关的一组属性 | 适应性 | 配置测试 |
易安裝性 | 安装测试 | ||
共存性 | 兼容性测试 | ||
易替换性 | 兼容性测试 | ||
可移植性的依从性 |