金九银十,自动化面试题放送一波

2021-10-27 10:54:14 浏览数 (1)

本文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),专注于软件测试技术和宝藏干货分享,每周准时更新原创技术文章,每月不定期赠送技术书籍,愿我们在更高处相逢。喜欢记得星标⭐我,每周及时获得最新推送,第三方转载请注明出处。

0 人点赞