测试面试题汇总

1.http.https安全性如何测试

可以分别用http还有https登录试试。
1.https可以正常登录,地址栏显示一把锁头,那么这个网站是有部署SSL的。
2.http和https都能够正常登录,进一步说明该网站没有设置强制https登录,或者说没有设置http链接自动跳转https链接;
3.http登录,结果跳转到https页面,说明网站部署了SSL,而且设置了http自动跳转https。

区别:
1、加密:http协议对传输的数据不进行加密;https协议对传输的数据使用SSL安全协议进行加密,https加密需要CA签发的证书。 
2、端口:http协议使用TCP的80端口;https协议使用TCP的443端口 
3、网络分层模型:http可以明确是位于应用层;https是在http的基础上加上了SSL安全协议,而SSL是运输层协议,所以https是应用层和传输层的结合


2.fiddle手机如何进行抓包

1.设置fiddle

2.使fiddle和手机在同一局域网内

3.手机设置代理

4.下载并安装fiddle的证书

5.直接进行抓包

 

3.web端和手机端的兼容性测试怎么测的


兼容性测试是指待测试项目在特定的硬件平台上,不同的应用软件之间,不同的操作系统平台上,在不同的网络等环境中能正常的运行的测试。
APP端:
①硬件的兼容性:市面上的主流手机厂商和不同的型号(APP的卸载和安装)
②操作系统的兼容性和分辨率兼容性:ios可以在谷歌调试器上进行操作,安卓手机需要需要真机(屏幕的限制,图片和文字的显示效果)
③网络运营商:无线网络、2G、4G等 
④与其他的软件的兼容性
web端:
①操作系统的兼容性:不同的操作系统下,常用的有Windows、Mac、Linux等操作系统
②浏览器兼容性:国内主流的浏览器内核主要有3种:IE、Firefox和Chrome、safira
③分辨率兼容性:页面版本在不同的分辨率下能否正常显示


4.http的request和respond包括些什么部分
request:
1. setAttribute()在Request域中存储数据
2. setCharacterEncoding()设置请求参数的编码方式,只对post请求有效
3. getMethod()获取请求类型
4. getParameter()获取指定请求参数值
5. getParameterNames()获取所有请求参数,返回一个Enumeration枚举类
6. getAttribute()获取域中存储的数据
7. getAttributeNames()获取域中所有数据,返回一个Enumeration枚举类
8. getContextPath()返回当前WEB项目相对路径
9. getCookies()获取所有Cookie,返回一个Cookie数组
10. getRequestDispatcher()获取转发器,参数路径以/打头,代表WebRoot(当前WEB项目根目录)
11. getSession()获取Session对象

