对游戏服务端程序进行自动化测试

发表于:2010-6-02 13:51

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:dualface.com    来源:51Testing软件测试网采编

  最近一年都在做SNSGame,服务端当然还是用的PHP,而客户端则使用了Flash。

  由于使用Flash做为客户端,服务端就不再需要处理一大堆与HTML相关的问题了。客户端和服务端之间就是单纯的数据交换,这大大减低了进行自动化测试的难度。虽然许多开发者选择AMF作为Flash和PHP之间的RPC解决方案,不过我比较一番,还是选择了JSON格式。比较而言,JSON相对AMF最大的优势就是更灵活,其次则是可以少写不少代码 :)

  既然使用JSON,那么对应用程序稍微修改一下。让应用程序在测试模式下返回array,而不是JSON字符串。就可以很方便的对返回数据进行测试了。

  测试使用了PHPUnit的BDD支持,然后增加了一些必要的扩展。一个测试看上去如下:

01.class GameActionsTest extends GameActionTestCase
02.{
03.    /**
04.     * 游戏初始化
05.     *
06.     * 初始化时,要传递下列数据到客户端:
07.     *
08.     * ......
09.     */
10.    function testGameInitAction()
11.    {
12.        $resultSchema = new SchemaValidator(array(
13.            'player' => array(
14.                'uid'       => IModel::TYPE_INT,
15.                'name'      => IModel::TYPE_STRING,
16.
17.                ....
18.
19.                'items' => new RepeatSchemaValidator(array(
20.                    'item_id'   => IModel::TYPE_INT,
21.                    'type'      => IModel::TYPE_INT,
22.                    'used'      => IModel::TYPE_BOOL,
23.                )),
24.            ),
25.            'ok'        => IModel::TYPE_BOOL,
26.            'current'   => IModel::TYPE_INT,
27.        ));
28.
29.        $this->given('login');
30.        $this->when('run game.init');
31.        $this->then('result is array')
32.             ->and('result schema validate', $resultSchema);
33.    }
34.}

  测试中,SchemaValidator用于检查服务端返回的数据是否符合指定的格式,以及每一个数据项的类型是否正确。而最后的几行代码则是测试逻辑,对应的中文伪代码如下:

01.$this->given('login');
02.$this->when('run game.init');
03.$this->then('result is array')
04.     ->and('result schema validate', $resultSchema);
05.
06.伪代码:
07.
08.在 login(登录)后
09.当 run game.init(执行 game.init 动作)时
10.result is array(执行结果应该是一个数组)
11.result schema validate(结果的格式应该通过验证)

  BDD测试相对于单元测试,测试代码本身更具有语义。

21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号