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:断言

举个例子

# arrange and act

打开chrome浏览器并跳转至http://localhost/wordpress/wp-login.php

在用户名文本框中输入admin 在密码文本框中输入admin

点击登陆按钮

# assert

浏览器跳转到http://localhost/wordpress/wp-admin/

右上角出现“你好,admin”字样

总结

总之对于接口的自动化测试用例来说,遵循3A原则就意味着

        •  Arrange:测试用例执行之前需要准备测试数据,包括需要输入的数据及存量数据

        •  Act:通过不同的参数来调用接口,并拿到返回

        •  Assert:b必须做断言,否则用例就没有任何意义了

 

更多精彩详见“http://www.testclass.net/interface/”

 

posted @ 2017-09-25 14:13  zhangmeng117  阅读(1856)  评论(0)    收藏  举报