转眼金三银四的招聘季已经来了,没点真本领真技能,没点面试经验,不相识点职场套路,如何在面试中过五关斩六将?如何打败面试官?如何拿下那梦寐以求的offer呢?
假如你的跳槽意向已经很确定了,那么请接着往下看!
跳槽最重要的一步自然是面试,立刻跳槽季,网上出现了各种面试题,一时会让人眼花缭乱,分不清最该看哪个,所以小编耗时一星期为大家整理了一些主动化软件测试面试的真题,希望资助大家度过面试,拿到心仪的offer。(本文展示的40道面试题只是本次小编整理的一部分,由于内容太多,所以还有一大部分没有展示出来,都整理好在我的文档里,如需要完整的面试题以及其他测试学习资料的的小伙伴们可以点击下方链接进裙领取,最重要的是免费的!免费的!免费的!)
本文共 2W字左右,预计阅读时间 20 分钟,一次性没时间看完的话,剧烈建议收藏起来!
目次
- 1.给你一个字符串,你怎么判定是不是ip地址?手写这段代码,并写出测试用例
- 2.请进行测试用例设计:一串数字,闰年的判别
- 3.请你说一说简单用户界面登岸过程都需要做哪些分析
- 4.请对这个系统做出测试用例:一个系统,多个摄像头,抓拍车牌,识别车牌,上传网上,网上展示
- 5.请你对吃鸡游戏进行压力测试
- 6.请你对朋侪圈点赞功能进行测试
- 7.假如做一个杯子的检测,你如何测试(经典)
- 8.如何对一个页面进行测试
- 9.如何对水壶进行测试(同水杯)
- 10.如何对淘宝搜索框进行测试
- 11.如何对一瓶矿泉水进行测试
- 12.请你说一下jmeter
- 13.为什么使用Jmeter:
- 14. 请你进行测试:前端下拉框实现,测试下拉框定位方式
- 15. 请你来聊一聊appium断言
- 16.请你来说一下购物车的测试用例
- 17.请你进行一下弱网模拟
- 18.你写的测试步伐是怎么样的,你写过前端、后端步伐吗?
- 19.请问你有没有写过测试脚本,怎么写的?
- 20.请问你有没有写过web测试,怎么写的?
- 21.请问测试路由器怎么测,用下令行还是界面?
- 22.请你回答一下如何测试手机开机键?
- 23.请问你遇到过哪些印象深刻的bug,接口测试出现bug的原因有哪些?
- 24.你在做项目中有做过压力测试吗,怎么做
- 25.请问你在项目中关于功能测试和接口测试是怎么做的
- 26.请问你有用过什么测试工具吗,用过哪些?
- 27.请你设计一个微信朋侪圈点赞的测试用例
- 28.请问假如用户点击微博的关注图标但是app上面没有反应,应该怎么排查这个题目
- 29.在做测试的过程中,假如前端和后端吵起来了都在踢皮球觉得对方该改代码,你怎么办?
- 30.假如广东用户头条app刷不出东西了,你应该怎么排查题目
- 31.请你说一下能不能用机器学习去进行主动化测试,如何监控非常流量,假如是脉冲呢,如何和正常流量作区分
- 32.请你说一说当前工作中涉及的测试题目(测试流程和测试性能)
- 33. 请你说一说洗牌题目的思绪并手写代码,并设计测试用例
- 34.请你测试一卑鄙戏中英雄的技能
- 35.请你回答一下性能测试有哪些指标,对一个登录功能做性能测试,有哪些指标,怎么测出可同时处理的最大请求数目
- 36.请问你有没有做过什么单元测试,怎么进行单元测试,对一个没有参数没有返回值但可能对全局变量有影响的怎么进行单元测试
- 37.请问你有没有做过压力测试
- 38. 对于有系统大量并发访问,你会如何做测试,有什么建议
- 干货分享
1.给你一个字符串,你怎么判定是不是ip地址?手写这段代码,并写出测试用例
参考回答:
P的格式:(1~ 255).(0~ 255).(0~ 255).(0~255) 方法一:基于对字符串的处理 ```cpp public static void main(String[] args){ Scanner scanner = new Scanner(http://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位),最长为:http://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.length() > 1 && arr.charAt(0) == '0'){ return false; } //对每个字符串的每个字符进行逐一判定,假如不是数字0-9,则黑白法的IP for(int j = 0; j < arr.length(); j++){ if (arr.charAt(j) < '0' || arr.charAt(j) > '9'){ return false; } } } //对拆分的每一个字符串进行转换成数字,并判定是否在0~255 for(int i = 0; i < arr.length; i++){ int temp = Integer.parseInt(arr); if(i == 0){ if (temp < 1 || temp > 255){ return false; } } else{ if(temp < 0 || temp > 255){ return false; } } } return true; }
方法二:正则表达式
public static void main(String[] args) { Scanner scanner = new Scanner(http://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 ipStr) { String ipRegEx = "^([1-9]|([1-9][0-9])|(1[0-9][0-9])|(2[0-4][0-9])|(25[0-5]))(\\.([0-9]|([1-9][0-9])|(1[0-9][0-9])|(2[0-4][0-9])|(25[0-5]))){3}$"; Pattern pattern = Pattern.compile(ipRegEx); Matcher matcher = pattern.matcher(ipStr); if (matcher.matches()) { return true; } else { return false; } }
等价类分别:
2.请进行测试用例设计:一串数字,闰年的判别
参考回答:
判定闰年的尺度是:能整除4且不能整除100,能整除400。
设定合法的年份为1-9999
public class Test2 { public static void main(String[] args) { Scanner in = new Scanner (http://System.in); int year=in.nextInt(); if(year<=0||year>9999) { System.out.println("请输入正确的年份"); } if((year%4==0&&year%100!=0)||year%400==0) { System.out.println("闰年"); }else { System.out.println("不是闰年"); } } }
测试用例:
3.请你说一说简单用户界面登岸过程都需要做哪些分析
参考回答:
输入正确的用户名和暗码,点击提交按钮,验证是否能正确登录。
输入错误的用户名或者暗码,验证登录会失败,并且提示相应的错误信息。
登录成功后可否可否跳转到正确的页面
用户名和暗码,假如太短或者太长,应该怎么处理
用户名和暗码,中有特别字符(好比空格),和其他非英文的环境
记住用户名的功能
登岸失败后,不能记录暗码的功能
用户名和暗码前后有空格的处理
暗码是否非明文显示显示,使用星号圆点等符号代替。
牵扯到验证码的,还要考虑笔墨是否扭曲过度导致辨认难度大,考虑颜色(色盲使 用者),刷新或换一个按钮是否好用
登录页面中的注册、忘记暗码,登出用另一帐号登岸等链接是否正确
输入暗码的时间,大写键盘开启的时间要有提示信息。
什么都不输入,点击提交按钮,查抄提示信息。
布局是否合理,testbox和按钮是否整齐。
testbox和按钮的长度,高度是否符合要求。
界面的设计风格是否与UI的设计风格统一。
界面中的笔墨简洁易懂,没有错别字。
打开登录页面,需要的时间是否在需求要求的时间内。
输入正确的用户名和暗码后,查抄登录成功跳转到新页面的时间是否在需求要求的时间内。
模拟大量用户同时登岸,查抄肯定压力下可否正常登岸跳转。
登录成功后天生的Cookie,是否是httponly (否则轻易被脚本偷取)。
用户名和暗码是否通过加密的方式,发送给Web服务器。
用户名和暗码的验证,应该是用服务器端验证, 而不能单单是在客户端用javascript 验证。
用户名和暗码的输入框,应该屏蔽SQL注入攻击。
用户名和暗码的的输入框,应该禁止输入脚本 (防止XSS攻击)。
防止暴力破解,检测是否有错误登岸的次数限定。
是否支持多用户在同一机器上登录。
同一用户可否在多台机器上登录。
是否可以全用键盘操作,是否有快捷键。
输入用户名,暗码后按回车,是否可以登岸。
输入框可否可以以Tab键切换。
不同浏览器下可否显示正常且功能正常(IE,6,7,8,9, Firefox, Chrome, Safari,等)。
同种浏览器不同版本下可否显示正常且功能正常。
不同的平台是否能正常工作,好比Windows, Mac。
移动装备上是否正常工作,好比Iphone, Andriod。
不同的分辨率下显示是否正常。
不同语言环境下,页面的显示是否正确。
4.请对这个系统做出测试用例:一个系统,多个摄像头,抓拍车牌,识别车牌,上传网上,网上展示
参考回答:
1.功能:
- 每个摄像头都能抓拍车牌;
- 每个摄像头抓拍到的车牌能正常交给系统处理;
- 系统能够正确识别车牌;
- 系统能够将识别出的车牌上传;
- 上传至网络的车牌能够正常展示出来;
一.功能测试
使用正常的车牌,保持车牌静止,查抄每个摄像头是否能抓拍车牌;
使用雷同非车牌的写有字的纸板,查抄每个摄像头是否抓拍;
使用正常的车牌,保持车牌较高速移动,查抄每个摄像头是否能抓拍车牌;
在多种环境下查抄每个摄像头抓拍到的车牌可否正常交给系统处理,如临时断电、断网后可否正常将数据交给系统;
使用抓拍到的正常的车牌,交由系统处理,查抄系统可否识别车牌;
使用非车牌的其他图片,交由系统处理,查抄系统可否识别;
在多种环境下查抄系统可否将正常识别出的车牌进行上传,如临时断电、断网后未上传数据是否能继续上传;
构造非车牌的其他内容的数据,查抄系统可否将非常内容进行上传;
查抄上传至网络的车牌可否正常展示出来;
上传非车牌的其他内容的数据,查抄可否正常显示出来。
二.性能测试
同时向一个摄像头展示多个静止的车牌,查抄摄像头可否抓拍到多个车牌;
同时向一个摄像头展示多个较高速运动的车牌,查抄摄像头可否抓拍到多个车牌;
抓拍后,查抄系统识别车牌的时间是否在需求要求的时间内;
模拟大量抓拍照片同时交由系统处理,查抄肯定压力下系统可否正常识别车牌;
模拟大量车牌同时上传,查抄肯定压力下可否上传成功。
三.安全性测试
查抄是否能够通过给车牌加装金饰等方法,使摄像头无法抓拍或抓拍后系统无法正常识别车牌。
5.请你对吃鸡游戏进行压力测试
参考回答:
起首明确需要测试压力的内容:
a.硬盘I/o
b.内存
c.CPU
a.长连接
a1.最大连接数
a2.流量(内网、外网、进、出)
b.长连接短周期(雷同Http的TCP应用,这个比较特别的一个需求,专门针对LoginAgent)
b1.每秒创建的连接数
b2.实际处理本领
a.每秒变乱数
b.每秒锁等待数
c.匀称延时(ms)
d.CPU暂用
a.数据库执行的多线程
b.多连接处理
Windows Server环境测试方式
使用Server自带的性能监测器设置各个进程的监测参数。Window的这个主动工具做的相当强大。大家自己摸一摸基本就会用了。每个参数都由详细的阐明。
a.对于数据库的性能测试上,如今由于所有的游戏服务器构架在DB前面都有一个实现DB缓冲功能的进程,以淘汰数据库频繁的读写操作。所以其实数据库的读是一个轻量级的数目;而数据库的写操作是一个周期性能过程。案例设计肯定要能够驱动这种周期性能过程。好比我们游戏的战斗,导致游戏玩家数据的改变,或驱动所有在线玩家数据的周期性存储。
b.选择具有代表性,并且最频繁的游戏操作。用于进行最高用户在线的各种性能指标采集。如,开枪、道具拾取、道具使用、移动、聊天
c.聊天性能测试
广播聊天是最为磨练游戏信息发送本领的功能。通过进行全局广播的压力测试。我们可以获取服务器进程发送信息到客户端的最高承载量。进而可以对我们的各种广播功能进行一个预估和频率限定。
d.同屏玩家的移动测试
移动+广播。这两种信息,基本是网络游戏流量的70-80%左右。同屏玩家数目,将会增加各种数据的广播需求,非常影响游戏性能。所以同屏的移动测试也是广播测试的一个必要环节。需要根据实际效果进行得当的优化。
e.大量玩家同时登录测试
玩家登录时,有大量的信息需要进行分配和初始化;同时也有大量的数据需要下传客户端。服务器需要进行大量的TCP连接创建。所以是一个比较关键的过程。这个测试案例是一个比较特别,但是运营是肯定会遇到的案例。
f.由于线程池处理变乱,随着变乱的时耗,存在一个最优线程数的题目。过多的线程反而会低落服务器服从
a.进行测试需要过细思考客户端性能影响服务器末了表现的可能性。好比
a1.模拟客户端的性能无法有用处理服务器返复书息,可能就导致服务器发送的信息缓存在服务器系统缓存,从而表现出服务器内存不停增加。表现为服务器发送本领不敷,其实可能根本就是客户端的性能题目
a2.客户端性能题目,导致发起的请求数过少,从而导致单位时间内服务器处理的请求过少。表现为服务器性能不敷,其实根本就是客户端的请求本领不敷。
b.网络带宽导致末了表现不敷
b1.确认服务器的各个网卡,以及相互的带宽。否则可能因为相互带宽,导致服务器对于客户端请求的处理延时。表现为服务器卡机
b2.客户端模拟多个玩家,好比1000个玩家。而客户端的网卡或者客户端与服务器之间的中转服务器带宽过小,导致服务器数据发送不出,内存不停增加。表现为服务器发送本领不敷,其实是中央带宽题目。
c.debug i/o导致服务器性能降落
c1.进行性能测试,肯定要取消debug用的同步的i/o.好比我们服务器的debuginternalLog.同步i/o黑白常影响性能的,特别在压力测试下可能导致每秒上千上万乃至几十万次的执行。一处的文件写入操作就可以导致几十万次的处理本领变成几千次的处理本领。
c2.客户端制止进行阻塞操作导致模拟多用户性能降落,导致服务器表现性能降落
d.流量需要区分内网
网内、外网流量在游戏正式运行时是完全分开的。代价也是完全不同的。一个千M的外网是一个无法想象的运营成本,而kmbps/s如今已经是一个可以接受的代价。游戏进程需要进行不同网卡的配置和绑定。确定内外网流量。
6.请你对朋侪圈点赞功能进行测试
参考回答:
- 是否可以正常点赞和取消;
- 点赞的人是否在可见分组里;
- 点赞状态是否能即时更新显示;
- 点赞状态,共同好友是否可见;
- 性能检测,网速快慢对其影响;
- 点赞显示的是否正确,一行几个;
- 点赞是否按时间进行排序,头像对应的是否正确;
- 是否能在消息列表中显示点赞人的昵称、5.不同手机,系统显示界面如何;
备注;
- 可扩展性测试,点赞后是否能发表评论;
- 是否在未登录时可查看被点赞的信息。
7.假如做一个杯子的检测,你如何测试(经典)
水倒水杯容量的一半
水倒规定的安全线
水杯容量刻度与其他水杯同等
盖子拧紧水倒不出来
烫手验证
使用最大次数或时间
掉地上不易损坏
盖子拧到什么程度水倒不出来
保温时间长
杯子的耐热性
杯子的耐寒性
长时间放置水不会漏
杯子上放置重物达到什么程度杯子会被损坏
外观完整、美观
巨细与设计一样(高、宽、容量、直径)
拿着舒服
材质与设计一样
杯子上的图案掉落
图案遇水溶解
杯子使用的材质毒或细菌的验证
高温材质开释毒性
低温材质开释毒性
倒水方便
喝水方便
携带方便
使用简单,轻易操作
防滑步伐
杯子能够容纳果汁、白水、酒精、汽油等。
杯子加包装(有添补物),六面震惊,查抄产物是否能应对铁路/公路/航空运输。
杯子在不同地方、温度环境下都可以正常使用。
8.如何对一个页面进行测试
参考回答:
- UI测试:页面布局、页面样式查抄、控件长度是否够长;显示时,是否会被截断;支持的快捷键,Tab键切换焦点顺序正确性等。
- 功能测试:页面上各类控件的测试范围,测试点。联合控件的实际作用来补充查抄点:好比, 暗码框是否*显示, 输入是否做trim处理等。
- 安全测试:输入特别字符,sql注入,脚本注入测试。配景验证测试,对于较重要的表单 ,绕过js查验配景是否验证;数据传输是否加密处理,好比, 直接请求转发,地址栏直接显示发送字符串?
- 兼容性测试
- 性能测试
9.如何对水壶进行测试(同水杯)
参考回答:
水倒水壶容量的一半
水倒规定的安全线
水壶容量刻度与其他水壶同等
盖子拧紧水倒不出来
烫手验证
使用最大次数或时间
掉地上不易损坏
盖子拧到什么程度水倒不出来
保温时间长
壶的耐热性
壶的耐寒性
长时间放置水不会漏
壶上放置重物达到什么程度壶会被损坏
外观完整、美观
巨细与设计一样(高、宽、容量、直径)
拿着舒服
材质与设计一样
壶上的图案掉落
图案遇水溶解
壶使用的材质毒或细菌的验证
高温材质开释毒性
低温材质开释毒性
倒水方便
喝水方便
携带方便
使用简单,轻易操作
防滑步伐
壶能够容纳果汁、白水、酒精、汽油等。
壶加包装(有添补物),六面震惊,查抄产物是否能应对铁路/公路/航空运输。
壶在不同地方、温度环境下都可以正常使用。
10.如何对淘宝搜索框进行测试
参考回答:
1.功能测试
1.输入关键字,查看: 返回效果是否准确,返回的文本长度需限定
1.1输入可查到效果的正常关键字、词、语句,检索到的内容、链接正确性;
1.2输入不可查到效果的关键字、词、语句;
1.3输入一些特别的内容,如空、特别符、标点符、极限值等,可引入等价类分别的方法等;
2.效果显示:标题,卖家,贩卖量,单行/多行,是否有图片
3.效果排序:代价 销量 评价 综合
4.返回效果巨大时,限定第一页的实际量,需支持翻页
5.多选项搜索:关键字 品牌 产地 代价区间 是否天猫 是否天下购
6.是否支持模糊搜索,支持通配符的查询
7, 网速慢的环境下的搜索
8.搜索效果为空的环境
9.未登录环境和登录环境下的搜索(登录环境下 存储用户搜索的关键字/搜索风俗)
1.压力测试:在不同发用户数压力下的表现(评价指标如响应时间等)
2.负载测试:看极限能承载多大的用户量同时正常使用
3.稳定性测试:常规压力下能保持多久持续稳定运行
4.内存测试:有无内存泄漏现象
5.大数据量测试:如模拟从巨大的海量数据中搜索效果、或搜索出海量的效果后列示出来,看表现如何等等。
1.依据不同的查询效果会有相干的人性化提示,查不到时告知?查到时统计条数并告知?有疑似输入条件错误时提示可能正确的输入项等等处理;
2.查询出的效果罗列有序,如按点击率或其他排序规则,确保每次查询出的效果位置按规则列示方便定位,显示字体、字号、色彩便于识别等等;
3.标题查询、全文检索、模糊查询、容错查询、多关键字构造查询(空格间格开)等实用的检索方式是否正常?
4.输入搜索条件的控件风格设计、位置摆放是否夺目便于使用者注意到,有否快照等快捷查看方式等人性化设计?
1.WINDOWS/LINUX/UNIX等各类操作系统下及各版本条件下的应用
2.IE/FIREFOX/GOOGLE/360/QQ等各类浏览器下及各版本条件下、各种显示分辨率条件下的应用
3.SQL/ORACLE/DB2/MYSQL等各类数据库存储环境下的兼容性测试
4.简体中文、繁体中文、英文等各类语种软件平台下的兼容性测试
5.IPHONE/IPAD、安卓等各类移动应用平台下的兼容性测试
6.与各相干的监控步伐的兼容性测试,如输入法、杀毒、监控、防火墙等工具同时使用
1.被删除、加密、授权的数据,不答应被SQL注入等攻击方式查出来的,是否有安全控制设计;
2.录入一些数据库查询的保留字符,如单引号、%等等,造成查询SQL拼接出的语句产生毛病,如可以查出所有数据等等,这方面要有一些黑客攻击的头脑并引入一些工具和技能,如爬网等。
3.通过白盒测试技能,查抄一下在步伐设计上是否存在安全方面的隐患;
4.对涉及国家安全、法律禁止的内容是否进行了相干的过滤和控制;
11.如何对一瓶矿泉水进行测试
参考回答:
界面测试:查看外观是否美
功能度:查看水瓶漏不漏;瓶中水能不能被喝到
安全性:瓶子的材质有没有毒或细菌
可靠性:从不同高度落下的损坏程度
可移植性:再不同的地方、温度等环境下是否都可以正常使用
兼容性:是否能够容纳果汁、白水、酒精、汽油等
易用性:是否烫手、是否有防滑步伐、是否方便饮用
用户文档:使用手册是否对的用法、限定、使用条件等有详细描述
疲惫测试:将盛上水(案例一)放24小时查抄泄漏时间和环境;盛上汽油(案例二)放24小时查抄泄漏时间和环境等
压力测试:用根针并在针上面不停加重量,看压强多大时会穿透
跌落测试:测试在何种高度跌落会破坏水瓶
12.请你说一下jmeter
参考回答:
Jmeter:Apache JMeter是Apache构造开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试范畴。它可以用于测试静态和动态资源,例如静态文件、Java 小服务步伐、CGI 脚本、Java 对象、数据库、FTP 服务器, 等等。JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。别的,JMeter能够对应用步伐做功能/回归测试,通过创建带有断言的脚本来验证你的步伐返回了你期望的效果。为了最大限度的机动性,JMeter答应使用正则表达式创建断言。
13.为什么使用Jmeter:
开源免费,基于Java编写,可集成到其他系统可拓展各个功能插件
支持接口测试,压力测试等多种功能,支持录制回放,入门简单
相较于自己编写框架或其他开源工具,有较为美满的UI界面,便于接口调试
多平台支持,可在Linux,Windows,Mac上运行
Jmeter的用例格式为jmx文件,实际为xml格式,感爱好可以学习下自己定制天生想要的jmx文件。
每个功能模块为一个独立的jmx文件。增加可维护性。(只管不要将一个jmx文件放入太多功能,后期维护成本会很高。)
模块的私有变量保存在模块中,多模块共有的(例如服务器ip端口等)可以考虑存在单独的文件中读取。
接口测试不要放太多线程,毕竟不是做压力测试,意义也不大。
编写测试用例
文件——保存为——确定:
4. Jmeter运行模式及参数
GUI模式
打开已有的jmx文件(文件——打开)
点击启动按钮运行
下令行模式
依靠:
配置jmeter环境变量(windows下为将${jmeterhome}/bin参加Path变量)
假如未参加环境变量,在执行的时间可以直接给出全路径或在${jmeterhome}/bin下执行
下令:
jmeter -n -t -l
参数:
-h 资助 -> 打印出有用的信息并退出
-n 非 GUI 模式 -> 在非 GUI 模式下运行 JMeter
-t 测试文件 -> 要运行的 JMeter 测试脚本文件
-l jtl文件 -> 记录效果的文件
-r 远程执行 -> 启动远程服务
-H 代理主机 -> 设置 JMeter 使用的代理主机
-P 代理端口 -> 设置 JMeter 使用的代理主机的端口号
-j 日志文件->设置JMeter日志文件的名称
JMeter -n -t my_test.jmx -l log.jtl -H my.proxy.server -P 8000
JMeter 默认去当前目次寻找脚本文件,并把日志记录在当前目次。好比你在 C:\tools\apache-jmeter-2.11\bin 目次下执行以上下令,JMeter 会去该目次下寻找 test.jmx 脚本并把执行效果放在该目次。假如你的脚本在其他目次,而且想要把执行效果放在别的文件夹,可以使用绝对路径告诉 JMeter。
GUI界面打开聚合陈诉
在GUI界面创建一个聚合陈诉
聚合陈诉界面点击浏览,选中天生的.jtl文件,打开
8. Jmeter使用
Jmeter创建接口测试筹划实例
测试用例应该作为测试的基础内容,而用例的结构可能分别,则是用例的基础(突然在这里想说一下,用例仅仅是一项测试运动的纲要,有最好,没有的话能包管质量也OK。更不用说用例的格式题目,无论是表格还是导图,其实都无所谓!本文的用例是指jmx文件中的控件结构)。
模块名称(测试筹划):每个模块独立分别为一个jmx文件(例如登岸模块),最好与接口类逐一对应。对应的服务器信息,数据库信息等可存在这里。
数据准备:用于测试数据的准备(例如账号信息)。
效果查看:用于放置需要查看效果的控件(例如效果树)。
线程组:所有的接口测试用例放在线程组下,集中界说线程等信息
获取线程对应测试数据:用于获取针对独立线程的测试数据,例如在数据准备里面获得了账号信息,在这里根据账号信息去数据库获取对应的名称,ID等信息。
请求名称:用简单控制器为文件夹,内有不同的请求。简单控制器为一个独立的接口,不同请求对应不同的代码路径(例如成功请求,失败请求等)。建议请求名称最好用英文情势,否则后期持续集成或许会出现题目(no zuo no die!)。
在每条请求内放置正则匹配(用于应对需要返回值作为下次请求的参数的环境)以及断言。
14. 请你进行测试:前端下拉框实现,测试下拉框定位方式
参考回答:
Selenium+Python主动化测试对下拉菜单的定位
- 通过selenium.webdriver.support.ui的Select进行定位
下拉菜单如下图:
定位代码:
```python from selenium.webdriver.support.ui import Select # 通过index进行选择 Select(driver.find_element_by_id("gender")).select_by_index(1) # 通过value进行选择 Select(driver.find_element_by_id("gender")).select_by_value("2") # 通过选项笔墨进行选择 Select(driver.find_element_by_id("gender")).select_by_visible_text("Male") # 注:Select only works on <select> elements(Select只对<select>标签的下拉菜单有用).
非标签的下拉菜单如下图所示:
定位非标签的下拉菜单中的选项,需要两个步骤,先定位到下拉菜单,再对此中的选项进行定位。
定位代码:
# 先定位到下拉菜单 drop_down = driver.find_element_by_css_selector("div#select2_container > ul") # 再对下拉菜单中的选项进行选择 drop_down.find_element_by_id("li2_input_2").click() # 注:也可以用此方法定位<select>标签的下拉菜单。
15. 请你来聊一聊appium断言
参考回答:
ppium-unittest单元测试框架中,TestCase 类提供了一些方法来查抄并陈诉故障,如下图:
上面所提供的断言方法(assertRaises(), assertRaisesRegexp()除外)吸收 msg 参数,假如指定, 将体作为失败的错误信息。
try: num = input("Enter a number:") assert (num == 10), "The number is not 10!" except AssertionError,msg: print msg print ("Sadly, num not equals to 10")
在上面的步伐中,运行到的python 的非常与断言。通过 raw_input()方法要求用户输入一个数字,通过 arrsert 判定用户输入的 num 是否即是10 ;通过 python 的 AssertionError 范例的非常来实捕捉这个非常, msg 吸收非常信息并打印, 注意, msg 所结构的非常信息是我们自界说的(“The number is not10!”) 。
assertEqual(first, second, msg=None):判定 first 和 second 的值是否相等,假如不相等则测试失败,msg 用于界说失败后所抛出的异 常信息。
assertNotEqual(first, second, msg=None):测试 first 和 second 不相等,假如相等,则测试失败。
assertTure(expr,msg=None)、assertFalse(expr,msg=None):测试 expr 为 Ture(或为 False)
以下为python 2.7 版新增的断言方法:
assertIs(first, second, msg=None)、assertIsNot(first, second, msg=None):测试的 first 和 second 是(或 不是)相同的对象。
assertIsNone(expr, msg=None)、assertIsNotNone(expr, msg=None):测试 expr 是(或 不是)为 None
assertIn(first, second, msg=None)、assertNotIn(first, second, msg=None):测试 first 是(或不是)在 second 中。second 包含是否包含 first 。
assertIsInstance(obj, cls, msg=None)、assertNotIsInstance(obj, cls, msg=None):测试 obj 不(或 不是)cls 的一个实例。(obj 和 cls 可以是一个类或元组) ,要查抄他们的范例使用 assertIs(type(obj), cls)。
16.请你来说一下购物车的测试用例
参考回答:
界面布局、排版是否合理;笔墨是否显示清晰;不同卖家的商品是否区分明显。
未登录时:
将商品参加购物车,页面跳转到登录页面,登录成功后购物车数目增加;
点击购物车菜单,页面跳转到登录页面。
登录后:
所有链接是否跳转正确;
商品是否可以成功参加购物车;
购物车商品总数是否有限定;
商品总数是否正确;
全选功能是否好用;
删除功能是否好用;
填写委托单功能是否好用;
委托单中填写的代价是否正确显示;
代价总计是否正确;
商品笔墨太长时是否显示完整;
店肆名字太长时是否显示完整;
创新券商品是否打标;
购物车中下架的商品是否有特别标识;
新参加购物车商品排序(添加购物车中存在店肆的商品和购物车中不存在店肆的商品);
是否支持TAB、ENTER等快捷键;
商品删除后商品总数是否淘汰;
购物车结算功能是否好用。
不同浏览器测试。
删除功能是否有提示;是否有回到顶部的功能;商品过多时结算按钮是否可以浮动显示。
压力测试;并发测试。
17.请你进行一下弱网模拟
参考回答:
方法一:charles弱网模拟
图片
配置参数解析:
bandwidth —— 带宽,即上行、下行数据传输速度
utilisation —— 带宽可用率,大部分modern是100%
round-trip latency —— 第一个请求的时延,单位是ms。
MTU —— 最大传输单元,即TCP包的最大size,可以更真实模拟TCP层,每次传输的分包环境。
Releability —— 指连接的可靠性。这里指的是10kb的可靠率。用于模拟网络不稳定。
Stability —— 连接稳定性,也会影响带宽可用性。用于模拟移动网络,移动网络连接一般不可靠。
使用chrome的webview调试工具,缺点是只实用于web页面的弱网模拟。
方法二:chrome的webview调试工具弱网模拟
使用chrome的webview调试工具,缺点是只实用于web页面的弱网模拟。
具体步骤:
应用打开webview调试功能,具体如下:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { WebView.setWebContentsDebuggingEnabled(true); }
手机链接电脑,运行APP,进入具体H5页面;
chrome的DevTools中打开Webview:进入chrome://inspect/#devices,会显示已经连接装备,选中待调试webview的inspect
network页面,No throttling下拉框,可以进行网络模拟。
方法三:iOS手机自带Network Link Conditioner 弱网模拟
iPhone手机打开开发者选项
具体参考:
设置-开发者选项 > Network Link Conditioner 入口。
系统已经内置常见网络配置,也可以增加自界说配置。
具体配置参数:
in Bandwidth 下行带宽,即下行网络速度
In packet loss 下行丢包率
in delay 下行延迟,单位ms
out bandwidth 上行带宽
out packet loss 上行丢包率
out delay 上行延迟
DNS delay DNS解析延迟
protocol 支持Any,IPV4、IPV6
interface 支持Any,WI-Fi,cellular(蜂窝网)
18.你写的测试步伐是怎么样的,你写过前端、后端步伐吗?
参考回答:
开发测试驱动步伐一般分为4步:
- 指出需要的新特性。可以记录下来,然后为其编写一个测试。
- 编写特性的概要代码,这样步伐就可以运行而没有任何语法等方面的错误,但是测试会失败。看到测试失败是很重要的,这样就能确定测试可以失败。假如测试代码中出现了错误,那么就有可能出现任何环境,测试都会成功,这样即是没测试任何东西。再强调一遍:在试图测试成功之前,先要看到它失败。
- 为特性的概要编写虚设代码,能满足测试要求就行。不用准确的实现功能,只要包管测试可以通过即可。这样一来就可以包管在开发的时间总是通过测试了,(除了第一次测试的时间)乃至在最初实现功能时亦是云云。
- 如今重写(或者重构)代码,这样它就会做自己应该做的事,从而包管测试不停成功。
在编码完成时,应该包管代码处于健康状态–不要遗留下任何测试失败。
写过前端步伐。
19.请问你有没有写过测试脚本,怎么写的?
参考回答:
然后,撰写测试桩与驱动,白盒测试包管代码逻辑中循环和分支都能够走到,黑盒测试包管函数和起首,代码走查联合动态单步跟踪以及观察日志与文件输出,网络、CPU状态。
功能脚本接口正确,输入输出符合设计预期。
对于非常处理,特别是变量的查抄需要特别关注,变量在使用前都需要进行查抄,是否为空?或者为0?对于文件名和路径必须查抄,确认文件是否存在,路径是否可达之后再进行后续操作。
别的,需要考虑所依靠的其他功能脚本以及二进制工具,这些功能性单元应该如何使用,调用后的返回会有哪些环境,对于正常和非常效果,脚本是否能够捕捉到并且作出正确的判定。
20.请问你有没有写过web测试,怎么写的?
参考回答:
Web测试主要从下面几个大方向考虑:
1.功能测试
主要做链接测试,表单测试,cookies测试,设计语言测试等
考虑连接速度测试,以及负载测试,例如:Web应用系统能答应多少个用户同时在线?假如超过了这个数目,会出现什么现象?Web应用系统可否处理大量用户对同一个页面的请求?还有压力测试
好比导航测试,图形测试,内容测试,整体界面测试等
市场上有许多不同的操作系统范例,最常见的有Windows、Unix、Macintosh、Linux等。Web应用系统的最终用户究竟使用哪一种操作系统,取决于用户系统的配置。这样,就可能会发生兼容性题目,同一个应用可能在某些操作系统下能正常运行,但在别的的操作系统下可能会运行失败。因此,在Web系统发布之前,需要在各种操作系统下对Web系统进行兼容性测试。
如今的Web应用系统基本采用先注册,后登岸的方式。因此,必须测试有用和无效的用户名和暗码,要注意到是否巨细写敏感,可以试多少次的限定,是否可以不登岸而直接浏览某个页面等。
Web应用系统是否有超时的限定,也就是说,用户登岸后在肯定时间内(例如15分钟)没有点击任何页面,是否需要重新登岸才能正常使用。
为了包管Web应用系统的安全性,日志文件是至关重要的。需要测试相干信息是否写进了日志文件、是否可追踪。
当使用了安全套接字时,还要测试加密是否正确,查抄信息的完整性。
服务器端的脚本常常构成安全毛病,这些毛病又常常被黑客利用。所以,还要测试没有颠末授权,就不能在服务器端放置和编辑脚本的题目。
21.请问测试路由器怎么测,用下令行还是界面?
参考回答:
可以采用lperf这个下令
Lperf是一个网络性能测试工具,可以丈量最大tcp和udp带宽,具有多种参数和特性,可以记录带宽,延迟抖动,数据包丢失,通过这些信息可以发现网络题目,查抄网络质量,定位网络瓶颈。
iperf的使用非常简单,测试的原理是在wan口连接一台PC机,在LAN口连接一台PC,两边分别运行iperf服务端和客户端模式,用来丈量LAN->WAN和WAN->LAN性能。具体下令如下:
服务端:iperf -s -w 1m
客户端:iperf -c -w 1m -t 20 -P 10
含义是TCP wndowsize 为1MByte,测试时间是20s,线程是10。
22.请你回答一下如何测试手机开机键?
参考回答:
功能测试:
按下开机键,屏幕可否亮起
性能测试:
按下开机键,屏幕可否在规定时间内亮起
压力测试
一连多次按下开机键,观察屏幕是否能不停亮起,到多久时间失灵
健壮性测试
给定一个中了病毒的手机或者是淘汰许久的老机子,安歇开机键观察屏幕可否亮起
可靠性测试
一连按下开机键有限次数,好比1万次,记录屏幕未亮起的次数
可用性测试
开机键按下费不费力,开机键的形状设计是否贴合手指,开机键的位置设计是否方便
23.请问你遇到过哪些印象深刻的bug,接口测试出现bug的原因有哪些?
参考回答:
面试官询问遇到过哪些印象深刻的bug,其实它并不关心你描述的这个bug是否真的有价值,或有多曲折离奇?他只是:相识你平时工作中的测试本领
所以,这就要求的你平时工作中遇到bug时试着自己去定位,定位bug的过程远比你的单纯的执行测试用例有“价值”(自我技能进步的价值),在定位bug的过程中你需要掌握和运用更多知识。
别的,建议你平时养成总结的好风俗,发现的bug,开发办理了,最好问问他原因以及办理的方法,这样再遇到雷同题目时,自己也可以试着定位办理。遇到难办理的bug,也可以把最终的办理过程记录下来。(这不是就有素材了)
所以,建议你平时可以主动要求去分享一些自己工作中用到或学习的技能。或者多去参加团体运动,增强自己的表达本领。From:虫师
接口测试常见的bug有以下几个:
- 特别值处理不妥导致步伐非常退出或者崩溃
- 范例边界溢出,导致数据独处和写入不同等
- 取值边界外未返回正确的错误信息
- 权限未处理,可以访问其他用户的信息
- 逻辑校验不美满,可以利用毛病获取非正当长处
- 状态处理不妥,导致逻辑出现错误
- 数组范例item个数为0或者item重复时步伐非常退出
24.你在做项目中有做过压力测试吗,怎么做
参考回答:
- 起首对要测试的系统进行分析,明确需要对那一部分做压力测试,好比秒杀,支付
- 如何对这些测试点进行施压
第一种方式可以通过写脚本产生压力机器人对服务器进行发包收报操作
第二点借助一些压力测试工具好比Jmeter,LoadRunner
需要用压力测试工具或者其他方法录制脚本,模拟用户的操作
需要明确压力测试限定的数目,即用户并发量
通过测试可以得到吞吐量,匀称响应时间等数据,这个数据的背后是整个配景处理逻辑综相助用的效果,这时间就可以先关注系统的CPU,内存,然后对比吞吐量,匀称响应时间达到瓶颈时这些数据的环境,然后就能确认性能题目是系统的哪一块造成的
25.请问你在项目中关于功能测试和接口测试是怎么做的
起首订定测试筹划,然后进行测试设计,将在测试筹划阶段指定的测试运动分解,进而细化,为若干个可执行步伐的子测试过程,然后执行测试,按照测试筹划使用测试用例对待测项目进行逐一的,详细的排查分析评估,末了对测试效果进行统计和分析,
什么是接口(API)
API全称Application Programming Interface,这里面我们其实不用去关注AP,只需要I上就可以。一个API就是一个Interface。我们无时不刻不在使用interfaces。我们乘坐电梯里面的按钮是一个interface。我们开车一个踩油门它也是一个interface。我们盘算机操作系统也是有许多的接口。(这是目前个人找到比较好理解的一段表明)
接口就是一个位于复杂系统之上并且能简化你的使命,它就像一个中央人让你不需要相识详细的所有细节。那我们今天要讲的Web API就是这么一类东西。像谷歌搜索系统,它提供了搜索接口,简化了你的搜索使命。再像用户登录页面,我们只需要调用我们的登录接口,我们就可以达到登录系统的目的。
如今市面上有非常多种风格的Web API,目前最流行的是也轻易访问的一种风格是REST或者叫RESTful 风格的API。从如今开始,以下我提到的所有API都是指RESTful风格的API。
什么是接口测试和为什么要做接口测试
接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要查抄数据的交换,传递和控制管理过程,以及系统间的相互逻辑依靠关系等。
如今许多系统前后端架构是分离的,从安全层面来说,只依靠前端进行限定已经完全不能满足系统的安全要求(绕过前端太轻易了),需要后端同样进行控制,在这种环境下就需要从接口层面进行验证。
如今系统越来越复杂,传统的靠前端测试已经大大低落了服从,而且如今我们都推崇测试前移,希望测试能更早的介入测试,那接口测试就是一种赶早介入的方式。例如传统测试,你是不是得等前后端都完成你才能进行测试,才能进行主动化代码编写。而假如是接口测试,只需要前后端界说好接口,那这时主动化就可以介入编写接口主动化测试代码,手工测试只需要后端代码完成绩可以介入测试后端逻辑而不用等待前端工作完成。
接口测试的策略
接口测试也是属于功能测试,所以跟我们以往的功能测试流程并没有太大区别,测试流程依旧是:
- 测试接口文档(需求文档)
- 根据接口文档编写测试用例(用例编写完全可以按照以往规则来编写,例如等价类分别,边界值等设计方法)
- 执行测试,查看不同的参数请求,接口的返回的数据是否达到预期。
26.请问你有用过什么测试工具吗,用过哪些?
参考回答:
主动化测试工具用过selenium和appium
性能测试工具有用过Jmeter
27.请你设计一个微信朋侪圈点赞的测试用例
参考回答:
功能测试:
点赞某条朋侪圈,验证是否成功
接口测试:
点赞朋侪圈,验证朋侪可否收到提示信息
性能测试
点赞朋侪圈,是否在规定时间显示效果,是否在规定时间在朋侪手机上进行提示
兼容性测试
在不同的终端好比ipad,手机上点赞朋侪圈,验证是否成功
28.请问假如用户点击微博的关注图标但是app上面没有反应,应该怎么排查这个题目
参考回答:
- 在Eclipse Devices窗口,选中app对应的包名,然后点击debug图标(绿色的小虫子),然后切换到Debug视图。
- 切换视图之后,可以看到debug下,app的线程列表。
- 对于main线程(第一个线程),选中,并将其挂起Suspend。
- 然后我们就可以看到,Suspend之后,main线程卡住的位置。
29.在做测试的过程中,假如前端和后端吵起来了都在踢皮球觉得对方该改代码,你怎么办?
参考回答:
此时就应该找技能领导拍板或leader们基于安全性、性能、可测试性、可维护性讨论敲定一个办理方案,做到开发环境方便开发,线上环境少配置
少依靠、少堕落时机。
30.假如广东用户头条app刷不出东西了,你应该怎么排查题目
参考回答:
- 查抄网络连接是否稳定,更换网络实验
- 更新头条版本实验
- 清除app缓存,应用数据
31.请你说一下能不能用机器学习去进行主动化测试,如何监控非常流量,假如是脉冲呢,如何和正常流量作区分
参考回答:
如何用机器学习去进行主动化测试,就是让主动化测试变得更加智能,在主动化测试过程中,当测试功能模块越来越多,没有太多的时间去全部覆盖,我们可以采用归纳学习的方式,基于主动化测试的执行效果或者手工测试执行的效果为数据输入,然后基于肯定的模型(例如:以通过率和模块的重要率盘算的匀称值)得出测试保举模块,或者当要执行一个功能模块时,基于汗青数据和模型(bug出现的错误相干性,功能相干性等)盘算出与该功能模块相干性最大模块,并保举测试。
如何监控非常流量:
tcpdump -i eth0 -w server.cap
对包文件使用第三方工具如:wireshark做分析
yum install iftop
yum install iptraf –y 或 yum install iptraf-ng -y
启动下令ifptraf-ng
32.请你说一说当前工作中涉及的测试题目(测试流程和测试性能)
参考回答:
在测试性能中,时常会出现脚本回访卡住的题目
原因有以下几种:
- runtimesetting 中的continue error没有勾选
- 录制的脚本中存在冗余的代码部分,需要对脚本进行优化,去除冗余的部分(优化脚本)
例如:在用FireFox录制脚本时,脚本中会产生一个叫”Url=http://download.cdn.mozilla.net/pub/firefox/releases/43.0.1/update/win32/zh-CN/firefox-43.0.1.complete.mar",“Referer=”, ENDITEM,”这样的代码(该代码出现的题目不止一处,在查找时肯定要注意。),这是因为采用firefox浏览器录制时产生的压缩文件,在脚本回放时卡住的原因正是因为这个(建议:能采用IE录制只管用IE浏览器)
办理办法:注释掉或者删撤消该段代码即可, 关联题目:在用loadrunner自带对比工具对比脚本后 找到需要关联的动态值。在关联后回放脚本时报错HTTP-status code 417(exception failed)错误时
产生的原因如下:
- 脚本中还存在没有关联或者关联失败的动态值,利用lr自带对比工具过细对比
- 脚本中的动态值被做了加密策略,过细查看脚本中动态值的部分,看看动态值是否被做了安全策略(随机天生或者打乱动态值顺序、在动态值中参加了特别符号),由于在tree-response中的动态值是未被加密的状态,在client向server发送请求时,client的动态值发给服务器,这时服务器的动态值已经被做了参数化,所以服务器不认准client向服务器发送的动态值。
办理办法:去掉动态值的安全策略即可(JVM参数)
33. 请你说一说洗牌题目的思绪并手写代码,并设计测试用例
参考回答:
洗牌题目:有个长度为2n的数组{a1,a2,a3,…,an,b1,b2,b3,…,bn},希望排序后{a1,b1,a2,b2,….,an,bn},请考虑有无时间复杂度o(n),空间复杂度0(1)的解法。
void PerfectShuffle(int *A,int n){ if(n <= 1){ return; }//if // int size = 2*n; int index,count; for(int i = n;i < size;++i){ // 交换个数 count = n - (i - n) - 1; // 待交换 index = i; for(int j = 1;j <= count;++j){ swap(A[index],A[i-j]); index = i - j; }//for }//for } };
可以就数组的范例,可以是int型的,浮点型的,还可以是大数范例,负数,进行测试。
34.请你测试一卑鄙戏中英雄的技能
参考回答:
测试的设计都是通用的,起首功能测试看功能有没有实现,然后再对性能、压力、容量、健壮性、安全性、可靠性、规复性、备份、协议、兼容性、可用性、配置、GUI这些非功能测试去思考。具体答案这里不再赘述
35.请你回答一下性能测试有哪些指标,对一个登录功能做性能测试,有哪些指标,怎么测出可同时处理的最大请求数目
参考回答:
性能测试常用指标:
从外部看,主要有
- 吞吐量:每秒钟系统能够处理的请求数,使命数
- 响应时间:服务处理一个请求或一个使命的耗时
- 错误率:一批请求中效果堕落的请求所占比例
从服务器的角度看
性能测试关注CPU,内存,服务器负载,网络,磁盘IO
对登录功能做性能测试
单用户登岸的响应界面是否符合预期
单用户登岸时配景请求数目是否过多
高并发场景下用户登录的响应界面是否符合预期
高并发场景下服务端的监控指标是否符合预期
高集合点并发场景下是否存在资源死锁和不合理的资源等待
长时间大量用户一连登录和登出,服务器端是否存在内存泄漏
怎么测出可同时处理的最大请求数目
可以采用性能测试工具(WeTest服务器性能),该工具是腾讯wetest团队出品,使用起来很简单方便,但测试功能相当强大,能提供10w+以上的并发量,定位性能拐点,测出服务器模型最大并发
36.请问你有没有做过什么单元测试,怎么进行单元测试,对一个没有参数没有返回值但可能对全局变量有影响的怎么进行单元测试
参考回答:
如何进行单元测试:
创建单元测试,该工具可以对任何类、接口、结构等实体中的字段、属性、构造函数、方法等进行单元测试。创建单元测试大抵可以分为两类:
第一类整体测试,整体测试是在类名称上右击鼠标,在下拉菜单中点击创建单元测试选项。这样就可以为整个类创建单元测试了,这时他会为整个类可以被测试的内容全部添加测试方法。开发职员直接在这些主动天生的测试方法中添加单元测试代码就可以了。
第二类单独测试,假如只想单独对某个方法、属性、字段进行测试,则可以将鼠标焦点放在这个待测试的项目名称之上,然后点击鼠标右键,在右键菜单中选择创建单元测试选项。这样就可以单独为某个方法创建单元测试了。
运行单元测试
查看测试效果
编写单元测试代码
测试没有参数的函数,它可能还有别的输入,例如全局变量,成员变量,或调用子函数获得的输入(这个要使用工具才能做到),只要函数需读取的,都应该设定初始值,假如完全没有,没有输入也是一种输入,还是测试就是了。同样道理,输出也不仅仅是返回值,没有返回值还可能修改了全局变量什么的,这些也是要判定的输出。
37.请问你有没有做过压力测试
参考回答:
在软件工程中,压力测试是对系统不停施加压力的测试,是通过确定一个系统的瓶颈或者不能吸收的性能点,来获得系统能提供的最大服务级别的测试。例如测试一个Web 站点在大量的负荷下,何时系统的响应会退化或失败。
38. 对于有系统大量并发访问,你会如何做测试,有什么建议
参考回答:
如何做高并发系统的测试,一般而言,整体的测试策略是:先针对部分系统进行性能测试及压力测试,得到各部分的峰值处理性能,再模拟整体流程测试,重点测试整体业务流程以及业务预期负荷,偏重测试以下几点:
- 不同省份,不同运营商CDN节点性能,可采用典型压力测试方案
- 核心机房BGP网络带宽,此部分重点在于测试各运行商的BGP网络可靠性,实际速率,一般采用smokeping,lxChariot等工具
- 各类硬件装备性能,一般采用专业的网络装备测试工具
- 各类服务器并发性能,分布式处理本领,可采用压力测试方案工具
- 业务系统性能,采用业务系统压力测试方案
- 数据库处理性能,这部分需要联合业务系统进行测试,以获取核心业务场景下的数据库的TPS/QPS,
- 假如有支付功能,需要进行支付渠道接口及分流测试,此部分相对而言可能是最大的瓶颈所在,此外还涉及备份方案,容灾方案,业务降级方案的测试。
我也整理了一些软件测试学习资料,对于学软件测试的小伙伴来说应该会很有资助,为了更好地整理每个模块,我也参考了许多网上的优质博文和项目,力求不漏掉每一个知识点,许多朋侪靠着这些内容进行复习,拿到了BATJ等大厂的offer,这份无偿免费的资料也已经资助了许多的软件测试的学习者,希望也能资助到你。
文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋侪来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能资助到你!以上均可以分享,点下方进群自行领取即可,拿走不谢。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |