如何编写高质量的测试用例?这些方法论一定得知道...

文章讲述了单元测试、服务间接口测试以及手工测试用例的编写,强调了3A原则(Arrange、Act、Assert)的重要性。同时提到,测试用例的维护成本高,需求变化时需及时更新。TDD测试驱动开发旨在解决需求与用例同步的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

单元测试用例

单元测试用例有人总结出来了编写用例的3A原则,分别是

  • Arrange: 初始化测试对象或者准备测试数据

  • Act : 调用被测方法

  • Assert: 断言

给一个例子

[TestMethod]  
public void Withdraw_ValidAmount_ChangesBalance()  
{  
    // arrange  
    double currentBalance = 10.0;  
    double withdrawal = 1.0;  
    double expected = 9.0;  
    var account = new CheckingAccount("JohnDoe", currentBalance);  
    // act  
    account.Withdraw(withdrawal);  
    double actual = account.Balance;  
    // assert  
    Assert.AreEqual(expected, actual);  
}  

服务间的接口测试用例

服务间的接口测试实际上是黑盒测试,3A原则也适用于这种测试用例的编写

  • Arrange: 准备测试数据,这里的方案会有很多

  • Act : 使用各种参数调用被测接口

  • Assert: 断言

举个例子

def test_get_task_by_id(self):
        # arrange
        create_task_res = self.create_task('test', 'desc')
        new_id = create_task_res['id']

        # act
        url_for_get_by_id = self.ip + '/api/tasks/' + str(new_id)
        res = requests.request("GET", url_for_get_by_id).json()
        
        # assert
        self.assertEqual(res['id'], new_id)

手工测试用例

手工的功能测试用例也可以用3A原则来编写。

  • Arrange: 准备被测功能相关的测试数据,比如往系统里录入一批工单以便测试工单的分页功能

  • Act : 调用被测的功能,实际上这就是我们一直讲的测试步骤

  • Assert: 断言

举个例子

# arrange and act
打开chrome浏览器并跳转至http://localhost/wordpress/wp-login.php
在用户名文本框中输入admin
在密码文本框中输入admin
点击登陆按钮
# assert
浏览器跳转到http://localhost/wordpress/wp-admin/
右上角出现“你好,amdin”字样

在一些测试团队中,手工测试用例会在测试人员之间进行传播,比如李雷写了手工测试用例,韩梅梅则是用例的执行者。如果李雷的测试用例写的比较抽象派和印象派,韩梅梅是很难去直接执行的,所以会有一些测试团队强调尽量编写可以让人理解,也就是不用脑补的手工测试用例。但是写的越精确花费的时间就越长,如果项目周期紧张的话,是没有充足的时间去写完备的测试用例的。

在这种情况下,一些有经验的测试人员会写一些测试大纲,相当于是测试备忘录,提醒自己该测哪些情况,不要有遗漏,比如

登录成功的情况
登录失败:用户名密码为空
登录失败:密码不对
登录失败:只输用户名不输密码

用例的维护

用例的维护成本往往是很高的

  • 单元测试用例: 被测代码发生变化时单元测试用例需要相应更新
  • 服务间接口用例:被测服务的接口或逻辑发生变化时需要相应更新
  • 手工测试用例:需求变化了用例就要跟着改

保证用例跟需求的一致性一直是很大的挑战。这也是TDD测试驱动开发所希望解决的问题——如果需求文档直接是可以执行的测试用例,需求跟用例合二为一自然就不存在同步的困难了。

最后:下方这份完整的【软件测试】视频学习教程已经整理上传完成,朋友们如果需要可以自行免费领取 【保证100%免费】

在这里插入图片描述

测试方法论软件测试中一套系统化、结构化的实践,用于指导测试活动的有效执行。将测试方法论应用到测试用例编写时,通常会按照以下几个步骤和模板来进行: 1. **需求分析**: 首先,根据产品或系统的规格说明书,理解功能需求和非功能性需求。这一步明确了测试的目标和范围。 2. **风险评估**: 分析可能的风险和缺陷类型,确定高优先级的功能和场景需要重点测试。 3. **设计测试策略**: 制定测试策略,如选择何种测试方法(黑盒、白盒、灰盒等)、覆盖哪些测试级别(单元测试、集成测试、系统测试、验收测试)。 4. **制定测试用例模板**: 创建一个通用的测试用例模板,包括以下部分: - **测试编号**:用来唯一标识每个测试用例。 - **测试标题**:简洁描述测试的目的。 - **输入数据**:执行测试所需的初始条件或参数。 - **预期结果**:对正常情况下的系统行为的期望。 - **实际结果**:执行后系统的实际输出。 - **操作步骤**:详细列出执行测试的具体步骤。 - **环境信息**:执行测试所需的操作系统、硬件配置等。 - **优先级和严重程度**:评价测试的重要性和紧急度。 - **执行状态和日期**:记录测试的状态和执行时间。 5. **执行与跟踪**: 使用测试管理工具创建并运行测试用例,每次测试后更新实际结果并与预期结果对比。 6. **分析与报告**: 根据测试结果,评估产品质量,生成测试报告,总结发现的问题以及改进建议。 7. **维护与优化**: 定期回顾测试用例,根据产品的变更调整和补充测试用例
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值