第五篇 手游弱网测试说明

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新手,若有错误,欢迎指正!

以上是关于第五篇 手游弱网测试说明的主要内容,如果未能解决你的问题,请参考以下文章

APP模拟弱网测试-Fiddler+clumsy(windows平台下)

弱网测试

弱网测试--使用fiddler进行弱网测试

专项测试之弱网测试

APP测试之弱网测试

App弱网测试-QNET