如何设计自动化测试case?

目录

前言

如何设计测试case?

UI自动化

API自动化

UNIT自动化

设计case要注意什么?

最后:【可能给予你助力的教程】


前言

这篇文章我想跟大伙聊聊设计自动化测试case的一些实践和观点。

为什么要设计case?

无论是功能测试还是自动化测试甚至性能测试,设计测试case都是必须的。

当然,不同的测试类型,在设计测试case时候的侧重点和颗粒度是不同的。

设计测试case的目的,我个人认为主要有如下几点原因:

便于测试活动开展

测试工作的本质是尽可能以更高的效率保障交付产出物的质量满足甚至超出预期,这是所有测试工作的最终目标。

但在实际的工作实践中,绝大多数的测试工作都是围绕测试case来开展。比如:case评审/冒烟测试/提测检查/case执行/bug提交/bug跟踪和修复验证,直至最终线上发布。

确保业务场景覆盖

软件测试工作,简单来说就是通过设计各种场景并进行检查,确保交付的软件符合预期设计结果。

无论是功能测试采用的等价类边界值方法,还是自动化测试分层的概念,都是希望通过一定的方法和手段,尽可能的保障业务场景覆盖,避免遗漏所导致的问题逃逸到线上,影响最终交付产出物的质量。

质量度量和质量内建

无论是质量度量还是近几年业内所提倡的质量内建,其实都和测试case息息相关。

在前面的文章《聊聊我对质量度量的看法》中我提到过,质量度量分为三个阶段,分别是:

  1. 需求设计质量;
  2. 研发过程质量;
  3. 用户使用质量;

而测试case是研发过程质量中很重要的组成部分,或者可以理解为测试case是研发过程阶段各项测试工作开展的核心。

测试case具备“粒度最小+耗时最久”的特点,我们常说的通过各种测试技术手段多维度去验证软件是否符合预期,都是验证和保障交付质量的手段。而流程规范、度量标准,也是为了保障最终的交付物达标。

如何设计测试case?

按照分层测试理念,金字塔模型中,越是向下,投入/产出比就越高,但开展的难易程度/成本和技术要求就越高。

聊到如何设计自动化测试case,这里我并不会就着某些细节去拼命挖掘,而是分为UI自动化/API自动化/UNIT自动化各自展开来阐述我的一些思路和想法。

UI自动化

UI层是用户使用产品的入口,所有功能通过这一层提供给用户,功能测试工作大多集中在这一层。

如上图所示,要开展UI自动化,在设计case时候要针对性评估和筛选适合的业务场景,当然在实际工作实践中,不可能完全满足上述条件。一般来说只要满足如下几点,就可以开展UI自动化测试:

1、需求稳定,不会频繁变更

UI自动化测试最大的挑战就是需求和UI频繁变化,脚本需要修改、扩展去适应新的改动,如果频繁修改会导致投入产出比太低,那么UI自动化测试也失去了其价值和意义。

折中的做法是选择相对稳定的模块和功能进行自动化测试,变动较大、需求变更较频繁的部分手动回归。

2、多平台运行,组合遍历型、大量的重复任务

测试数据、测试用例、自动化脚本的重用性和移植性较强,降低成本,提高效率和价值。

3、软件维护周期长,有生命力

UI自动化测试的需求稳定性要求、自动化框架的设计、脚本开发与调试均需要时间,这其实也是一个软件开发过程,如果项目周期较短,没有足够的时间去支持这一过程,那自动化测试也就不需要了。

4、被测系统UI设计较为规范,可测试性强

主要出于这几点考虑:被测试系统UI差异、测试工具适应性、测试人员能力能否快速上手并落地;

API自动化

从测试分层金字塔模型来说,API自动化测试是综合性价比最高的一种测试手段。在设计case时可遵循如下顺序:

  1. 明确要开展API自动化测试的业务范围;
  2. 针对业务范围内的接口,区分优先级(一般都是先覆盖P0/P1);
  3. 梳理接口对应的业务场景(优先保障正向的业务场景覆盖,如下单是正向,取消订单是逆向);
  4. 明确接口对应的数据类型(包含哪些字段/对应数据库的表字段/必填非必填/验签鉴权特殊账号权限等);
  5. 准备测试数据,接口调试通畅(先确保单接口单场景的覆盖,再考虑复杂场景的各种依赖和业务链路串联);
  6. 自动化执行起来,边执行边观察效果,不断优化(切忌大而全的过度设计);

