前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java测试工程师技术面试题库【持续补充更新】

Java测试工程师技术面试题库【持续补充更新】

作者头像
杨校
发布2022-10-07 14:21:00
3640
发布2022-10-07 14:21:00
举报
文章被收录于专栏:Java技术分享圈Java技术分享圈
  1. 请你说一下设计测试用例的方法
代码语言:javascript
复制
黑盒测试:
1.等价类划分

等价类划分是将系统的输入域划分为若干部分,然后从每个部分选取少量代表性数据进行测试。等价类可以划分为有效等价类和无效等价类,设计测试用例的时候要考虑这两种等价类。

2.边界值分析法

边界值分析法是对等价类划分的一种补充,因为大多数错误都在输入输出的边界上。边界值分析就是假定大多数错误出现在输入条件的边界上,如果边界附件取值不会导致程序出错,那么其他取值出错的可能性也就很小。

边界值分析法是通过优先选择不同等价类间的边界值覆盖有效等价类和无效等价类来更有效的进行测试,因此该方法要和等价类划分法结合使用。

3.正交试验法

正交是从大量的试验点中挑选出适量的、有代表性的点。正交试验设计是研究多因素多水平的一种设计方法,他是一种基于正交表的高效率、快速、经济的试验设计方法。

4.状态迁移法

状态迁移法是对一个状态在给定的条件内能够产生需要的状态变化,有没有出现不可达的状态和非法的状态,状态迁移法是设计足够的用例达到对系统状态的覆盖、状态、条件组合、状态迁移路径的覆盖。

5.流程分析法

流程分析法主要针对测试场景类型属于流程测试场景的测试项下的测试子项进行设计,这是从白盒测试中路径覆盖分析法借鉴过来的一种很重要的方法。

6.输入域测试法

输入域测试法是针对输入会有各种各样的输入值的一个测试,他主要考虑 极端测试、中间范围测试,特殊值测试 。

7.输出域分析法

输出域分析法是对输出域进行等价类和边界值分析,确定是要覆盖的输出域样点,反推得到应该输入的输入值,从而构造出测试用例,他的目的是为了达到输出域的等价类和边界值覆盖。

8.判定表分析法

判定表是分析和表达多种输入条件下系统执行不同动作的工具,他可以把复杂的逻辑关系和多种条件组合的情况表达的即具体又明确;

9.因果图法

因果图是用于描述系统输入输出之间的因果关系、约束关系。因果图的绘制过程是对被测系统的外部特征的建模过程,根据输入输出间的因果图可以得到判定表,从而规划出测试用例。

10.错误猜测法

错误猜测法主要是针对系统对于错误操作时对于操作的处理法的猜测法,从而设计测试用例

11.异常分析法

异常分析法是针对系统有可能存在的异常操作,软硬件缺陷引起的故障进行分析,分析发生错误时系统对于错误的处理能力和恢复能力依此设计测试用例。
--------------------------------------------------------------------------------------
白盒测试:

白盒测试也称为结构测试或逻辑驱动测试,是针对被测单元内部是如何进行工作的测试。它根据程序的控制结构设计测试用例,主要用于软件或程序验证。白盒测试法检查程序内部逻辑结构,对所有的逻辑路径进行测试,是一种穷举路径的测试方法,但即使每条路径都测试过了,但仍然有可能存在错误。因为:穷举路径测试无法检查出程序本身是否违反了设计规范,即程序是否是一个错误的程序;穷举路径测试不可能检查出程序因为遗漏路径而出错;穷举路径测试发现不了一些与数据相关的错误。

白盒测试需要遵循的原则有:1. 保证一个模块中的所有独立路径至少被测试一次;2. 所有逻辑值均需要测试真(true)和假(false);两种情况;3. 检查程序的内部数据结构,保证其结构的有效性;4. 在上下边界及可操作范围内运行所有循环。

常用白盒测试方法:

