3A原则
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
def test_get_task_res=self.creat_task('test','desc')
new_id= creat_task_res['id']
#act
url_for_get_by_id =self.ip +‘/api/tasks/ ’+ str(new_id)
res = requests.request("GET", url_for_by_id).json()
#assert
self.assertEqual(res['id'],new_id)
手工测试用例
手工的功能测试用例也可以用3A原则来编写。
• Arrange:准备被测功能相关的测试数据,比如往系统里录入一批工单以便测试工单的分页功能
• Act:调用被测的功能,实际上这就是我们一直讲的测试步骤
• Assert:断言
举个例子
总结
总之对于接口的自动化测试用例来说,遵循3A原则就意味着
• Arrange:测试用例执行之前需要准备测试数据,包括需要输入的数据及存量数据
• Act:通过不同的参数来调用接口,并拿到返回
• Assert:b必须做断言,否则用例就没有任何意义了
更多精彩详见“http://www.testclass.net/interface/”

浙公网安备 33010602011771号