游戏测试-接口测试

接口测试原理

测试系统组件间接口的一种测试。

接口测试主要用于检测系统与系统之间以及内部各个子系统之间的交互点。测试的重点是检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。

接口测试要点

针对游戏,在接口测试时需要注意的地方:

重复请求已完成的数据。 ——快速获得需要一定劳作才能获得的奖励。

更改请求状态。——获得当前不能获得的东西或状态。

更改UID(角色ID相关)。——移花接木。

更改ID,重复请求。——获得了后,再次请求不应获得的奖励等。

验证掉落。——掉落掉落表里没有的物品。

更改数量为负数。——验证是否处理负值。

并发请求实现。——并发会导致可能没有做相应处理的返回。

测试手段和方法

无论哪种方法去实现测试,其原理是通过一定手段和途径模拟客户端向服务端发送请求,服务器接收请求后把对应的处理返回给客户端,客户端实现响应的一个过程。

利用工具测试:

Charles是基于HTTP传输的XML、AMF、HTML的测试工具。

WPE是基于Sockets传输的TCP、UDP的网络封包编辑工具。

具体使用分析可参考:

http://wenku.baidu.com/view/2a790e61783e0912a2162a50.html

Loadrunner

Java + Fitnesse

具体使用分析可参考:

http://www.51testing.com/html/66/n-814766.html

手动测试方法。

测试依据:将客户端发送的请求视为“不合法”操作。根据数据存储原理,在处理存储数据的时候,对数据库数据进行修改,让客户端的数据请求“不合法”。即客户端的一切都是假像。

手动测试会用到游戏客户端,是从另一个角度去审视请求是否合法。

这里的测试方法涉及到,服务端、缓存、客户端之间的数据交互,需要排除缓存数据对测试结果的影响。通常来说,客户端发出的数据请求,先在缓存中寻找数据,如果缓存中没有,就去数据库取。在手动进行接口测试时,需要保证缓存数据和数据库数据一致。否则,测试操作往往会得到“错误的”测试结果。

在网页游戏测试过程中,如果某个数据有用到缓存机制,比如在未修改时,缓存数据=DB数据=2,客户端呈现的数据=2;如果直接修改DB数据=0,不修改缓存数据,那么在使用1个数据时,会先使用缓存数据,使用一个后,缓存和DB交互会使得DB数据=-1,从而不能达到测试目的。

一般网页游戏测试过程中,会提供清除缓存的途径,使得修改DB数据后,清除缓存使得直接取DB的数据,达到测试结果的准确性。

在测试过程中,往往不会知道缓存数据是否和数据库数据一致,但测试员一定要知道,什么数据是与缓存有关,什么数据是直接和数据库打交道。

介绍下手动测试的方法:

修改数据库数据。

进行测试操作时,需要注意修改数据库数据时,客户端要保持没有请求发送(那样返回的数据会刷新客户端显示,造成测试操作请求的“合法”)。例如修改数据后,不能再打开目标操作界面,打开操作界面会重新请求界面数据显示;不能关闭客户端再开启。

示例1:测试数值判断;比如物品价格=10币,角色身上有100币,修改数据的金钱数量=9币,然后执行购买,这时通过购买判断,正确的结果应该不能购买。

示例2:测试状态判断;比如完成一个任务A,没有领取奖励,这时数据任务状态=完成未领取奖励,修改数据库该任务状态=完成已领取奖励,然后客户端执行领取奖励操作,这时通过领取条件判断,正确的结果应该不能领取奖励。

示例3:测试负值;比如在购买时,输入负值(一般客户端会限制负值输入,但服务端的判断必不可少),输入负值后,执行购买,通过购买判断,正确的结果应该不能购买。(不然就送钱出去了)

示例4:更改ID;比如A玩家已穿戴的装备,修改数据库使得装备的userID=B,在客户端A卸下穿戴的装备,通过卸下判断,正确结果应该是卸下不成功。(因为服务端认定这件装备是B已穿戴的)