静态测试:不用运行程序的测试,包括代码检查、静态结构分析、代码质量度量、文档测试等等,它可以由人工进行,充分发挥人的逻辑思维优势,也可以借助软件工具(Fxcop)自动进行。

动态测试:需要执行代码,通过运行程序找到问题,包括功能确认与接口测试、覆盖率分析、性能分析、内存分析等。

白盒测试中的逻辑覆盖包括语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。六种覆盖标准发现错误的能力呈由弱到强的变化:

1.语句覆盖每条语句至少执行一次。

2.判定覆盖每个判定的每个分支至少执行一次。

3.条件覆盖每个判定的每个条件应取到各种可能的值。

4.判定/条件覆盖同时满足判定覆盖条件覆盖。

5.条件组合覆盖每个判定中各条件的每一种组合至少出现一次。

6.路径覆盖使程序中每一条可能的路径至少执行一次。
  1. 请你说一说测试工程师的必备技能
代码语言:javascript
复制
 需要的知识: 
	   •    软件测试基础理论知识,如黑盒测试、白盒测试等;
       •    编程语言基础,如C/C++、java、python等;
       •    自动化测试工具,如Selenium、Appium、Robotium等;
       •    计算机基础知识,如数据库、Linux、计算机网络等;
       •    测试框架,如JUnit等。
需要具备的能力:
       •    业务分析能力,分析整体业务流程、分析被测业务数据、分析被测系统架构、分析被测业务模块、分析测试所需资源、分析测试完成目标;
       •    缺陷洞察能力,一般缺陷的发现能力、隐性问题的发现能力、发现连带问题的能力、发现问题隐患的能力、尽早发现问题的能力、发现问题根源的能力;
       •    团队协作能力,合理进行人员分工、协助组员解决问题、配合完成测试任务、配合开发重现缺陷、督促项目整体进度、出现问题勇于承担;
       •    专业技术能力,掌握测试基础知识、掌握计算机知识、熟练运用测试工具;
       •    逻辑思考能力,判断逻辑的正确性、对可行性逻辑分析、站在客观角度思考;
       •    问题解决能力,技术上的问题、工作中的问题、沟通问题;
       •    沟通表达能力,和技术人员、产品人员、上下级的沟通;
       •    宏观把控能力,有效控制测试时间、有效控制测试成本、有效制定测试计划、有效进行风险评估、有效控制测试方向。
  1. 请你说一下app性能测试的指标
代码语言:javascript
复制
1、内存:内存消耗测试节点的设计目标是为了让应用不占用过多的系统资源,且及时释放内存,保障整个系统的稳定性。当然关于内存测试,在这里我们需要引入几个概念:空闲状态、中等规格、满规格。
空闲状态指打开应用后,点击home键让应用后台运行,此时应用处于的状态叫做空闲;中等规格和满规格指的是对应用的操作时间的间隔长短不一,中等规格时间较长,满规格时间较短。

内存测试中存在很多测试子项,清单如下:

●空闲状态下的应用内存消耗;

●中等规格状态下的应用内存消耗;

●满规格状态下的应用内存消耗;

●应用内存峰值;

●应用内存泄露;

●应用是否常驻内存;

●压力测试后的内存使用。

2、CPU:

使用Android提供的view plaincopy在CODE上查看代码片派生到我的代码片

adbshell dumpsys CPUinfo |grep packagename >/address/CPU.txt来获取;

使用top命令view plaincopy在CODE上查看代码片派生到我的代码片

adbshell top |grep packagename>/address/CPU.txt来获取。

3、流量:

网络流量测试是针对大部分应用而言的,可能还有部分应用会关注网速、弱网之类的测试。

流量测试包括以下测试项:

应用首次启动流量提示;

应用后台连续运行2小时的流量值;

应用高负荷运行的流量峰值。

4、电量:

●测试手机安装目标APK前后待机功耗无明显差异;

●常见使用场景中能够正常进入待机,待机电流在正常范围内;

