自动化测试岗位
【技术能力】能独立完成产品线中自动化测试工作,根据测试任务,搭建软件测试环境,编写测试脚本,输出报告;
【项目管理】熟练开发测试工具、测试脚本,及迭代优化测试框架,使用合理方式进行自动化管理项目;
【业务推动】对测试项目的结果负责,使用合理方式推动业务端测试的效率、开发质量;
【规范制定】 熟悉CI系统,完善准入/准出标准,持续提升测试效率;
【效率提升】根据业务特点,引入新的测试方法和工具,探索新技术。改进测试工具或测试方法,提高效率,培训测试人员并支持技术难题解决
自动化测试面试题1:
目的:验证求职者是否在自动化测试岗位有实际应用于生产的工作经验
1、自动化遇到用例fail掉如何排查故障?
答:看出错log,如果能按层次说清楚排查失败:手工查应用是否真的有bug, 确认不是bug,是不是新版本引入了新的变更,调试脚本看看自己的脚本是不是因为没有等待元素出现后就操作了,是不是元素上面有其他元素出现这样操作是不是操作了其他的元素上了
2、说说接口测试的流程和接口自动化流程,介绍一下request有哪些内容?
答:流程:获取接口文档,依据文档设计接口参数,获取响应,解析响应,校验结果,判断测试是否通过。
request 内容:封装了get、post等;
以关键字参数的方式,封装了各类请求参数,params、data、headers、token、cookie等;
封装了响应内容,status_code、json()、cookies、url等;session会话对象,可以跨请求
3、你之前自动化测试的数据放哪?怎么使用?公共变量的管理方式?管理测试用例的手段?如何提高用例覆盖率?接口测试关联性接口实现方式?
答:测试数据存放总结:
对于账号密码,这种管全局的参数,可以用命令行参数,单独抽出来,写的配置文件里(如ini);
对于一些一次性消耗的数据,比如注册,每次注册不一样的数,可以用随机函数生成;
对于一个接口有多组测试的参数,可以参数化,数据放yaml,text,json,excel都可以;
对于可以反复使用的数据,比如订单的各种状态需要造数据的情况,可以放到数据库,每次数据初始化,用完后再清理
对于邮箱配置的一些参数,可以用ini配置文件;
对于全部是独立的接口项目,可以用数据驱动方式,用excel/csv管理测试的接口数据;
对于少量的静态数据,比如一个接口的测试数据,也就2-3组,可以写到py脚本的开头,十年八年都不会变更的。
4、不可逆的操作,如何处理,比如删除一个订单这种接口如何测试?
此题考的是造数据的能力,接口的请求数据,很多都是需要依赖前面一个状态的
比如工作流这种,流向不同的人状态不一样,操作权限不一样,测试的时候,每种状态都要测到,就需要自己会造数据了。
平常手工测试造数据,直接在数据库改字段状态。那么自动化也是一样,造数据可以用python连数据库了,做增删改查的操作;
测试用例前置操作,setUp做数据准备;
后置操作,tearDown做数据清理;
5、举例说明pytest.mark标记的使用?
答:
无条件跳过测试pytest.mark.skip;
有条件跳过测试pytest.mark.skipif;
标记测试功能按预期失败pytest.mark.xfail;
将测试功能标记为使用给定的夹具名称pytest.mark.usefixtures;
向特定测试项添加警告过滤器,以便更好地控制应在测试,类甚至模块级别捕获哪些警告@pytest.mark.filterwarnings;
自定义标记:标记指定标签;
自动化测试面试题2:
目的:验证求职者在自动化测试岗位的selenium工具的熟悉程度
1、selenium中如何保证操作元素的成功率?也就是说如何保证我点击的元素一定是可以点击的?
答:
添加元素智能等待时间 driver.implicitly_wait(30);
添加强制等待时间(比如python中写 sleep);
try 方式进行 id,name,clas,x path, css selector 不同方式进行定位,如果第一种失败可以自动尝试第二种;
2、如何提高selenium脚本的执行速度?
答:
少用sleep,尽量不用implicitly_wait;
多用显式等待方法;
弄个性能好的电脑具体?(看个人思路);
3、自动化测试的时候是不是需要连接数据库做数据校验?
答:
一般来说 UI自动化不需要(很少需要);
接口测试会需要:从数据库层面来进行数据校验可以更方便验证系统的数据处理方面是否正确;
4、什么是page object设计模式?
答:简单来说,就是把页面作为对象,在使用中传递页面对象,来使用页面对象中相应的成员或者方法,能更好的体现面向对象语言(比如java或者python)的面向对象和封装特性。
5、什么是断言(assert),常用断言方法,UI自动化中断言方式?
答:断言的英文是assertion,断言检查的英文是assertion checking。
断言是指定一个程序必须已经存在的状态的一个逻辑表达式,或者一组程序变量在程序执行期间的某个点上必须满足的条件
UI自动化中断言方式:定位页面当前页面或跳转页面中元素唯一的一个或多个元素判断是否存在,即可。
6、你觉得自动化测试最大的缺陷是什么?
答:不稳定、可靠性、不易维护、成本与收益
7、什么是分层测试?
答:行业里面提的一般是金字塔的分层模型:UI测试、集成/接口测试、单元测试
自动化测试面试题3:
目的:验证求职者在性能测试方面熟悉程度
1、压测工具?你主要看哪些指标?
答:jmeter
Label:每个 JMeter 的 element(例如 HTTP Request)都有一个 Name 属性,这里显示的就是 Name 属性的值;
#Samples:表示你这次测试中一共发出了多少个请求,如果模拟10个用户,每个用户迭代10次,那么这里显示100;
Average:平均响应时间——默认情况下是单个 Request 的平均响应时间,当使用了 Transaction Controller 时,也可以以Transaction 为单位显示平均响应时间;
Median:中位数,也就是 50% 用户的响应时间;
90% Line:90% 用户的响应时间;
Min:最小响应时间;
Max:最大响应时间;
Error%:本次测试中出现错误的请求的数量/请求的总数;
Throughput:吞吐量——默认情况下表示每秒完成的请求数(Request per Second),当使用了 Transaction Controller 时,也可以表示类似 LoadRunner 的 Transaction per Second 数;
KB/Sec:每秒从服务器端接收到的数据量,相当于LoadRunner中的Throughput/Sec;
2、对服务器性能测试的看法?
答:针对服务器端的性能,以TPS为主来衡量系统的性能,并发用户数为辅来衡量系统的性能。
如果必须要用并发用户数来衡量的话,需要一个前提,那就是交易在多长时间内完成,因为在系统负载不高的情况下,将思考时间(思考时间的值等于交易响应时间)加到串联链路(场景)中,并发用户数基本可以增加一倍,因此用并发用户数来衡量系统的性能没太大的意义。
同样的,如果系统间的吞吐能力差别很大,那么同样的并发下TPS差距也会很大
3、系统的性能决定的要素?跟并发用户数的关系?
答:由TPS决定,跟并发用户数没有多大关系。
系统的最大TPS是一定的(在一个范围内),但并发用户数不一定,可以调整。
建议性能测试的时候,不要设置过长的思考时间,以最坏的情况下对服务器施压。
4、性能测试场景设置思路?
无论并发模式还是TPS模式,场景就是一个压测模型,压测模型中有串行的事务(如添加购物车+购物车下单+付款)也有并行的接口(在不同串联链路中的压测API),最终组成一个复杂或者简单的场景。
然后根据新业务上线的目标、或者日常峰值的等比例目标、或者重大业务活动的预估支撑能力去设置每个API的目标能力(TPS是一步到位的按照吞吐能力设置的,推荐TPS模式,比如前面提到的添加购物车+购物车下单+付款这种流程就是一个漏斗模型,TPS设置为逐渐变小的模型即可)
当然也可以在初期的测试中更谨慎一点,将目标量级设置得整体低一点,当最终能力达到之后建议可以调整原定目标量级到120%或者150%,验证限流准入/高可用基础设施的抗压能力。
目标量级即当前压测场景中这个压测API的施压上限。而起步量级可以从5%或者10%开始,过程中视业务指标数据和被压测端的整体负载临时调整。
下面是我整理的2023年最全的软件测试工程师学习知识架构体系图 |
披荆斩棘,勇往直前,只有坚持奋斗,才能迎接辉煌的未来。不要畏惧困难,相信自己的实力,不断努力,才能成就自己的梦想。每一次的努力都是一次成长,只有坚持不懈,才能收获成功的喜悦。
拥有梦想就要勇敢追逐,只有不断努力奋斗,才能创造属于自己的辉煌人生。无论困难多大,只要心怀信念,坚持不懈,成功将会向你敞开大门。
不要怕失败,因为失败是成功的一部分。坚持追逐梦想,用汗水浇灌成长,只有奋斗才能超越自我,创造属于自己的辉煌。相信自己,勇往直前,未来的成功将属于你。