51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

测试开发精英班,通向高级软件测试工程师【好消息】企业内训服务上线啦!项目为王,自动化测试提升加速器 !横扫BAT,Python全栈测试开发技能大全
【115期】:如何从测试工程师成长为测试开发? 参与调查问卷 缔造行业趋势 月薪15K+的测试开发必备技能? 【活动】为视频UP主打CALL,互动领福利!
查看: 2756|回复: 5

【转】游戏测试中的接口测试

[复制链接]
  • TA的每日心情
    擦汗
    2020-10-13 13:23
  • 签到天数: 507 天

    连续签到: 2 天

    [LV.9]测试副司令

    发表于 2016-8-25 13:40:55 | 显示全部楼层 |阅读模式
    游戏行业的测试,业务规则上会根据每个项目的不同进行调整,所以是属于需要根据每个不同项目组去适当调整工作内容。客户端部分是基于引擎较多,
    介于游戏因为封装的关系,除非在二端内部写完整过程的代码,但这个难度也太大。 我提供一些思路就是从 c->s 入手,维护起来也比较简单,以下文章介绍。
    游戏内通信对象大体三类
    • c->s
    • s->c
    • s->s
    这点和软件是一样的,外部就多1个平台。
    游戏行业做接口测试基本也和其他类型测试一样。
    这里先介绍下,需要先准备:
    • 游戏后台开启
    • 起码2个游戏客户端。另外1个客户端观察游戏内的情况。
    下面举一个例子,先找1个触发器,这里用的是聊天框,代码如下(貌似没.lua的)
    代码参考还是上面的 2)部分里的内容。1)代表原来的
    1. function Chat:rueryChatCache()
    2.     local msg = "cQueryChatCache"
    3.     app.net:sendMsg(msg)
    4. end

    5. function Chat:requestChat(chatType, name, content)    --1)正常情况
    6.     local msg = "cChat " .. chatType .. " " .. name .. " " .. content
    7.     app.net:sendMsg(msg)
    8. end

    9. function Chat:requestChat(5, damao, cQueryDailyTask)   --2)使用聊天框做触发器输出协议
    10.     local msg = "cChat " .. chatType .. " " .. name .. " " .. content
    11.     app.net:sendMsg(content)
    12. end

    13. function Chat:requestChat(1, damao, msgtxt)     --2)用于修改chatType类型
    14.   local msg = "cChat " .. chatType .. " " .. name .. " " .. content
    15. app.net:sendMsg(msg)
    16. end

    17. function Chat:requestPublishNotice(content)
    18.     local msg = "cAnnounce " .. content
    19.     app.net:sendMsg(msg)
    20. end
    复制代码
    第一个例子需要检查的协议
    1) cChat eChatType(1=私聊 2=本服 4=世界 3=公会 5=系统 服务器触发 不受理客户端 6=gm公告) toName Content
    需要分别检查 cChat类型。
    修改chatType1,2,3,4,5…分别输出。
    其中在另外1个客户端开另外1个帐号就可以看到文本里的内容。或者在后台可以显示输出内容
    其中输出类型5,另外1个客户端是不可见的。
    第2个例子协议(用于社交关系变更)
    2)cBlacklistModify nType(1=拉黑 2=撤销) idTarget
    cBlacklistModify nType的2个类型的测试,可以同时对1个有效的用户名。 检查s->c回来的内容
    nType 1or2 idTarget 传不存在的用户,检查s->c回来的内容
    这样可以简化测试,并且不会有遗漏,绕过了很多操作步骤。具体可以想想平时你如何拉黑的。
    在介绍1个好东西,关于可以便捷的调用接口的方式
    c->s的消息都可以用以下图片里的,后面2段内容,在chat聊天界面输出就可以自动调用c->s的协议内容。
    例如cQueryDailyTask 请求任务
    代码参考还是上面的 2)部分里的内容。1)代表原来的
    在游戏后面内有很多协议需要根据检查成功和失败的返回参数,也需要进行创造力的去组合测试。
    下图就是一个游戏很小一部分协议的文档截图。
    协议的说明被单独抽离出来,维护的话就是协议如何不失效就一直可使用,失效就备注去掉。内容被修改在文本里备注即可。所有文本放在1个目录下,用notepad类似的都可以读取查找具体协议类。


    回复

    使用道具 举报

    该用户从未签到

    发表于 2016-9-20 16:01:19 | 显示全部楼层
    请问楼主,手游中的接口是如何进行测试的,例如:在活动中我领取一件东西,领取成功了,但是领取的按钮没有消失,我是否可以模拟客户端给服务器发送请求?如果用Python写脚本,该如何写?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2016-11-7 19:13:17 | 显示全部楼层
    这里是讲的协议的测试,主要还是Client端给Server端发协议。
    限于保密,只能简单讲一下我这边如何进行手游的协议测试,我这边手游是用Unity开发的。
    1、打开Unity编辑器,载入程序的工程。
    2、打开客户端的代码,慢慢找,总能找到客户端发送协议的代码在那里。
    3、然后就是对这段代码进行修改,然后测试时使用。我这里用的是UnityTestTool,这个可以在Unity商店找到。
    另外说下,每个游戏开发都不一样,所以最好的办法就是直接问程序。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2019-12-27 13:32
  • 签到天数: 15 天

    连续签到: 1 天

    [LV.4]测试营长

    发表于 2016-11-18 02:11:56 | 显示全部楼层
    vinson71 发表于 2016-9-20 16:01
    请问楼主,手游中的接口是如何进行测试的,例如:在活动中我领取一件东西,领取成功了,但是领取的按钮没有 ...

    在活动中我领取一件东西,领取成功了,但是领取的按钮没有消失,我是否可以模拟客户端给服务器发送请求?
    可以模拟的是一个协议的结构体,你只需要输入客户端的部分
    c->s 满足条件的领取消息  s->c 获得奖励道具等 按流程如果这里客户端按钮会消失。
    在做接口测试时,发送领取按钮在c->s后,返回接口s->c道具奖励,按钮会不见,但这个C按钮没有的过程是只能人工去看的,快照成本太大。

    python的话也一样,就是构造1个协议结构体,把他从游戏内功能剥离出来,只能验证返回结果。
    python抽离出来的方式是验证逻辑的测试,最终上游戏还要检查的。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-8-2 00:34
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    发表于 2016-11-20 19:01:17 | 显示全部楼层
    小白看不懂 楼主的代码 这是用什么语言开发的
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2020-10-21 18:18 , Processed in 0.065729 second(s), 27 queries .

    Powered by Discuz! X3.2

    © 2001-2020 Comsenz Inc.

    快速回复 返回顶部 返回列表