●长时间连续使用应用无异常耗电现象。

5、启动速度:

第一类:首次启动--应用首次启动所花费的时间;

第二类:非首次启动--应用非首次启动所花费的时间;

第三类:应用界面切换--应用界面内切换所花费的时间。

6、滑动速度、界面切换速度

7、与服务器交互的网络速度

  1. 请你说一说web测试和app测试的不同点
代码语言:javascript
复制
系统架构方面:
web项目,一般都是b/s架构,基于浏览器的

app项目,则是c/s的,必须要有客户端,用户需要安装客户端。

web测试只要更新了服务器端,客户端就会同步会更新。App项目则需要客户端和服务器都更新。

性能方面:

web页面主要会关注响应时间

而app则还需要关心流量、电量、CPU、GPU、Memory这些。

它们服务端的性能没区别,都是一台服务器。

兼容方面:

web是基于浏览器的,所以更倾向于浏览器和电脑硬件,电脑系统的方向的兼容

app测试则要看分辨率,屏幕尺寸,还要看设备系统。

web测试是基于浏览器的所以不必考虑安装卸载。

而app是客户端的,则必须测试安装、更新、卸载。除了常规的安装、更新、卸载还要考虑到异常场景。包括安装时的中断、弱网、安装后删除安装文件 。

此外APP还有一些专项测试:如网络、适配性。

  1. 请问黑盒测试和白盒测试有哪些方法
代码语言:javascript
复制
黑盒测试方法有等价类划分,边界值分析,错误推测,因果图法

白盒测试方法有逻辑覆盖法,程序插桩技术,基本路径法,符号测试,错误驱动测试
  1. 请你回答一下什么是α测试和β测试,以及什么时候用到他们
代码语言:javascript
复制
α测试:在受控的环境中进行,由用户在开发者的场所进行,并且在开发者对用户的指导下进行测试,开发者负责记录发现的错误和使用中遇到的问题

β测试:在开发者不能控制的环境中的真实应用,由软件的最终用户们在一个或多个客户场所下进行,由用户记录在测试中遇到的一系列问题,并定期报给开发者。
  1. 请你分别介绍一下单元测试、集成测试、系统测试、验收测试、回归测试
代码语言:javascript
复制
1、单元测试:完成最小的软件设计单元(模块)的验证工作,目标是确保模块被正确的编码,使用过程设计描述作为指南,对重要的控制路径进行测试以发现模块内的错误,通常情况下是白盒的,对代码风格和规则、程序设计和结构、业务逻辑等进行静态测试,及早的发现和解决不易显现的错误。

2、集成测试:通过测试发现与模块接口有关的问题。目标是把通过了单元测试的模块拿来,构造一个在设计中所描述的程序结构,应当避免一次性的集成(除非软件规模很小),而采用增量集成。

自顶向下集成:模块集成的顺序是首先集成主模块,然后按照控制层次结构向下进行集成,隶属于主模块的模块按照深度优先或广度优先的方式集成到整个结构中去。

自底向上集成:从原子模块开始来进行构造和测试,因为模块是自底向上集成的,进行时要求所有隶属于某个给顶层次的模块总是存在的,也不再有使用稳定测试桩的必要。

3、系统测试:是基于系统整体需求说明书的黑盒类测试,应覆盖系统所有联合的部件。系统测试是针对整个产品系统进行的测试,目的是验证系统是否满足了需求规格的定义,找出与需求规格不相符合或与之矛盾的地方。系统测试的对象不仅仅包括需要测试的产品系统的软件,还要包含软件所依赖的硬件、外设甚至包括某些数据、某些支持软件及其接口等。因此,必须将系统中的软件与各种依赖的资源结合起来,在系统实际运行环境下来进行测试。