response:
1. setContentType()告知浏览器数据类型
2. setCharacterEncoding设置Response的编码方式
3. setHeader()设置消息头
4. setStatus()设置状态吗
5. addCookie()添加Cookie
6. sendRedirect()重定向
7. getOutputStream()获取通向浏览器的字节流(同一次请求处理中,字节流和字符流不能同时存在)
8. getWriter()获取通向浏览器的字符流(同一次请求处理中,字节流和字符流不能


5.jmeter接口测试的过程是怎么样的,性能测试如何测的


接口测试过程:
①新建线程组:测试计划--》添加--》Treads(Users)--》线程组
②添加http请求:线程组--》添加--》Sampler--》HTTP请求
③添加监听器--查看结果树:线程组--》添加--》监听器--》查看结果树
④设置http请求相关参数:服务器名称或IP、端口号、方法、路径、Parameters(名称、值)
⑤执行测试并查看结果:在查看结果树中查看测试结果,返回状态码200,表示请求成功

性能测试过程:
性能测试中需要关注的数据有: #Samples 请求数,Average 平均响应时间,Min 最小响应时间,Max 最大响应时间,Error% 错误率及Throughput 吞吐量
① 配置线程组:点击线程组,配置相关参数:线程数,循环次数,持续时间等
②添加http请求:线程组--》添加--》Sampler--》HTTP请求
③添加监听器--查看结果树和聚合报告
④设置http请求相关参数:服务器名称或IP、端口号、方法、路径、Parameters(名称、值)
⑤执行测试并查看结果:查看结果树和聚合报告

6.商品下单到结束的过程描述下

①加购过程:商品详情:包括颜色、尺码、数量选择(考虑商家库存以及限购量)
1.加入购物车:点击购物车页面进行商品勾选、更改数量(购物车加购上限)
2.直接购买:颜色、尺码、数量选择
②提交订单的过程:选择地址(默认地址、选择地址和添加新地址)
③支付过程:支付成功(付款完成,待发货页面)、支付失败和超时支付(返回订单页面,待付款)
④物流以及售后:
1.待收货页面:退换货流程
2.待评价页面


sql的多表查询


一内二外二全
(inner join\ left join\right join\union\union all)

SELECT * from t_student where age >= 18;

INSERT into t_student(id,user_name) VALUES(6,"chenbiao");

UPDATE t_student set sex = '男' where user_name = "chenbiao";


select * from t_class limit 10;

select * from t_student limit 10;


--关联查询

SELECT * from t_student a,t_class b where a.class_id=b.class_id;

SELECT * from t_student a left join t_class b on a.class_id=b.class_id;

SELECT * from t_student a right join t_class b on a.class_id=b.class_id;

SELECT * from t_student a inner join t_class b on a.class_id=b.class_id;

select * from t_student UNION all select * from t_student

select * from t_student UNION select * from t_student


--子查询


SELECT * from t_student where class_id in(
   SELECT class_id from t_class where class_id > 1
);

select * from t_student where class_id in (
select class_id from t_class where class_id > 1
);

--聚合函数
SUM/COUNT/AVG/MAX/MIN

select count(1) from t_student;

--分组过滤

SELECT * from t_student where class_id in (
SELECT class_id from t_student GROUP BY class_id HAVING count(1) > 1
);

影响性能测试响应时间的因素:
①操作系统:不同的操作系统:Linux、Mac、Windows
②硬件环境:CPU、内存、网络
③中间件、数据库:大多数复杂的后台都会受到影响
④应用程序本身

执行性能测试之前要准备的工作
①确定执行性能测试的工具:jmeter既能实现HTTP、https协议,支持Windows系统、支持的数据库
②性能测试需要关注的点:请求数、响应时间、tps、avg、error、cpu等
③设计性能测试的用例
④设置线程组,配置线程组参数
⑤配置http请求
⑥配置监听器:结果树和聚合报告
⑦设置http的内容
⑧发送并查看结果

11.get&post的区别
①提交数据的方式不同:get是附加在URL之后的,post是在body中的
②传输数据大小不一样:受限于URL的长度
③安全性,URL容易被浏览器缓存

 

13.如何判断bug是前段还是后端
先抓包看请求报文,对着接口文档,看请求报文有没问题,有问题就是前端发的数据不对
请求报文没问题,那就看返回报文,返回的数据不对,那就是后端开发的问题咯
最简单易行的判断办法是:通过请求与响应来判断。
如果前端已经把数据发送给了后端,后端接到请求,而后端没有返回数据请求,则是后端出了问题;
如果前端在用户输入数据后,发送的请求没有带数据,则是前端的问题,或者后台已经传回了数据,但在前端显示不出来,这是前端问题。


14.上线出现问题了,测试要怎么搞
1、记录线上产生的问题和操作

2、使用记录的操作验证sit、UAT环境是否出现与线上同样的问题

3、如果sit环境出现问题,抓包或者log分析定位问题,协助开发解决,并重新验证发布上线,若sit未出现问题,则需要申请权限查看线上的log 分析问题。
4、当然有时候也可能不是bug,数据库的连接、第三方接口等问题

15.如何保证测试的覆盖率
1.需求尽可能详细以及涉及到
2.针对每个需求从上到下,逐渐细分,大模块包括小模块,小模块包括更小的模块
3.设计用例的思路:每个keyword、buttun键的功能、画面的迁移
4.用例设计的方法:等价法、边界值法、错误推断法、场景法等
5.个人经验:尽可能多的使用不同的角度看待问题,从设计者的角度和用户角度进行测试

简述性能测试流程?
  1.分析性能需求。挑选用户使用最频繁的场景来测试,比如:登陆,搜索,下单等等。确定性能指标,比如:事务通过率为100%,TOP99%是5秒,最大并发用户为1000人,CPU和内存的使用率在70%以下
  2.制定性能测试计划,明确测试时间(通常在功能稳定后,如第一轮测试后进行)和测试环境和测试工具
  3.编写测试用例
  4.搭建测试环境,准备好测试数据
  5.编写性能测试脚本
  6.性能测试脚本调优。设置检查点、参数化、关联、集合点、事务,调整思考时间,删除冗余脚本
  7.设计测试场景,运行测试脚本,监控服务器,
  8.分析测试结果,收集相关的日志提单给开发
  9.回归性能测试
  10.编写测试报告
  如何确定系统最大负载?
  通过负载测试,不断增加用户数,随着用户数的增加,各项性能指标也会相应产生变化,当出现了性能拐点,比如,当用户数达到某个数量级时,响应时间突然增长,那么这个拐点处对应的用户数就是系统能承载的最大用户数。
  你们系统哪些地方(哪些功能)做了性能测试?
  选用了用户使用最频繁的功能来做测试,比如:登陆,搜索,提交订单
  你们的并发用户数是怎么确定的?
  1)会先上线一段时间,根据收集到的用户访问数据进行预估
  2)根据需求来确定(使用高峰时间段,注册用户数,单次响应时间等
  你们性能测试在什么环境执行?
  参考答案:我们会搭建一套独立的性能测试环境进行测试
  你们性能测试什么时间执行?
  基准测试:功能测试之后,系统比较稳定的时候再做。
  负载测试:夜深人静,系统没人用的时候
  怎么分析性能测试结果?
  首先查看事物通过率,然后分析其他性能指标,比如,确认响应时间,事务通过率,CPU等指标是否满足需求;如果测试结果不可信,要分析异常的原因,修改后重新测试
  think_time的作用是什么?
  模拟真实生产用户操作,考察对服务器所造成的影响。
  在确定性能测试结果可信后,如果发现以下问题,按下面提供的思路来定位问题
  问题一:响应时间不达标
  查看事务所消耗的时间主要在网络传输还是服务器,如果是网络,就结合Throughput(网络吞吐量)图,计算带宽是否存在瓶颈,如果存在瓶颈,就要考虑增加带宽,或对数据的传输进行压缩处理;如果不存在瓶颈,那么,可能是网路不稳定导致。如果主要时间是消耗在服务器上,就要分别查看web服务器和数据库服务器的CPU,内存的使用率是否过高,因为过高的CPU,内存必定会造成响应时间过长,如果是web服务器的问题,就把web服务器对应上对应的用户操作日志取下来,发给开发定位;如果是数据库的问题,就把数据库服务器对应上对应的日志取下来,发给开发定位。
  问题二:服务器CPU指标异常
  分析思路:就把web服务器对应上对应的用户操作日志取下来,发给开发定位。
  问题三:数据库CPU指标异常
  分析思路:把数据库服务器对应上对应的日志取下来,发给开发定位。
  问题四:内存泄漏
  分析思路:把内存的heap数据取出来,分析是哪个对象消耗内存最多,然后发给开发定位。
  问题五:程序在单用户场景下运行成功,多用户运行则失败,提示连不上服务器。
  原因:程序可能是单线程处理机制
  如何识别系统瓶颈?
  从TPS指标分析,TPS即系统单位时间内处理事务的数量。观察当前随着用户数的增长期系统每秒可处理的事务数是否也会增长
  如何判断系统的性能是变好了还是变坏了
  通过基准测试对比性能指标
  你们的性能测试需求哪里来?
  1:客户提供需求
  2:运维提供需求
  3:开发提供需求
  如何实现200用户的并发?
  在脚本对应的请求后添加集合点
  什么情况下要做关联,关联是怎么做的?
  当脚本的上下文有联系,就用关联。
  比如登录的token关联,增删改查主键id关联
  有验证码的功能,怎么做性能测试?
  1、将验证码暂时屏蔽,完成性能测试后,再恢复
  2、使用万能的验证码
  你们性能测试做的是前台还是后台?
  BS项目:测试的是后台服务器的性能和浏览器端性能;
  APP项目:手机端和服务器端的性能都做
  性能测试指标有哪些
  响应时间
  吞吐量
  cpu
  内存
  io
  disk
  如何脚本增强?
  1、做参数化
  2、做关联
  3、添加事务
  4、添加断言
  5、添加集合点
  6、添加思考时间

http状态码:

  • 200 - 请求成功
  • 301 - 资源(网页等)被永久转移到其它URL
  • 404 - 请求的资源(网页等)不存在
  • 500 - 内部服务器错误

物理删除和逻辑删除的区别

物理删除:真实删除。将对应数据从数据库中删除,之后查询不到此条被删除数据;

逻辑删除:假删除。将对应数据中代表是否被删除字段状态修改为“被删除状态”,之后在数据库中仍旧能看到此条数据记录。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值