热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

接口自动化相关面试题

你好,我是懂Java的测试最近辅导简历,有同学向我反馈,自学过接口自动化、没有落地接口自动化项目办?还有很多同学落地实践过自

你好,我是懂Java的测试 

      最近辅导简历,有同学向我反馈,自学过接口自动化、没有落地接口自动化项目办?还有很多同学落地实践过自动化,但是仅仅只是停留在会用,没有那种深层次使用,但是面试官往往会问一些细节问题,怎么破?

      我给出的建议有两个,一个是速成的方式,多看面试题,理解性的记忆,千万别死记硬背,另一个就是长期落地实践,日积月累。

      今天就先说说速成的方式,多看面试题,通过面试题去驱动自己对接口自动化的思考和积累,这是一种很好的方式。

      很多小伙伴都问,为什么面试官问的问题都是偏细节的东西?我想说因为现在的测试简历90%都说做过自动化,又加上大环境不行,各大厂几乎都在裁员,竞争压力特别大,你不写接口自动化可能连面试机会都没有。

       我面试过很多人,简历上说熟悉接口自动化,面试一问才知道,要么就是纸上谈兵式的自学,要么就是做过,但是做的不深,仅停留在表面,所以说面试官只能通过一些细节问题,去pass掉这些人,留下做过自动化测试的高手。

      下面就列举几个接口自动化项目常见的问题。配合价值25k测试工程师面试题及其答案分享 这篇文章里自动化的题目阅读,效果更佳,在此基础之上,我又补充了以下几个经常遇到的相关面试题

      1.你们公司没有通用的接口自动化框架吗?为什么还需要你们部门来搭建这套?

答:公司的接口自动化是有的,但是调研过程中,发现比较难上手,而且配置繁多,遇到问题还得自己通过代码层面去定位问题,自己搭建的自动化符合自己业务私有定制开发,上手快,门槛低,效率高。

       2.效果和收益?  接口自动化回归过程中有没有发现什么问题?

答:项目组采用的敏捷开发模型,对效率要求很高,原先回归需要2个人半天时间,自动化测试以后,只需要十分钟左右,大大缩减了回归时间。自己编写的自动化case,发现了3个测试bug,有效避免了线上损失,

注意:自动化回归发现的bug一定不能太多,太多了,只能证明集成测试或端到端测试质量太差,发现的bug可以从以下几方面说:开发私自修改代码,没告知测试回归。代码解决冲突导致代码丢失、功能丢失等等。

   

      3.你们持续集成怎么做的?

答:百度看看Jenkins集成自动化项目。

       

      4.你们自动化项目你个人觉得还有哪些不足,怎么去提升?

答:可以使用封装、继承的方式,让代码具备更高的复用率;如果测试用例比较多且相互独立,执行效率低,可以说采用多线程的方式,并发执行,提高执行效率;

如果你对前后端比较熟悉,也可以说,打算做个测试平台,降低学习门槛,让更多不了解代码的小伙伴,快速上手使用。

甚至,你也可以说,做成测试平台以后,打算向其他项目组推广。让公司更多的小伙伴上手自动化项目。

      5. 断言这么做的?断言数据库吗?

答:python和java都有天然的断言框架,至于是否要断言数据库,看具体项目,有些插入数据接口,没有查询的接口,这种情况只能做数据库断言。

     6.java中的testng 是什么?有哪些注解?执行顺序知道吗?

答:TestNG 是一个测试框架,其灵感来自 JUnit 和 NUnit,但同时引入了一些新的功能,使其功能更强大,使用更方便。TestNG 设计涵盖所有类型的测试:单元,功能,端到端,集成等。

注解执行顺序 @BeforeSuite->@BeforeTest->@BeforeClass->@BeforeMethod->@Test->@AfterMethod->@AfterClass->@AfterTest->@AfterSuite

除此之外,还有 @DataProvider @Parameters  不仅仅得知道名称,要大致知道注解的作用是什么,没办法,只能死记硬背加理解,面试官只能通过这种细节来看面试者,是否真正写过自动化或者做的自动化项目能达到很高程度。

     7.集成了allure 报告对吧?那你能告诉我,能看到哪些页面细节?

答:如截图

      8.异步接口了解过吗?异步接口断言有遇到过吗?怎么解决?

答:同步需要等待所有步骤执行完了才能继续往下执行,异步只需要发起调用 后就可以继续其他逻辑。

自动化项目中,通过循环+计数器去处理异步返回接口,伪代码如下

import org.apache.commons.lang3.StringUtils;/** * &#64;author 懂java的测试 */public class AsynInterface { public static void main(String[] args) throws InterruptedException { int start &#61; 1; //具体循环多少次得具体评估 int stop &#61; 100;        //这里伪造一个异步接口调用&#xff0c;实际情况肯定不是这样的&#xff0c;        //只是为了展示这个处理异步接口的方式 AsynInterfaceTest asynInterfaceTest &#61; new AsynInterfaceTest(); //设置数据&#xff0c;返回true,只是代表请求成功&#xff0c;并不表示一定设置成功&#xff0c;具体结果还得需要循环调用getResult&#xff0c;获取最终结果 asynInterfaceTest.setResult("Asyn"); while (start <&#61; stop) { System.out.println("开启循环" &#43; start &#43; "次"); //这里调用异步接口&#xff0c;查询返回结果&#xff0c;简单做个判断&#xff0c;自动化项目中可以做个断言 String result &#61; asynInterfaceTest.getResult(); if (StringUtils.equals("Asyn", result)) { break; } else { start&#43;&#43;; if (start >&#61; stop) { throw new RuntimeException("异步接口循环多次未返回最终结果"); } } } System.out.println("异步接口获取最终结果成功&#xff01;&#xff01;&#xff01;");    }}

这段代码模仿一种循环&#43;计数器方式&#xff0c;获取异步处理结果&#xff0c;获取最终结果就跳出循环&#xff0c;如果没有,继续循环&#xff0c;直到超过规定的循环次数。​​​​​​


开启循环1次开启循环2次开启循环3次开启循环4次异步接口获取最终结果成功&#xff01;&#xff01;&#xff01;

循环查询打印的日志&#xff0c;

9.前置依赖接口&#xff0c;怎么提高稳定性&#xff1f;

      答&#xff1a;重试&#xff0c;但是要限制重试次数和幂等性。

幂等性&#xff1a;就是用户对于同一操作发起一次请求或者多次请求的结果是一致的&#xff0c;不会因为多次点击而产生了副作用&#xff0c;举个反例&#xff0c;电商场景中&#xff0c;用户页面提交一笔订单&#xff0c;因为网速或接口响应慢等原因&#xff0c;用户短时间内没得到下单成功的提示&#xff0c;这时用户重复点击提交按钮&#xff0c;导致数据库产生多笔订单&#xff0c;这个就是不幂等性&#xff0c;当然了现实情况是很多网站都会做幂等性校验&#xff0c;至于怎么去校验&#xff0c;后面我会单独写一篇幂等性的文章&#xff0c;着重介绍&#xff0c;前后端、mq消费保证幂等性的方案。

如果本文对你有帮助的话&#xff0c;欢迎点赞&在看&分享&#xff0c;这对我继续分享&创作优质文章非常重要。感谢

也可加我微信&#xff0c;免费简历指导、面试辅导、学习资料、简历模板获取。


推荐阅读
author-avatar
书友75271582
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有