4、回归测试:回归测试是指在发生修改之后重新测试先前的测试用例以保证修改的正确性。理论上,软件产生新版本,都需要进行回归测试,验证以前发现和修复的错误是否在新软件版本上再次出现。根据修复好了的缺陷再重新进行测试。回归测试的目的在于验证以前出现过但已经修复好的缺陷不再重新出现。一般指对某已知修正的缺陷再次围绕它原来出现时的步骤重新测试。

5、验收测试:验收测试是指系统开发生命周期方法论的一个阶段,这时相关的用户或独立测试人员根据测试计划和结果对系统进行测试和接收。它让系统用户决定是否接收系统。它是一项确定产品是否能够满足合同或用户所规定需求的测试。验收测试包括Alpha测试和Beta测试。

Alpha测试:是由用户在开发者的场所来进行的,在一个受控的环境中进行。

Beta测试:由软件的最终用户在一个或多个用户场所来进行的,开发者通常不在现场,用户记录测试中遇到的问题并报告给开发者,开发者对系统进行最后的修改,并开始准备发布最终的软件。
  1. 请说一下手动测试与自动化测试的优缺点
代码语言:javascript
复制
手工测试缺点:
1、重复的手工回归测试,代价昂贵、容易出错。

2、依赖于软件测试人员的能力。

手工测试优点:

1、测试人员具有经验和对错误的猜测能力。

2、测试人员具有审美能力和心理体验。

3、测试人员具有是非判断和逻辑推理能力。

自动化测试的优点:

1、对程序的回归测试更方便。这可能是自动化测试最主要的任务,特别是在程序修改比较频繁时,效果是非常明显的。由于回归测试的动作和用例是完全设计好的,测试期望的结果也是完全可以预料的,将回归测试自动运行,可以极大提高测试效率,缩短回归测试时间。

2、可以运行更多更繁琐的测试。自动化的一个明显的好处是可以在较少的时间内运行更多的测试。

3、可以执行一些手工测试困难或不可能进行的测试。比如,对于大量用户的测试,不可能同时让足够多的测试人员同时进行测试,但是却可以通过自动化测试模拟同时有许多用户,从而达到测试的目的。

4、更好地利用资源。将繁琐的任务自动化,可以提高准确性和测试人员的积极性,将测试技术人员解脱出来投入更多精力设计更好的测试用例。有些测试不适合于自动测试,仅适合于手工测试,将可自动测试的测试自动化后,可以让测试人员专注于手工测试部分,提高手工测试的效率。

5、测试具有一致性和可重复性。由于测试是自动执行的,每次测试的结果和执行的内容的一致性是可以得到保障的,从而达到测试的可重复的效果。

6、测试的复用性。由于自动测试通常采用脚本技术,这样就有可能只需要做少量的甚至不做修改,实现在不同的测试过程中使用相同的用例。

7、增加软件信任度。由于测试是自动执行的,所以不存在执行过程中的疏忽和错误,完全取决于测试的设计质量。一旦软件通过了强有力的自动测试后,软件的信任度自然会增加。

自动化测试的缺点:

1、不能取代手工测试

2、手工测试比自动测试发现的缺陷更多

3、对测试质量的依赖性极大

4、测试自动化不能提高有效性

5、测试自动化可能会制约软件开发。由于自动测试比手动测试更脆弱,所以维护会受到限制,从而制约软件的开发。

6、工具本身并无想像力
  1. 你觉得测试和开发需要怎么结合才能使软件的质量得到更好的保障
代码语言:javascript
复制
测试和开发应该按照W模型的方式进行结合,测试和开发同步进行,能够尽早发现软件缺陷,降低软件开发的成本。
在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
在V模型中,测试过程被加在开发过程的后半部分,单元测试所检测代码的开发是否符合详细设计的要求。
集成测试所检测此前测试过的各组成部分是否能完好地结合到一起。

系统测试所检测已集成在一起的产品是否符合系统规格说明书的要求。

验收测试则检测产品是否符合最终用户的需求。

