第五篇 手游弱网测试说明
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第五篇 手游弱网测试说明相关的知识,希望对你有一定的参考价值。
参考技术A 一、概述手游弱网测试即对手游网络性能的测试,由于手机端网络环境的不稳定性和多样性(包括wifi、4G、3G等)在游戏过程中由于网络震荡或者切换网络时,往往回出现一些莫名其妙的BUG,而这些BUG在功能测试中往往是不易被发现的,固需要对手游做专门的弱网测试。
二、弱网测试过程
1、弱网测试需求分析确定测试策略;
2、分析测试点输出测试用例;
3、接入测试环境进行测试;
4、输出测试结果反馈修复;
5、回归测试
三、一般手游弱网测试方法
1、测试点
分析游戏,找出游戏中和网络交互有关的关键点,以下测试点优先级较高,需要重点测试:
正常游戏的主要流程,例如:登录、进入游戏、游戏中操作、游戏结算等;
游戏中涉及支付购买的地方,例如购买钻石、购买道具、游戏复活等;
游戏中涉及领取奖励的地方,例如每日奖励、任务奖励、抽奖等;
游戏中对网络敏感的交互功能,例如实时对战;
测试点设计示例如下图3-1:
2、测试方法
2.1测试点断网测试
单独针对每一个测试点,分别进行发包断网,收包断网测试。这种方式只适用于客户端单个请求上行对应服务器单个响应回包,收发消息是一对一同步进行的一般手游场景,比如购买,升级,开局,结算等。对测试者要求高,需要清晰了解每个测试点客户端与服务器的交互逻辑,才能设计用例。
因为每次只测试一个测试点,覆盖不到游戏并发请求的异常逻辑,且开发只要做好网络底层超时逻辑,一般都能覆盖到全部测试点,因此发现缺陷的效率相比之下较低。
测试方法示例如下图3-2-1:
2.2组合场景法
设置一种网络模式,执行玩家经常遇到的游戏场景。同时配合在测试点上,采用断网或切换网络等操作,观察是否符合有效(能完成逻辑)或无效预期(不能完成逻辑)。此方法执行起来方便快捷,发现缺陷效率高。适用于MOBA等实时对战类的游戏场景。
但是,由于选定的网络有很大的不确定性,不能保证每次执行用例有恒定的网络前提条件作为输入,因此预期都分为有效或无效两种情况,不能保证两种结果都覆盖到,是一种有损的测试方法。
四、弱网环境参数设置示例如下图4-1:
五、网络环境搭建工具
模拟网络环境搭建工具:
Network Emulator for Windows Toolkit(台式电脑需外接无线网卡并安装驱动)
使用方法参考:
https://testerhome.com/topics/482
http://blog.sina.com.cn/s/blog_13cc013b50102wa0g.html
六、弱网测试平台推荐
Wetest、TestBird等。
<完>
个人浅见,欢迎留言交流。♪(^∀^●)ノ
<<下一篇 弱网环境搭建>>
<<返回目录>>
Servlet第五篇Response总结
一、Response概述
response是Servlet.service方法的一个参数,类型为javax.servlet.http.HttpServletResponse。在客户端发出每个请求时,服务器都会创建一个response对象。response对象是用来对客户端进行响应的,这说明在HttpServletResponse的doXXX()方法中使用response对象可以完成对客户端的响应工作。
二、Response主要功能介绍
1、发送状态码;
2、设置响应头信息;
3、设置响应正文;
4、重定向;
三、HttpServletResponse的常用方法
(一)发送状态码
setStatus(状态码)
sendError(状态码, 状态码相关信息)
(二)设置响应头
setHeader(String name, int value):设置响应头,只有一个值时
addHeader(String name, int value):设置响应头,有多个值时
void setIntHeader(String name, int value):设置响应头
void setDateHeader(String name, long date):设置响应头
(三)设置响应正文
ServletOutputStream getOutputStream():用来向客户端响应字节数据;
PrintWriter getWriter():用来向客户端响应字符数据;
(四)getWriter和getOutputStream细节
1、getWriter()和getOutputStream()两个方法不能同时调用。如同时调用就会出现异常
2、Servlet程序向ServletOutputStream或PrintWriter对象中写入的数据将被Servlet引擎从response里面获取,Servlet引擎将这些数据当作响应消息的正文,然后再与响应状态行和各响应头组合后输出到客户端。
3、Servlet的serice()方法结束后【也就是doPost()或者doGet()结束后】,Servlet引擎将检查getWriter或getOutputStream方法返回的输出流对象是否已经调用过close方法,如果没有,Servlet引擎将调用close方法关闭该输出流对象.
4、response字符流缓冲区大小为8KB,当向字符流中写入数据后,数据可能只在缓冲区中,而没有发送到浏览器。
可以调用response.flushBuffer()或response.getWriter().flush()方法刷新缓冲区,把数据发送到浏览器。
(五)重定向
//方法一:
response.sendStatus(302);
repsonse.setHeader("Location", "http://www.baidu.com");
//方法二:快捷的方法重定向:
response.sendRedirect("http://www.baidu.com");
四、HttpServletResponse应用
1、使用Refresh头进行定时刷新
2、禁用浏览器缓存
/**
Cache-Control: no-cache;
Pragma: no-cache;
Expires: -1;
*/
public class FServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setHeader("Cache-Control", "no-cache");
response.setHeader("Pragma", "no-cache");
response.setDateHeader("Expires", -1);
}
}
3、响应图片
/**
* 响应图片
* 1、获取字节数组(使用CommonsIO)
* 2、获取OutputStream
* 3、写出数据
*/
public class GServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//获取字节数组(使用CommonsIO)
String path = "C:/Users/ASUS/Desktop/壁纸/35.jpg";
FileInputStream is = new FileInputStream(path);
byte[] datas = IOUtils.toByteArray(is);
//获取OutputStream
ServletOutputStream os = response.getOutputStream();
//写出数据
os.write(datas);
}
Java新手,若有错误,欢迎指正!
以上是关于第五篇 手游弱网测试说明的主要内容,如果未能解决你的问题,请参考以下文章