UNIT自动化

单元测试(unit testing),是指对软件中的最小可测试单元进行检查验证,最初都是由开发来完成,即保障自己所在环节的交付产出物满足进入下一阶段的标准。

关于单元测试,我的观点是测试需要介入这个环节,尽可能早的去测试验证发现问题,但并不表示测试需要在这个环节什么都自己来做。在设计单元测试case和执行方面,可以考虑如下几点:

  1. QA和DEV针对单元测试case级别达成共识;
  2. QA和DEV在单元测试环节进行合作共建和职责边界划分;
    1. QA提供用例,DEV进行实现;
    2. QA提供的用例需要经过评审并通过;
    3. QA进行Check和校验(度量维度和评估指标与开发达成一致);
  1. 设定优先级,从P0核心模块开始实现;
  2. 覆盖范围以service核心模块,新增功能优先;
  3. 在code review阶段,对单元测试实现情况进行检查;
  4. 需要通过实施前后不同维度的比较度量来评估能否带来收益;
    1. 数据度量:覆盖率、通过率;
    2. 发现bug数:线上问题、线下发现的block bug;
    3. 度量粒度:小到最底层函数级别,大到代码类方法;
    4. 测试用例:单元测试的实现和度量,一定是case by case的;

更多内容,大家可以参考我前面的文章《测试需要做单元测试吗?》。

设计case要注意什么?

由简到难,适可而止

不同维度的自动化测试case设计和实施,都是覆盖范围越大/粒度越小,投入成本越大,这是个边际递减的问题。

现在很多企业都提倡研发效能和快速迭代,这种时候就不能慢工出细活了,要考虑如何以更小的投入和更快的速度完成核心场景覆盖,达到快速验证的目的,不要太过于追求所谓的覆盖率和case数量等度量指标。

切记不要面向质量度量和KPI搞自动化测试,这样容易捡了芝麻丢了西瓜

可观察,可验证,可度量

在设计自动化测试case时还应注意这三点:

  1. 可观察:case执行过程需要能够直观的进行观测,比如抛异常或数据写入变更;
  2. 可验证:自动化case的结果是否符合预期,一定要通过断言或其他验证方式进行确认;
  3. 可度量:自动化执行的结果要可度量(不要面向质量度量搞自动化,但没有度量的自动化测试没有意义)

结语

这篇贴子到这里就结束了,最后,希望看这篇帖子的朋友能够有所收获。

如果你觉得文章还不错,请大家 点赞、分享、留言 下,因为这将是我持续输出更多优质文章的最强动力!

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
pytest是Python中最流行的测试框架之一,它支持使用yaml格式来编写测试用例。以下是使用pytest和yaml编写测试用例的步骤: 1. 安装pytest和pyyaml: ```python pip install pytest pyyaml ``` 2. 创建一个yaml文件,文件名可以是任意的。在文件中,我们可以定义多个测试用例,每个测试用例包含以下信息: - name: 测试用例名称 - input: 测试用例输入 - expected_output: 测试用例预期输出 例如: ```yaml - name: addition_test input: a: 1 b: 2 expected_output: 3 - name: subtraction_test input: a: 5 b: 2 expected_output: 3 ``` 3. 在pytest测试文件中使用yaml文件中的测试用例。我们可以使用pyyaml库将yaml文件解析为Python对象,然后在pytest中使用它。 ```python import yaml def test_yaml_cases(): with open('test_cases.yaml', 'r') as f: test_cases = yaml.load(f, Loader=yaml.FullLoader) for case in test_cases: input_data = case['input'] expected_output = case['expected_output'] assert your_function(*input_data.values()) == expected_output ``` 在上面的代码中,我们首先打开yaml文件并使用pyyaml库将其解析为Python对象。然后,我们迭代测试用例并执行测试。对于每个测试用例,我们使用字典的values()方法获取输入数据的值并将其作为参数传递给被测试的函数。最后,我们断言函数的实际输出与测试用例的预期输出相同。 4. 运行pytest测试框架来验证我们的测试用例是否可以正常工作。 ```python pytest test_yaml_cases.py ``` 通过上述步骤,我们可以快速有效地设计和执行测试用例。使用pytest和yaml编写测试用例不仅可以提高代码质量,还可以帮助开发人员减少繁琐的测试工作,从而更好地专注于软件开发。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值