V模型的缺陷在于仅仅把测试过程作为在需求分析、系统设计及编码之后的一个阶段,忽视了测试对需求分析、系统设计的验证,因此需求阶段的缺陷很可能一直到后期的验收测试才被发现,此时进行弥补将耗费大量人力物力资源。

相对于V模型,W模型增加了软件各开发阶段中应同步进行的验证和确认活动。W模型由两个V字型模型组成,分别代表测试与开发过程,图中明确表示出了测试与开发的并行关系。

W模型强调:测试伴随着整个软件开发周期,而且测试的对象不仅仅是程序,需求、设计等同样要测试,也就是说,测试与开发是同步进行的。W模型有利于尽早地全面的发现问题。例如,需求分析完成后,测试人员就应该参与到对需求的验证和确认活动中,以尽早地找出缺陷所在。同时,对需求的测试也有利于及时了解项目难度和测试风险,及早制定应对措施,这将显著减少总体测试时间,加快项目进度。
在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
W模型中测试的活动与软件开发同步进行,测试的对象不仅仅是程序,还包括需求和设计,因此能够尽早发现软件缺陷,降低软件开发的成本。
  1. 请你回答一下测试的相关流程是什么
代码语言:javascript
复制
测试最规范的过程如下
需求测试->概要设计测试->详细设计测试->单元测试->集成测试->系统测试->验收测试

来自W模型
  1. 给你一个字符串,你怎么判断是不是ip地址?手写这段代码,并写出测试用例
代码语言:javascript
复制
	// 基于对字符串的处理
	public static void main(String[] args){
		Scanner scanner = new Scanner(System.in);
		String ipStr = scanner.next();
		boolean isIpLegal = isIpLegal(ipStr);
		if(isIpLegal) {
			System.out.println(ipStr + " 合法");
		}else{
			System.out.println(ipStr + " 非法");
		}
	}
	public static boolean isIpLegal(String str){
	
		//检查ip是否为空
		
		if(str == null){
			return false;	
		}
		//检查ip长度,最短为:x.x.x.x(7位),最长为:xxx.xxx.xxx.xxx(15位)
		if(str.length() < 7 || str.length() > 15){
			return false;
		}
		//对输入字符串的首末字符判断,如果是"."则是非法IP	
		if(str.charAt(0) == '.' || str.charAt(str.length()-1) == '.'){	
			return false;
		}
	}
	//按"."分割字符串,并判断分割出来的个数,如果不是4个,则是非法IP
	String[] arr = str.split("\\.");
	if(arr.length != 4){
		return false;
	}
	//对分割出来的每个字符串进行单独判断
	for(int i = 0; i < arr.length; i++){
		//如果每个字符串不是一位字符,且以'0'开头,则是非法的IP,如:01.002.03.004
		if(arr[i].length() > 1 && arr[i].charAt(0) == '0'){
			return false;
		}
		//对每个字符串的每个字符进行逐一判断,如果不是数字0-9,则是非法的IP
		for(int j = 0; j < arr[i].length(); j++){
			if (arr[i].charAt(j) < '0' || arr[i].charAt(j) > '9'){
				return false;
			}
		}
	}
	//对拆分的每一个字符串进行转换成数字,并判断是否在0~255
	for(int i = 0; i < arr.length; i++){
		int temp = Integer.parseInt(arr[i]);
		if(i == 0){
			if (temp < 1 || temp > 255){
				return false;
			}
		}else{
			if(temp < 0 || temp > 255){
				return false;
			}
		}
	}
		return true;
}
  1. 请进行测试用例设计:一串数字,闰年的判别
  2. 请你说一说简单用户界面登陆过程都需要做哪些分析
代码语言:javascript
复制
一、功能测试
1.输入正确的用户名和密码,点击提交按钮,验证是否能正确登录。

2.输入错误的用户名或者密码,验证登录会失败,并且提示相应的错误信息。

3.登录成功后能否能否跳转到正确的页面

4.用户名和密码,如果太短或者太长,应该怎么处理

