1、Jmeter自动获取手机验证码
https://www.cnblogs.com/only-love-you-519920/p/7742809.html
2、Jmeter中使用循环如何保证数据不重复
https://jingyan.baidu.com/article/d5a880ebbae90213f047cc4a.html
3、用户登录接口循环10次,要求手机号和密码不重复。
用unittest+ddt,或pytest实现用户数据的参数化。
4、登录接口的token值如何供其他接口使用
token存在全局变量中,或存在配置文件中。
5、手机power键低概率1%出现不响应,如何对此问题进行压力复现。
monkeyrunner即android SDK中自带的工具之一,此工具提供API可按制android设备或模拟器。monkeyrunner提供了一个API,使用此API写出的程序可以在Android代码之外控制Android设备和模拟器。通过monkeyrunner,你可以写出一个Python程序去安装一个Android应用程序或测试包,运行它,向它发送模拟击键,截取它的用户界面图片,并将截图存储于硬盘。
排查极低概率bug的套路:
- 复现bug,可以考虑构造压测工具。
- 分析bug,可以通过dump文件或者在可疑点添加日志
- 与同事交流、讨论、思考,分析bug可能触发的原因与场景
- 针对性修改压测工具、添加关键点日志。
6、写出MySql的增删改查语句。
INSERT INTO student(id,name,grade) VALUES(1,'zhangshan',98);
DELETE FROM student WHERE id=1; (小知识:使用truncate table是将表结构重新建一次速度要比使用delete from快很多,而delete from是一行一行的删除,速度很慢。)
UPDATE student SET name=‘caocao’,grade=50 WHERE id=1;
SELECT id,name FROM student2 WHERE id=4;
SELECT * FROM student2 WHERE id IN (1,2,3);
SELECT id,name FROM students WHERE id BETWEEN 2 AND 5;
SELECT id,name FROM student2 WHERE name LIKE "S%";
7、HTTP请求头包含的信息
HTTP请求报文主要由请求行、请求头部、请求正文组成。
8、http状态码302、400、404、500代表的含义
301 永久移动。请求的资源已被永久的移动到新URI。
302 临时移动。与301类似。但资源只是临时被移动。客户端应继续使用原有URI。
400 客户端请求的语法错误,服务器无法理解
404 服务器无法根据客户端的请求找到资源(网页)。
500 服务器内部错误,无法完成请求。
501服务器不支持请求的功能,无法完成请求
9、描述下你了解的自动化测试工具、框架、及其工作原理3-5个
selenium、appium、jmeter、QTP/UFT
selenium的原理涉及到3个部分,分别是:
- 服务端:浏览器,职责是等待客户端发送请求并做出响应。
- driver: 浏览器驱动
- 客户端: 测试脚本,职责是发送http请求给服务端
工作原理如下:
1. WebDriver 启动目标浏览器,并绑定到指定端口。该启动的浏览器实例,做为web driver 的remote
server。
2. Client 端通过CommandExcuter 发送HTTP请求给remote server 的侦听端口(通信协议: the
webriver wire protocol)
3. Remote server 需要依赖原生的浏览器组件(如:IEDriverServer.exe、chromedriver.exe),来转
化浏览器的native 调用。
appium 安卓广工作原理:
-
client端也就是我们的测试脚本。
-
中间是起的Appium的服务,Appium在服务端起了一个Server(4723端口), Appium⽀持标准的WebDriver JSONWireProtocol。在这里提供它提供了一套REST的接口,Appium Server接收web driver client标准rest请求,解析请求内容,调⽤用对应的框架响应操作。
-
appium server会把请求转发给中间件Bootstrap.jar ,它是用java写的,安装在手机上.Bootstrap监听4724端口并接收appium 的命令,最终通过调⽤用UiAutomator的命令来实现。
-
最后Bootstrap将执行的结果返回给appium server。
-
appium server再将结果返回给 appium client。
10、描述下性能测试、负载测试、压力测试的含义及区别
性能测试,表示在一个给定的基准下,能执行的最好情况。例如,在没有负重的情况下,你跑100米需要花多少时间(这边,没有负重是基准)?
负载测试,也是性能测试,但是他是在不同的负载下的。对于刚才那个例子,如果扩展为:在50公斤、100公斤……等情况下,你跑100米需要花多少时间?
压力测试,是在强度情况下的性能测试。对于刚才那个例子,如果改为:在一阵强风的情况下,你在负重或没有负重的情况下,跑100米需要花多少时间?
11、如何使用jmeter进行压力测试,并分析系统瓶颈
压测设置
- 线程数:并发数量,能跑多少量。具体说是一次存在多少用户同时访问
- Rame-Up Period(in seconds):表示JMeter每隔多少秒发动并发。理解成准备时长:设置虚拟用户数需要多长时间全部启动。如果线程数是20,准备时长为10,那么需要10秒钟启动20个数量,也就是每秒钟启动2个线程。
- 循环次数:这个设置不会改变并发数,可以延长并发时间。总请求数=线程数*循环次数
- 调度器:设置压测的启动时间、结束时间、持续时间和启动延迟时间。
压测结果查看
运行完后,聚合报告会显示压测的结果。主要观察Samples、Average、error、Throughput。
- Samples:表示一共发出的请求数
- Average:平均响应时间,默认情况下是单个Request的平均响应时间(ms)
- Error%:测试出现的错误请求数量百分比。若出现错误就要看服务端的日志,配合开发查找定位原因
- Throughput:简称tps,吞吐量,默认情况下表示每秒处理的请求数,也就是指服务器处理能力,tps越高说明服务器处理能力越好。
压测结果的分析
-
有错误率同开发确认,确定是否允许错误的发生或者错误率允许在多大的范围内;
-
Throughput吞吐量每秒请求的数大于并发数,则可以慢慢的往上面增加;若在压测的机器性能很好的情况下,出现吞吐量小于并发数,说明并发数不能再增加了,可以慢慢的往下减,找到最佳的并发数;
-
压测结束,登陆相应的web服务器查看CPU等性能指标,进行数据的分析;
-
最大的tps:不断的增加并发数,加到tps达到一定值开始出现下降,那么那个值就是最大的tps。
- 最大的并发数:最大的并发数和最大的tps是不同的概率,一般不断增加并发数,达到一个值后,服务器出现请求超时,则可认为该值为最大的并发数。
- 压测过程出现性能瓶颈,若压力机任务管理器查看到的cpu、网络和cpu都正常,未达到90%以上,则可以说明服务器有问题,压力机没有问题。
- 影响性能考虑点包括:数据库、应用程序、中间件(tomact、Nginx)、网络和操作系统等方面。
12、自动化测试流程、怎么开展、自动化测试怎么分层、用到哪些模块、报告用什么插件、自动化测试的占比、自动化测试框架
13、如何计算空房率、对自动化测试的理解、取列表中最大的数。JS在selenium的应用,
自动化测试适合的项目:软件需求不会频繁变动,项目周期较长,系统界面稳定变动少,项目需要频繁回归测试。
自动化测试目的:自动化测试仅仅在于让测试人员从繁琐重复的机械式测试过程解脱出来,把时间和精力突入到更有价值的地方,从而挖掘更多的产品缺陷。目前自动化测试更多的时候是定位在冒烟测试和回归测试。