总结:通过示例,可以泛用这种测试手法到近似的地方。

程序提供工具。(测试员的幸福,具体原理是一样,就不细说了)

接口测试的重要性

不借助工具进行接口测试,不能覆盖到所有测试需求。因为工具可以完全绕过客户端,对服务端发送测试目的性强的请求,以此来判断程序逻辑是否有疏漏。

特别是并发请求的测试,单线程并发和多线程并发。这种情况不可能通过手工测试达到测试目的。

单线程并发,虽然手工测试可以覆盖状态判断,但是同一时间多次请求,如果没有相应的处理机制,也可能发生一劳多获的漏洞。

多线程并发,有个示例可以说明其严重性:

一次BOSS战中,BOSS快死了,假如HP=100。A、B2个玩家同时间杀到。A伤害>100,B伤害<100。悲剧发生了,A杀死了BOSS,B一刀下去BOSS没死;更悲剧的在后面,A杀死了BOSS,击杀奖励发!A击杀BOSS公告发!B的结果BOSS没死,然后路人C一刀下去BOSS死了,C杀死了BOSS,击杀奖励再发!C击杀BOSS公告发!——玩家就崩了~

还好,这种情况的发生往往需要巧合,发生后可以通过查看日志来分析产生原因。

接口方面产生的漏洞往往会导致刷物品、刷金钱、刷属性。并发性的漏洞,往往很难发现和重现,如果不能及时发现和修复,会一直是一颗隐藏的炸弹。

一句话:在发生悲剧前找出并修复漏洞,这才是测试存在最直接的价值。

来源于:http://blog.sina.com.cn/s/blog_89998f670101kd16.html

时间: 2024-10-05 05:50:12

游戏测试-接口测试的相关文章

【转载】游戏测试和软件测试的差异

  这里的游戏测试专指各种电子游戏(特别是网络游戏). 从软件角度讲,电子游戏本身也是一种软件,属于软件的一类,因此游戏测试和软件测试必然有其共同点,本文不详细讨论这部分,而主要讨论其差异. 首先,我们从软件的开发过程入手: 通常一个软件的开发过程如下: ● 接受订单 ● 需求分析 ● 设计文档 ● 程序设计 ● 程序实现 ● 集成测试 ● 阿尔法测试 ● 贝塔测试 ● 软件发布 游戏也是一种软件,开发过程也逃不出这个框架,但是从开发的第一步开始,游戏就与一般的软件存在了比较大的差异: 首先:通

游戏测试中的sql语句

基本的内容在这里就不写了. 游戏测试中经常使用到1个复合条件的 游戏内一般要查下用户剩余多少钱.例如有个字段为energy代表体力 表名为db_role 关键字段 id,name(唯一) 要查询条件为 energy在1500一档,然后二档是500~1000之间的 语句为 select id,name,energy from db_name where energy=1500 OR(energy >=500 and energy<1000) 喜欢as的话 可以再要看的列之前加as  select

关于是否要从游戏测试行业跳出来的思考

百度搜索:小强测试品牌 交流群:165380836 引子 这篇文章的起因是因为被问到了如下的问题 关于游戏测试行业 首先小弟必须声明,我对游戏测试行业不了解,仅仅来源于日常的阅读新闻以及和学员的交流而得知,所以肯定存在认知的不足,大家不用怼我,我就自己的了解简单分享下我的看法,仅供参考而已. 正好最近也看了一个阿里测试工程师对游戏测试的分享,我就借花献佛的聊聊,在游戏行业基本的特点是加班多(貌似现在都特么的加班多啊).奖金丰厚.利润大.用户多,对于测试工作来说成本高,包括采购和测试成本都高,而且

游戏测试-功能测试