5.用户名和密码,中有特殊字符(比如空格),和其他非英文的情况

6.记住用户名的功能

7.登陆失败后,不能记录密码的功能

8.用户名和密码前后有空格的处理

9.密码是否非明文显示显示,使用星号圆点等符号代替。

10.牵扯到验证码的,还要考虑文字是否扭曲过度导致辨认难度大,考虑颜色(色盲使 用者),刷新或换一个按钮是否好用

11.登录页面中的注册、忘记密码,登出用另一帐号登陆等链接是否正确

12.输入密码的时候,大写键盘开启的时候要有提示信息。

13.什么都不输入,点击提交按钮,检查提示信息。

二、界面测试

1.布局是否合理,testbox和按钮是否整齐。

2.testbox和按钮的长度,高度是否复合要求。

3. 界面的设计风格是否与UI的设计风格统一。

4. 界面中的文字简洁易懂,没有错别字。

三、性能测试

1.打开登录页面,需要的时间是否在需求要求的时间内。

2.输入正确的用户名和密码后,检查登录成功跳转到新页面的时间是否在需求要求的时间内。

3.模拟大量用户同时登陆,检查一定压力下能否正常登陆跳转。

四、安全性测试

1.登录成功后生成的Cookie,是否是httponly (否则容易被脚本盗取)。

2.用户名和密码是否通过加密的方式,发送给Web服务器。

3.用户名和密码的验证,应该是用服务器端验证, 而不能单单是在客户端用javascript 验证。

4.用户名和密码的输入框,应该屏蔽SQL注入攻击。

5.用户名和密码的的输入框,应该禁止输入脚本 (防止XSS攻击)。

6.防止暴力破解,检测是否有错误登陆的次数限制。

7. 是否支持多用户在同一机器上登录。

8. 同一用户能否在多台机器上登录。

五、可用性测试

1. 是否可以全用键盘操作,是否有快捷键。

2. 输入用户名,密码后按回车,是否可以登陆。

3. 输入框能否可以以Tab键切换。

六、兼容性测试

1.不同浏览器下能否显示正常且功能正常(IE,6,7,8,9, Firefox, Chrome, Safari,等)。

2.同种浏览器不同版本下能否显示正常且功能正常。

2.不同的平台是否能正常工作,比如Windows, Mac。

3.移动设备上是否正常工作,比如Iphone, Andriod。

4.不同的分辨率下显示是否正常。

七、本地化测试

1. 不同语言环境下,页面的显示是否正确。
  1. 请对这个系统做出测试用例:一个系统,多个摄像头,抓拍车牌,识别车牌,上传网上,网上展示
代码语言:javascript
复制
功能:
1.每个摄像头都能抓拍车牌;

2.每个摄像头抓拍到的车牌能正常交给系统处理;

3.系统能够正确识别车牌;

4.系统能够将识别出的车牌上传;

5.上传至网络的车牌能够正常展示出来;

一、功能测试

1.使用正常的车牌,保持车牌静止,检查每个摄像头是否能抓拍车牌;

2.使用类似非车牌的写有字的纸板,检查每个摄像头是否抓拍;

3.使用正常的车牌,保持车牌较高速移动,检查每个摄像头是否能抓拍车牌;

4.在多种情况下检查每个摄像头抓拍到的车牌能否正常交给系统处理,如临时断电、断网后能否正常将数据交给系统;

5.使用抓拍到的正常的车牌,交由系统处理,检查系统能否识别车牌;

6.使用非车牌的其他图片,交由系统处理,检查系统能否识别;

7.在多种情况下检查系统能否将正常识别出的车牌进行上传,如临时断电、断网后未上传数据是否能继续上传;

8.构造非车牌的其他内容的数据,检查系统能否将异常内容进行上传;

9.检查上传至网络的车牌能否正常展示出来;

10.上传非车牌的其他内容的数据,检查能否正常显示出来。

二、性能测试

