上一节说了在Ubuntu安装PHPUnit和Selenium,这一节中我们正式开始小试牛刀,看看这个效怎么样o(∩∩)o...
题外话
先说一下我当前的环境
OS: Ubuntu 12.10
PHPUnit: 3.7.21
Selenium: selenium-server-standalone-2.33.0
Java: 1.7.0_15
首先运行Selenium,大家把jar包下载后随便放在一个地方就可以了,具体如下图所示:
图1 运行命令
我现在做的这个测试是我们APP的一个【积分兑换】功能的自动化测试。
主要分一下三个大的步骤:
1.用户进行积分兑换申请;
2.通过用户积分申请的审核;
3.核对汇款信息,进行汇款。
说一下我们的预置和后置条件
1.申请前用户积分的总数,用户冻结积分数
2.通过审核后用户积分总数,用户冻结积分数
3.汇款成功后用户积分总数,用户冻结积分数
三、操作实例
1.设置测试中用到的常量和单元测试前的初始化工作和资源释放工作
注:中间有一些获取必要信息的方法,可能设置敏感信息,所以就不贴代码啦!
五、结束语
因为我也是刚接触自动化测试,如果有不对的地方请包涵,欢迎大家一起讨论。
题外话
先说一下我当前的环境
OS: Ubuntu 12.10
PHPUnit: 3.7.21
Selenium: selenium-server-standalone-2.33.0
Java: 1.7.0_15
PHP: 5.4.6
首先运行Selenium,大家把jar包下载后随便放在一个地方就可以了,具体如下图所示:
图1 运行命令
图2 日志信息
我现在做的这个测试是我们APP的一个【积分兑换】功能的自动化测试。
主要分一下三个大的步骤:
1.用户进行积分兑换申请;
2.通过用户积分申请的审核;
3.核对汇款信息,进行汇款。
说一下我们的预置和后置条件
1.申请前用户积分的总数,用户冻结积分数
2.通过审核后用户积分总数,用户冻结积分数
3.汇款成功后用户积分总数,用户冻结积分数
三、操作实例
1.设置测试中用到的常量和单元测试前的初始化工作和资源释放工作
var $user_id;//用户ID
var $order_id;//订单号
var $op_id;//操作员ID
var $exchange_grade;//兑换积分数
/**
* @description 每个单元测试前初始化
*/
public function setUp()
{
$this->setBrowser('firefox');
$this->setBrowserUrl('http://www.baidu.com');
$this->user_id = 100166;
$this->op_id = 11;
$this->exchange_grade = 100;
}
/**
* @description 每个单元测试运行后资源释放工作
*/
public function tearDown()
{
unset($this->user_id);
unset($this->order_id);
unset($this->op_id);
unset($this->exchange_grade);
}
2.根据积分兑换的三个步骤设置3个testCase
/**
* 测试用例:积分申请
* 预置状态
* 1.用户积分总数不变,冻结积分数不变
* 执行操作
* 积分申请
* 预期结果
* 1.用户积分总数不变,冻结积分数增加
* 2.生成订单信息
*/
public function testApply()
{
//提取预置数据
$preReturnJson = $this->getResultJson();
$preScoreJson = json_decode($preReturnJson);
$this->assertEquals($preScoreJson->code,0);
echo "预置用户".$this->user_id."积分读取成功。预置总积分值为:".$preScoreJson->user_info->grade_num.",预置冻结积分值为:".$preScoreJson->user_info->freeze_grade_value."\r\n";
//执行操作
$apply_exchange_json = '{"op_type":"1023","ver":"1111","user_id":"'.$this->user_id.'","task_id":"12","c_type":"1","card_num":"1367494852","bank_name":"%E5%BB%BA%E8%A1%8C","card_holder":"sdfsfsfd","exchange_grade":"'.$this->exchange_grade.'","exchange_rmb":100,"sid":"ipengsid"}';
echo "socre_exchange_api_1023:".$apply_exchange_json."\r\n";
$applyReturnJson = $this->getResultString($apply_exchange_json);
$applyScoreJson = json_decode($applyReturnJson);
$this->assertEquals($applyScoreJson->code,0);
echo "用户".$this->user_id."申请积分兑换成功"."\r\n";
}
/**
* 测试用例:订单审核通过
* 预置状态
* 1.用户积分总数不变,冻结积分数不变
* 2.订单审核状态不变,为未审核状态
* 执行操作
* 通过审核
* 预期结果
* 1.用户积分总数不变,冻结积分数不变
* 2.订单审核状态改变,为已审核状态
*/
public function testCheck()
{
//读取申请成功后用户数据
$preReturnJson = $this->getResultJson();
$preScoreJson = json_decode($preReturnJson);
$this->assertEquals($preScoreJson->code,0);
echo "预置用户".$this->user_id."积分读取成功。预置总积分值为:".$preScoreJson->user_info->grade_num.",预置冻结积分值为:".$preScoreJson->user_info->freeze_grade_value."\r\n";
$order_info = $this->getOrderIdByUid(1);
$this->order_id = $order_info[0];
echo "订单数据读取成功,Order_id为:" . $this->order_id . "\r\n";
$check_pass = $this->checkOrderInfo();
$this->assertEquals($check_pass, 1);
echo "订单" . $this->order_id . "通过审核\r\n";
}
/**
* 测试用例:订单汇款
* 预置状态
* 1.用户积分总数不变,冻结积分数不变
* 2.订单审核状态不变,为等待汇款状态
* 执行操作
* 订单汇款
* 预期结果
* 1.用户积分总数减少,冻结积分数减少
* 2.订单审核状态改变,为已汇款状态
*/
public function testRemit()
{
$order_info = $this->getOrderIdByUid(2);
$_order_id = $order_info[0];
$_op_id = $this->op_id;
$_exchange_grade = $this->exchange_grade;
$pass_input_json = '{"op_type":"1030","ver":"","user_id":"' . $this->user_id . '","task_id":"","c_type":"0","exchange_grade":"'.$_exchange_grade.'","exchange_result":"0","op_id":"'.$_op_id.'","order_id":"'.$_order_id.'","state":"4"}';
echo "remit_api_1030:" . $pass_input_json . "\r\n";
$pass_return_json = $this->getResultString($pass_input_json);
$pass_info = json_decode($pass_return_json);
$this->assertEquals($pass_info->code, 4);
echo "后置用户" . $this->user_id . "积分兑换成功,兑换积分为" . $order_info[2] . "\r\n";
$afterReturnJson = '{"op_type":"1029","user_id":"' . $this->user_id . '","auth_key":"e10adc3949ba59abbe56e057f20f883e"}';
$afterScoreJson = json_decode($this->getResultString($afterReturnJson));
$this->assertEquals($afterScoreJson->code, 0);
echo "后置用户" . $this->user_id . "积分读取成功。后置总积分值为:" . $afterScoreJson->user_info->grade_num . ",后置冻结积分值为:" . $afterScoreJson->user_info->freeze_grade_value . "\r\n";
}
注:中间有一些获取必要信息的方法,可能设置敏感信息,所以就不贴代码啦!
四、运行测试用例
运行过程中,浏览器(PS:我用的Firefox)会闪现好多次,其实整个过程也就是模拟用户操作的一个过程。具体结果如下图:图3 用例运行结果
五、结束语
因为我也是刚接触自动化测试,如果有不对的地方请包涵,欢迎大家一起讨论。