你所想的游戏测试是什么 整天捧个手机玩游戏? 整天几个人联机玩游戏? 加班也是玩游戏? NO NO NO 真实的游戏测试要做哪些 游戏测试是软件测试的一种分支,具备所有软件测试的特性. 游戏测试的产业相关及工作划分,可查看:游戏杂谈 游戏研发迭代 与传统软件行业基本一致,下面为一个简单迭代中对应人员及需要做的事情   策划(BA) 程序 测试 需求阶段 编写策划文档 技术预研 测试计划.环境准备 实现阶段 脚本配制 功能实现 测试用例编写 测试阶段 需求验收 缺陷修复 用例执行.缺陷回归.报告产

游戏测试(2)-游戏测试做什么?

前面已经把什么是游戏测试介绍过,本文主要介绍下游戏测试做什么?以及具体在工作会中有什么问题? 游戏杂谈 游戏测试(1)-什么是游戏测试 成员结构 以常规的测试团队人员来划分(仅功能测试层面):1个Leader+N个功能测试人员(一个比较好听的名字:游戏测试工程师,N可能会等于0)+1个配制管理(此角色有的团队Leader负责,或者程序负责),这是一个常规的标准配制.依据项目的规模人数上有可能会有变动. 一般项目的人员数配制参考 端游项目:1Leader+4~5功能测试人员+1配制管理 页游项目:

安卓手机游戏测试要点

安卓手机游戏测试要点 广告位 1.上线产品是否需要加上广告,广告是否加上 2.广告位是否遮挡重要信息 评分界面 1.评分界面是否加上 2.评分界面文字是否出现错误,是否符合平台规定 3.按钮是否歧义 4.评分界面是否与游戏界面风格统一 计费部分 1. 计费要求是否达到 2. 购买道具:用户购买道具时,需要明确提示用户道具的名称.费用.并提供"确认"和"取消"功能选择.例:"购买道具***,信息费*元(不含通信费),通过短信代收,是否确认购买?"

怎么样进行游戏测试

一款游戏出来,经常难免会出现一些硬性BUG,此BUG不光是指一些游戏中出现的死机或者脚本错误之类的直接导致游戏无法运行下去的BUG,还包括那些字体出格,错字,来电没声音之类的,虽然不能导致游戏无法运行,但是也会严重影响用户体验,进而导致游戏玩家流失. 还有一些影响用户体验的错误包括比如 MIDI没有循环播放,音乐不合适(比如战斗中播放着悠扬的音乐).一些对话的叙述方式有让很多玩家无法理解的地方(如果是明确的逻辑或者语法问题就算是 BUG了.)还有一些比如字体没有完全居中,某些图片的边缘多了一些像

app游戏测试在外网搭建账号及sdk

app游戏测试在外网搭建账号,如下(这部分是我写的) 手机游戏测试中,临时验证一些问题,无法搭建数据或者搭建成本过大会产用这个办法 1)外网玩家 都会有1个区服 和roleid,先需要知道区服和roleid,无论什么渠道都会产生1个平台id和roleid 2)dump那个区的玩家到测试服.可以再测试服新建1个库,然后导入那个库在服务器上关联 3)生成1个平台账号,然后平台账号随意创建1个角色 4)用所需要搭建的外网roleid去覆盖平台已经创建好的角色id. 覆盖后再次,用平台账号登入就是你想要

作为游戏测试需要具备的技能

每个游戏作品都希望呈现出最美的游戏体验,有一种职业在除了游戏设计和策划的工作之外,为玩家的游戏体验保驾护航——游戏测试. 游戏测试仅仅是玩游戏吗?除了会玩游戏之外,作为游戏测试还需要具备哪些“技能”? 1.良好的沟通 相信大家都在网上看到过各种吐槽程序员不解风情的段子,开怀大笑之后深思,作为一个测试工程师又何尝不是如此?貌似沟通技能成为横亘在测试工程师与其他合作部门之间的万丈鸿沟,也成为测试工程师成长的最大瓶颈.下面的这些情况你是不是经常遇到: 01)“这功能你测了吗?测了为什么还有bug?”