1.同时向一个摄像头展示多个静止的车牌,检查摄像头能否抓拍到多个车牌;

2.同时向一个摄像头展示多个较高速运动的车牌,检查摄像头能否抓拍到多个车牌;

3.抓拍后,检查系统识别车牌的时间是否在需求要求的时间内;

4.模拟大量抓拍照片同时交由系统处理,检查一定压力下系统能否正常识别车牌;

5.模拟大量车牌同时上传,检查一定压力下能否上传成功。

三、安全性测试

1.检查是否能够通过给车牌加装饰物等方法,使摄像头无法抓拍或抓拍后系统无法正常识别车牌。
  1. 请你对王者荣耀游戏进行压力测试
代码语言:javascript
复制
一.首先明确需要测试压力的内容:
1.游戏服务器硬件

a.硬盘I/o

b.内存

c.CPU

2.网络压力

a.长连接

a1.最大连接数

a2.流量(内网、外网、进、出)

b.长连接短周期(类似Http的TCP应用,这个比较特殊的一个需求,专门针对LoginAgent)

b1.每秒建立的连接数

b2.实际处理能力

3.数据库

a.每秒事务数

b.每秒锁等待数

c.平均延时(ms)

d.CPU暂用

4.多线程的最优线程数

a.数据库执行的多线程

b.多连接处理

二.Windows Server环境测试方式

1.服务器性能监测

使用Server自带的性能监测器设置各个进程的监测参数。Window的这个自动工具做的相当强大。大家自己摸一摸基本就会用了。每个参数都由详细的说明。

2.案例设计注意

a.对于数据库的性能测试上,现在由于所有的游戏服务器构架在DB前面都有一个实现DB缓冲功能的进程,以减少数据库频繁的读写操作。所以其实数据库的读是一个轻量级的数量;而数据库的写操作是一个周期性能过程。案例设计一定要能够驱动这种周期性能过程。比如我们游戏的战斗,导致游戏玩家数据的改变,或驱动所有在线玩家数据的周期性存储。

b.选择具有代表性,并且最频繁的游戏操作。用于进行最高用户在线的各种性能指标采集。如,开枪、道具拾取、道具使用、移动、聊天

c.聊天性能测试

广播聊天是最为考验游戏信息发送能力的功能。通过进行全局广播的压力测试。我们可以获取服务器进程发送信息到客户端的最高承载量。进而可以对我们的各种广播功能进行一个预估和频率限制。

d.同屏玩家的移动测试

移动+广播。这两种信息,基本是网络游戏流量的70-80%左右。同屏玩家数量,将会增加各种数据的广播需求,非常影响游戏性能。所以同屏的移动测试也是广播测试的一个必要环节。需要根据实际结果进行适当的优化。

e.大量玩家同时登录测试

玩家登录时,有大量的信息需要进行分配和初始化;同时也有大量的数据需要下传客户端。服务器需要进行大量的TCP连接建立。所以是一个比较关键的过程。这个测试案例是一个比较特殊,但是运营是肯定会碰到的案例。

f.由于线程池处理事务,随着事务的时耗,存在一个最优线程数的问题。过多的线程反而会降低服务器效率

3.细节问题

a.进行测试需要仔细思考客户端性能影响服务器最后表现的可能性。比如

a1.模拟客户端的性能无法有效处理服务器返回信息,可能就导致服务器发送的信息缓存在服务器系统缓存,从而表现出服务器内存不断增加。表现为服务器发送能力不足,其实可能根本就是客户端的性能问题

a2.客户端性能问题,导致发起的请求数过少,从而导致单位时间内服务器处理的请求过少。表现为服务器性能不足,其实根本就是客户端的请求能力不足。

b.网络带宽导致最后表现不足

b1.确认服务器的各个网卡,以及相互的带宽。不然可能因为相互带宽,导致服务器对于客户端请求的处理延时。表现为服务器卡机

