自动化测试的主要任务是回归测试,所以不可能一个一个地去执行测试用例。要根据测试的目的来组织测试用例,规划测试用例的架构。以方便测试用例的执行,测试用例的调试,出错的时候问题定位以及测试用例的维护等。
5.1 自动化架构规划
也许是个人原因吧,我比较喜欢测试数据和测试用例分开的规划方式。这样的规划一是比较明确,二是如果出现了问题,我们定位问题的时候比较方便。三是如果被测对象有任何改动,我们只需要修改测试数据就可以了,不需要修改测试用例。
兼于以上优点,我们现在讨论一下自动化架构的规划。和Web自动化一样,我们做如下规划,在工程中创建以下文件夹:
(1)CommonClass:文件夹下存放所有的公共函数,常用的引用或是通用操作等等。
(2)Source:存放配置文件,图片资源或是其他静态资源。
(3)TestCases:存放具体的测试用例文件,一个测试用例文件最好是针对一个接口的所有测试用例,如果用例比较多可以分成多个测试文件。
(4)TestData:和测试用例文件相匹配的测试数据文件,以xml文件存方数据,数据的组织形式以测试用例为单位对应该xml文件中的一个节点。
(5)TestSuites:根据不同的测试需要,把测试用例组织成不同的测试套件,然后在相应的环境中配置执行。
经过这样的规划,我们再写自动化测试用例的时候,在相应的文件夹下添加对应的内容即可。
5.2 CommonClass文件夹内容讲解
CommonClass中存放的是我们的公共函数,根据我们的接口自动化测试的需要,我们要创建以下几个文件:
(1)CurlOperation.php 此文件的主要功能是实现对接口的调用,根据传递过来的参数,执行不同的代码。代码如下:
<?php
/**
* 具体的接口调用操作
*
* @author SXF
*/
class CurlOperation {
public static functionFetch($url, $get_params, $post_params=null) {
$str = '';
if(isset($get_params) && !empty($get_params)) {
$arr =array();
foreach ($get_paramsas $key => $value) {
array_push($arr, $key . '=' . urlencode($value));
}
$str =implode("&", $arr);
}
if (strpos($url,"?") !== FALSE) {
$url = $url .'&' . $str;
} else {
$url = $url .'?' . $str;
}
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch,CURLOPT_HEADER, 0);
curl_setopt($ch,CURLOPT_HTTPHEADER, array(
"User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US;rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 (.NET CLR 3.5.30729)",
"Accept-Language: