软件测试

测试的类型:

测试的4个阶段:

测试的4个内容:

测试人员会写代码的必要性:

测试金字塔

下面一层的测试通常要比上面一层的测试多一个数量级,因为越往上的测试,反馈周期越长,出了错误就没有那么快可以解决

测试象限

优秀的测试思维

测试全流程

代码的可测性

单元测试 -> 研发人员自测 -> 集中测试 -> 回归测试

影响代码可测性因素:

目标

发现错误

软件测试与软件调试

过程

批注 2019-07-26 084959

原则

对计算机软件进行测试前,首先需遵循软件测试原则,即不完全原则的遵守。不完全原则即为若测试不完全、测试过程中涉及免疫性原则的部分较多,可对软件测试起到一定帮助。因软件测试因此类因素具有一定程度的免疫性,测试人员能够完成的测试内容与其免疫性成正比,若想使软件测试更为流畅、测试效果更为有效,首先需遵循此类原则,将此类原则贯穿整个开发流程,不断进行测试,而并非一次性全程测试。

测试用例

测试用例是通过使用在测试计划中确定的测试技术,对于已确定的测试条件进行逐步推敲,精炼而设计出来的重点说明如何具体操作产生何种结果的文档

只有深入地理解软件的架构、实现的细节、引入覆盖率来度量测试用例,才能设计出足够优秀的测试用例

等价类划分法

是把所有的输入数据,即程序的输入域划分为若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例

只要从每个等价类中任意选取一个值进行测试,就可以用少量具有代表性的测试输入取得较好的测试覆盖结果,同时还要找出所有的无效等价类代表无效的输入

边界值法

通常边界值分析法是作为对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界,通常选取正好等于、刚刚大于或刚刚小于边界的值作为测试数据

场景法

通过运用场景来对系统的功能点或业务流程的描述

错误推测法

根据经验或直觉推测程序中可能存在的各种错误,从而有针对性地编写检查这些错误的测试用例的方法

测试覆盖率

一类是面向项目的需求覆盖率,另一类是更偏向技术的代码覆盖率:

代码覆盖率反映的仅仅是已有代码的哪些逻辑被执行过了,哪些逻辑还没有被执行过,高的代码覆盖率不一定能保证软件的质量,但是低的代码覆盖率一定不能能保证软件的质量

白盒测试

黑盒测试

缺陷报告要素

测试计划

测试范围

明确“测什么”和“不测什么”

测试策略

明确测试的重点,以及各项测试的先后顺序,还需要说明采用什么样的测试类型和测试方法

功能测试:主线业务的功能测试由于经常需要执行回归测试,通常应该先实现主干业务流程的测试自动化,还要评估被测软件的可测试性,如果有可测试性的问题,需要提前考虑切实可行的变通方案

兼容性测试:功能基本都稳定了,才会开始兼容性测试,需要考虑好适配哪些客户端

性能测试:需要在明确了性能需求(并发用户数、响应时间、事务吞吐量等)的前提下,结合被测系统的特点,设计性能测试场景并确定性能测试框架

测试资源

规划测试人员、规划测试环境

测试进度

主要描述各类测试的开始时间,所需工作量,预计完成时间,并以此为依据来建议最终产品的上线发布时间

风险评估

通常需求变更、开发延期、发现重大缺陷和人员变动是引入项目测试风险的主要原因,就要预估整个测试过程中可能存在的潜在风险,以及当这些风险发生时的应对策略

自测

确定好数据,执行过程,保存相关测试结果

正式提交测试前修复自测的这些问题,并将自测问题反映给QA,研发测试密切配合

计划

内容

执行

系统测试

功能测试

压力测试

逐步增加流量 直至系统崩掉 得到流量的最佳状态及性能拐点

负载测试

得到某些指标在资源达到临界值时系统的最大负载量

稳定性测试

在主链路或者特定场景在一定负载条件下长时间运行 发现不稳定的因素或系统瓶颈

兼容测试

安全测试

探索测试

回归测试

变更后验证的内容:

回归的时机:功能冻结、Bug冻结、环境稳定与线上一致

众测

移动端测试

测试平台

测试数据

对于相对稳定的测试数据,往往采用 Out-of-box 的方式以提高效率。而对于那些只能一次性使用的测试数据,往往采用 On-the-fly 的方式以保证不存在脏数据问题

自动测试数据生成

平台

将测试数据的准备服务化、平台化、标准化:

2023117154121

代码测试

常见代码错误

  1. 语法特征错误
  2. 边界行为特征错误:在执行过程中发生异常,崩溃或者超时
  3. 经验特征错误:==写成=...
  4. 算法错误
  5. 部分算法错误:在一些特定的条件或者输入情况下,算法不能准确完成业务要求实现的功能

静态测试方法

动态测试方法

测试基础架构

最基础的

考虑多执行节点、大量测试用例执行、用例版本控制、动态扩缩容等

服务化

探索式测试

一种软件测试风格,强调独立测试工程师的个人自由和责任,其目的是为了持续优化其工作的价值,在整个项目过程中,将测试相关学习、测试设计、测试执行和测试结果解读作为相互支持的活动,并行执行

精准测试

测试与覆盖行的双向映射

基于模型的测试

将测试用例的设计依托于被测系统的模型,并基于该模型自动生成测试用例的技术

stateDiagram-v2  需求 --> 模型: 开发者  模型 --> 测试对象  测试对象 --> 测试报告: 生成  测试对象 --> 测试用例: 生成  测试对象 --> 测试用例: 执行