本文2933字,阅读约需7分钟
Hi,大家好。站在10月的尾巴,即将迎来11月,今天分享9道常见的自动面试题,如果想要获取更多面试题,可以在后台回复“面试顺利
”进行解锁。
1
请问你是如何做接口测试的?
大体来说,经历以下过程:接口需求调研、接口测试工具选择、接口测试用例编写、接口测试执行、接口测试回归、接口测试自动化持续集成。具体来说,接口测试流程分成以下九
步:
第一步:分析出测试需求,并请开发提供接口说明文档;
第二步:从接口说明文档中整理出接口测试用例,里面要包括详细的入参(正常情况,异常情况包括输入参数个数,类型,可选/必选,考虑参数有互斥或关联的情况)和出参数据(符合接口文档需求)以及明确的格式和检查点;
第三步:与开发一起对接口测试用例进行评审;
第四步:结合开发库,准备接口测试用例中的入参数据和出参数据,并整理成Excel格式的文件;
第五步:结合接口测试用例文档和Excel格式的数据文档,编写接口自动化测试的业务逻辑代码;
第六步:开始执行接口自动化测试用例;
第七步:执行如有bug,提交至缺陷管理平台;
第八步:开发修改完成后,回归bug,跟踪状态;
第九步:完成后进行自动化持续集成。
2
接口测试质量评估标准是什么?
一般来说,从以下八
个方面评估:
1) 业务功能覆盖是否完整;
2) 业务规则覆盖是否完整;
3) 参数验证是否达到要求(边界、业务规则);
4) 接口异常场景覆盖是否完整;
5) 接口覆盖率是否达到要求;
6) 代码覆盖率是否达到要求;
7) 性能指标是否满足要求;
8) 安全指标是否满足要求。
3
元素定位不到的原因?
1)页面加载元素过慢,加等待时间。
2)页面有frame框架页,需要先跳转入frame框架再定位。
3)可能该元素是动态元素,定位方式要优化,可以使用部分元素定位或通过父节点或兄弟节点定位。
4)可能识别了元素,但是不能操作,比如元素不可用,不可写等。需要使用js先把前置的操作完成。
4
接口测试如何设计测试用例?
接口测试一般考虑入参形式的变化和接口的业务逻辑,一般设计接口测试用例采用等价类、边界值、场景法居多。接口测试设计测试用例的思路如下:
1)接口业务逻辑测试(正例)
接口逻辑测试是指根据业务逻辑、输入参数、输出值的描述,对正常输入情况下所得的输出值是否正确的测试,也就是测试对外提供的接口服务是否正常工作。
2)接口安全及接口异常场景(反例)
① 鉴权码token异常(鉴权码为空<没有鉴权码>,错误的鉴权码,过期的鉴权码)。
② 必填项检查。
③ 参数的长度、类型、格式异常:
- 常规参数:(数字、字符串、日期);
- 参数长度:6-18位。或身份证、电话的长度;
- 参数类型:数字(精度),字母,中文,带空格的参数,特殊字符;
- 日期格式:日期:年月日,年月日时分秒,日期格式(包括/,-,:等)。
④ 错误码异常覆盖。
⑤ 接口测试其他的关注点:
- 接口有翻页时,页码与页数的异常值测试;
- 数据库的增删改查,比如一个post接口操作完成后,通过列表页接口看下新的数据是否和刚才的post一致;
- 接口返回的图片地址能否打开,图片尺寸是否符合需求;
- 当输出参数有联动性时,需要校验返回参数的实际结果是否都符合需求;
- 所有功能都要考虑兼容旧版本。
5
selenium如何处理alert?
(1) alert弹框类型
alert:提醒对话框; confirm:确认对话框; prompt:要求用户输入,然后返回结果的对话框;
(2) 3种alert使用
① alert用法:
② confirm用法:
③ prompt用法:
6
接口测试执行中需要比对数据库吗?
7
PO设计模式的原理?哪些地方能够改善?
8
selenium工作原理?
1)selenium client(python等语言编写的自动化测试脚本)初始化一个service服务,通过webdriver启动浏览器驱动程序chromedriver.exe;
2)通过RemoteWebDriver向浏览器驱动程序发送HTTP请求,浏览器驱动程序解析请求,打开浏览器,并获得sessionid,如果再对浏览器操作需携带此id;
3)打开浏览器后,所有的selenium的操作(访问地址,查找元素)均通过RemoteConection连接到remote server,然后使用execute方法调用request方法通过urlib3向remote server请求;
4)浏览器通过请求的内容执行对应动作;
5)浏览器再把执行的动作结果通过浏览器驱动程序返回给测试脚本。
9
浅拷贝和深拷贝的区别?
1)浅拷贝可以使用列表自带的copy()函数(如list.copy()),或者使用copy模块的copy()函数。深拷贝只能使用copy模块的deepcopy(),所以使用前要导入:from copy import deepcopy;
2)如果拷贝的对象里的元素只有值,没有引用,那浅拷贝和深拷贝没有差别,都会将原有对象复制一份,产生一个新对象,对新对象里的值进行修改不会影响原有对象,新对象和原对象完全分离开。
3)如果拷贝的对象里的元素包含引用(像一个列表里储存着另一个列表,存的就是另一个列表的引用),那浅拷贝和深拷贝是不同的,浅拷贝虽然将原有对象复制一份,但是依然保存的是引用,所以对新对象里的引用里的值进行修改,依然会改变原对象里的列表的值,新对象和原对象完全分离开并没有完全分离开。而深拷贝则不同,它会将原对象里的引用也新创建一个,即新建一个列表,然后放的是新列表的引用,这样就可以将新对象和原对象完全分离开。
以上
That‘s all
更多系列文章
敬请期待
ITester软件测试小栈(ID:ITestingA),专注于软件测试技术和宝藏干货分享,每周准时更新原创技术文章,每月不定期赠送技术书籍,愿我们在更高处相逢。喜欢记得星标⭐我,每周及时获得最新推送,第三方转载请注明出处。