5.3A原则
乙醇 创建于 about 7 years 之前
最后更新: less than a minute 之前
阅读数: 235
3A原则原本是单元测试用例编写时应该遵循的基本原则,不过我们可以扩展到接口的自动化测试用例编写中来。
我们首先看一下3A原则在每一层自动化测试中的具体应用。
单元测试用例
- Arrange: 初始化测试对象或者准备测试数据
- Act : 调用被测方法
- Assert: 断言
给一个例子(c#)
[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原则也适用于这种测试用例的编写
- A: arrange 初始化测试数据,就是造数据,这里的数据有我们输入的数据,也有目标接口所涉及的资源,比如hr系统中的用户信息,我们必须先有几条人员的详细信息才能去测获取人员信息的接口(当然只是正常的流程,我们有时候还需要清掉数据以便测试资源为空的情况);
- A: act 调用接口,传入输入数据;
- A: assert 断言, 对返回的资源信息进行断言,比如获取用户信息的接口返回了用户信息之后,我们要判断返回的用户是不是我们想要的那个用户,我们获取的是李雷的信息,接口如果返回韩梅梅,那么接口的逻辑就是不对的;
举个例子(python)
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/
右上角出现“你好,admin”字样
总结
总之对于接口的自动化测试用例说来,遵循3A原则就意味着
- Arrange: 测试用例执行之前需要准备测试数据,包括需要输入的数据及存量数据
- Act: 通过不同的参数来调用接口,并拿到返回
- Assert: 必须做断言,否则用例就没有任何意义了