b2.客户端模拟多个玩家,比如1000个玩家。而客户端的网卡或者客户端与服务器之间的中转服务器带宽过小,导致服务器数据发送不出,内存不断增加。表现为服务器发送能力不足,其实是中间带宽问题。

c.debug i/o导致服务器性能下降

c1.进行性能测试,一定要取消debug用的同步的i/o.比如我们服务器的debuginternalLog.同步i/o是非常影响性能的,特别在压力测试下可能导致每秒上千上万甚至几十万次的执行。一处的文件写入操作就可以导致几十万次的处理能力变成几千次的处理能力。

c2.客户端避免进行阻塞操作导致模拟多用户性能下降,导致服务器表现性能下降

d.流量需要区分内网网

内、外网流量在游戏正式运行时是完全分开的。价格也是完全不同的。一个千M的外网是一个无法想象的运营成本,而kmbps/s现在已经是一个可以接受的代价。游戏进程需要进行不同网卡的配置和绑定。确定内外网流量。
  1. 请你对朋友圈点赞功能进行测试
代码语言:javascript
复制
1.是否可以正常点赞和取消;

2.点赞的人是否在可见分组里;

3.点赞状态是否能即时更新显示;

4.点赞状态,共同好友是否可见;

6.性能检测,网速快慢对其影响;

7.点赞显示的是否正确,一行几个;

8.点赞是否按时间进行排序,头像对应的是否正确;

9.是否能在消息列表中显示点赞人的昵称、5.不同手机,系统显示界面如何;

备注;

10.可扩展性测试,点赞后是否能发表评论;

11.是否在未登录时可查看被点赞的信息。

  1. 如果做一个杯子的检测,你如何测试
代码语言:javascript
复制
1.功能
(1)水倒水杯容量的一半

(2)水倒规定的安全线

(4)水杯容量刻度与其他水杯一致

(5)盖子拧紧水倒不出来

(6)烫手验证

2.性能

(1)使用最大次数或时间

(2)掉地上不易损坏

(3)盖子拧到什么程度水倒不出来

(4)保温时间长

(5)杯子的耐热性

(6)杯子的耐寒性

(7)长时间放置水不会漏

(8)杯子上放置重物达到什么程度杯子会被损坏

3.界面

(1)外观完整、美观

(2)大小与设计一样(高、宽、容量、直径)

(3)拿着舒服

(4)材质与设计一样

(5)杯子上的图案掉落

(6)图案遇水溶解

4.安全

(1)杯子使用的材质毒或细菌的验证

(2)高温材质释放毒性

(3)低温材质释放毒性

5.易用性

(1)倒水方便

(2)喝水方便

(3)携带方便

(4)使用简单,容易操作

(5)防滑措施

6.兼容性

(1)杯子能够容纳果汁、白水、酒精、汽油等。

7.震动测试

(1)杯子加包装(有填充物),六面震动,检查产品是否能应对铁路/公路/航空运输。

8.可移植性

(1)杯子在不同地方、温度环境下都可以正常使用。
  1. 如何对一个页面进行测试
代码语言:javascript
复制
1、UI测试:页面布局、页面样式检查、控件长度是否够长;显示时,是否会被截断;支持的快捷键,Tab键切换焦点顺序正确性等。

2、功能测试:页面上各类控件的测试范围,测试点。结合控件的实际作用来补充检查点: 比如, 密码框是否*显示, 输入是否做trim处理等。

3、安全测试:输入特殊字符,sql注入,脚本注入测试。后台验证测试,对于较重要的表单 ,绕过js检验后台是否验证;数据传输是否加密处理,比如, 直接请求转发,地址栏直接显示发送字符串?

4、兼容性测试

5、性能测试
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-10-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
腾讯云代码分析
腾讯云代码分析(内部代号CodeDog)是集众多代码分析工具的云原生、分布式、高性能的代码综合分析跟踪管理平台,其主要功能是持续跟踪分析代码,观测项目代码质量,支撑团队传承代码文化。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档