面试问题整理
最近面试,遇到了不少题目,为今后的再面试做准备,特收集记录于此
一、关于管理方面的
1、如何构建比较完整的测试体系框架,可以从哪些方面入手?
思路:(测试技术体系建设 测试管理支撑)
主要从团队组织、环境建设、标准制定、人员培养、配置管理、工作流程
a、软件测试管理体系建设可以从测试的总体规程、需求跟踪管理、软件缺陷跟踪管理、软件缺陷分析管理、软件质量度量管理、软件测试人员的职业体系规划、软件测试人员的绩效考核体系、软件测试相关的配置管理体系
b、软件测试技术体系建设可以从输出技术技能图谱,针对技术人员的系统测试培训,测试技能体系的建立、试点、推广
2、针对版本上线后,出现线上问题或漏测情况,如何规避?
思路:
a、故障可能在需求、技术设计、开发、漏测、上线不规范等过程产生,因而,故障的控制必须从各个阶段分别入手
b、根据业务成熟度、团队成员特点有针对性应对(业务需求分析、变更管理引起.人员是否充足、是否进行冒烟测试、风险控制.)
c、针对已有的故障,在复盘时找到最根本的原因
参考
3、作为管理者,怎样招一个合格的测试人员?
思路;
分析能力、专业技能、沟通表达、适应和学习能力、记忆力、自信心、耐心、怀疑精神、洞察力、有条理和注意细节
4、如何管理团队?
思路:可以从怎样管理人和事方面说明,当时面试的时候,面试官就说我的经验都是偏于管事多,管人方面需要加强
1)关于事
资源共享、同一个目标、
2)关于人
多沟通、尽早发现和解决问题,充分了解组员正在做什么和怎样做
放权及授权、同等对待
5、怎样留住人员?
思路:
a、制定明确的激励计划和透明的未来目标,用人制度
b、适合的薪资制度
c、多多和团队内成员进行沟通,建立一个融洽的团队环境
d、加强项目管理,强化文档管理,培训机制
f、建立分享机制,使员工之间建立学习的氛围
6、测试质量体系规划和建设
思路:(软件规模、进度、工作量、缺陷指标、质量指标分析)
1)明确测试输入输出准则
2)测试策略、用例质量、执行质量、缺陷质量、过程质量监控(风险评估、缺陷预防)
二、关于技术方面的
1、数据库方面
1)如何使用sql生成1000万条数据?
思路:
a、生产环境拉取然后备份到测试环境(但也有问题,实际环境的数据由于各种原因不一定全部满足测试数据)
b、写代码生成数据? 涉及如何写的问题
数据库中新建函数---存储过程,输入批量增加数据的代码块
2)如何挑选出重复的数据(比如姓名字段会出现重名的情况)
思路:以姓名分组,然后使用函数统计出现重复的次数count
3)给多个表,然后写出关联的SQL语句
2、性能测试方面
1)性能测试怎么做的? 如何保证并发数? 为什么会用分布式,在做分布式时如何分配每台电脑的用户数? 服务器性能怎么做?
性能测试流程核心:搭建性能环境、设计用例、场景建模、准备测试数据、测试脚本开发(数据隔离,防止数据污染)、执行、问题分析与调优、维护
怎么做:
如果是测试响应时间,对一个接口进行压力测试,不断加压,直到响应时间达到或超过指标,观察当前其并发数和TPS,同样的并发数,多执行几次,得到一个平均值或稳定值(即TPS和TRT曲线相对稳定的值),并记录下来
如果是测试接口的最大并发数,逐渐增加线程数,看聚合报告里吞吐量Throughput,每秒完成的请求数随着发送的Samples(发出请求数量)实时在变,当吞吐量不再往上增加时,这个时候的并发数即是最大并发数,增加线程数,tps不变,响应时间增加,报错增加,说明达到极限了
如何保证并发数:同一时刻的并发是很难做到的。我们用来发起压力的测试工具本身要能做到同一时刻发起压力,如果设置线程数过多,负载机本身资源不足会有排队,请求建立和服务端的连接过程会排队,请求数据发送到服务的时候在网络队列上也会排队,请求数据达到服务端,在服务端也会进行排队,所以严格意义上的并发多少用户数等等是比较难做到的。但是,我们可以分层去看,像一般的webserver或容器服务都有监控数据,如nginx的Active connections,tomcat的currentThreadsBusy,这些参数表明服务本身目前正在处理的最大并发线程数(监控Web层(例如Nginx)的连接数和请求数,查看实际达到服务器端的并发数是否跟我们的设定值一致)
为什么会用分布式:电脑连接数不够,为了解决单个物理服务器容量和性能瓶颈问题而采用的优化手段(分布式是从物理资源的角度去将不同的机器组成一个整体对外服务)
分布式时如何分配每台电脑的用户数: 负载机的线程数与脚本设计的线程数一致,每台的负载机线程数是一样的,由调度机监控汇总测试结果
服务器性能怎么做: 关注吞吐量、响应时间 、事务成功率、资源使用率
N个人在客户端同时进行功能性操作的同时,在确保功能实现正确的前提下,考察服务端应用程序的各项性能指标,以及服务器硬件资源的使用情况
2)假设系统A调用系统B,把B的接口都mock了,有啥好处和坏处?
思路:
好处:避免其它模块的出错引起的本模块错误,起到隔离作用、并行工作,进程互不影响、提前接入测试,保证测试效率,模拟数据,增加覆盖
坏处:大量使用mock测试的场景失去了真实性,可能会导致在后续的系统性测试时才发现bug,使得缺陷发现的较晚,可能会造成后续修复成本更大;
3)多个接口之间存在调用关系,在对接口压测时,系统崩了,怎么判断是哪个接口引起的问题
思路:
a、从最低层的接口先做性能测试,再看该接口调用上层的哪些业务接口
b、虽然存在多层调用,分析当前压测的接口的业务是否涉及多个接口,如果不涉及就不用考虑是其它接口的问题,如果涉及就需要一层层的向上找,看到底是哪个接口引起的系统崩溃
4)如何设计性能的测试用例
确定性能目标;场景设计,场景设计一定从简单到复杂。(容量、安全、可靠、压力、响应时间、宽带、资源利用率、恢复能力、可扩展性)
5)App性能关注点,哪些指标
3、代码方面
1)统计1-9999中数字3出现的次数
思路:包含3的数字都统计一次,如333,则统计3次
2)数组逆序输出
3)计算1-100的和
4、自动化方面
1)ajax异步时,如何进行元素的定位?
思路:当时不太理解前端的异步是什么,回答的时候说一般元素定位不到,需要加等待时间,然后说没遇到这种情况,然后面试官也没说什么....然后百度了下,似乎就是要设置等待时间
这里应该可以答 三大延时等待处理(硬性等待 Thread sleep,隐式等待 Timeouts 显示等待 自定义)
2)如何实现用例失败或异常时需要截图
思路:
a、定义一个截图的方法并保存File
b、定义一个用例失败的监听类 ,继承testng框架的失败监听接口IHookable,该接口有一个方法run
c、在testng.xml配置监听运行
3)如何进行分布式执行webdriver用例
思路:
a、Selenium grid使用,同时启动一个hub和至少一个node来实现
b、借助于Testng配置文件进行,即在Case中以变量形式替换真实地址
5、测试方面
1)如何测试一个下订单
思路:
一次下单的商品数量、订单的类型、同样的商品是否可重复下单、 是否可下多个订单
2)如何测试灰度配置
3)app和web测试的区别与关注点
流程和技术测试方面是一致的
app更关注流量、耗电、浏览器、手机品牌、安卓软件版本、分辨率的兼容,弱网,网络切换,交叉中断测试、下载安装升级测试
4)https协议
5)怎样进行接口测试
思路:充分理解接口逻辑业务,配合接口参数组合,上下游服务的容错处理,如依赖的接口异常,本接口是否有很好的容错
6)微信扫码登录设计测试用例
6、其它方面
1)自己的优缺点