python 自动化面试题,python自动化面试问题
1.什么是软件界面?在不同模块之间传输和处理数据的类或函数
2.HTTP和HTTPS协议有什么区别?A) https协议需要向证书颁发机构(ca)申请证书。一般免费证书很少,所以需要一定的费用。Http是一种超文本传输协议,信息以纯文本形式传输。Https是基于SSL Http协议的加密传输和认证网络协议,比Http协议更安全。Http和https使用完全不同的连接方法和不同的端口。前者80,后者443。
3.哪一层是3号?HTTPS在吗?我以前喜欢问关于网络协议的问题。朋友给我打了个X,说不实用。稍微讲一点网络知识其实很容易回答。
HTTPS位于APP应用层
4.收购和岗位的区别?a)向服务器提交数据和从服务器检索数据。不同(1)转发方式)get通过地址栏转发,post通过消息转发。2)转发长度。get参数有长度限制(url长度限制),post没有限制。3) get生成TCP数据包。服务器响应200并返回数据。POST生成两个TCP包(在POST的情况下,浏览器先发送头,当服务器响应100 continue时,浏览器发送数据,服务器响应200 ok返回数据。)GET请求的参数完全保留在浏览历史中,POST参数不保留。5)在数据查询中增加、修改、删除数据时,建议使用POST方法。
5.POST期间提交数据的常见方式(主要有四种方式。application/x-www-form-urlencoded,multipart/form-data,application /JSON,text /XML
6.什么是Http协议无状态协议?如何解决HTTP协议无状态协议答:无状态是指协议对事务没有内存,服务器不知道客户端的状态。即向服务器发送HTTP请求后,服务器会根据请求发送数据,但发送后不会记录任何东西。HTTP是一个无状态协议,这意味着每个请求都是独立的,Keep-Alive不能改变这个结果。无状态意味着如果后续处理需要之前的信息,需要再次发送,每个连接传输的数据量可能会增加。另一方面,如果服务器不需要以前的信息,它会快速响应。HTTP的这个特性有利有弊。好处是可以释放服务器,不会在每个请求的“时间点”占用不必要的连接。缺点是每个请求都会传输大量重复的内容信息。客户端和服务器动态交互的web APP应用出现后,HTTP的无状态特性严重阻碍了这些APP应用的实现。毕竟,谈话只是过去和未来之间的一个纽带。一个简单的购物车程序还需要知道用户之前选择了什么样的商品。因此,产生了两种维护HTTP连接状态的技术。一个是Cookie,另一个是会话。
7.cookie和session的区别:cookie数据存储在客户的浏览器中,而session数据放在服务器上,所以cookie不安全。其他人可以分析本地存储的cookie来发现cookie欺诈。出于安全原因,应该使用会话session将它们存储在服务器上一段时间。当访问增加时,服务器的性能会相对被占用。考虑到使用cookie存储在单个cookie中的数据不超过4K,许多浏览器可以限制单个站点最多存储20个cookie,并将重要信息(如登录信息)存储为session。其他信息需要保存,可以放入cookies中。
8.请求接口常见状态代码的解答:
1xx信息提示(提供初始响应。客户端在接收正常响应之前准备好接收一个或多个1xx响应)
2xx成功(表示服务器成功接受了客户端请求))
3xx-重定向(客户端浏览器需要做更多的工作来完成请求。例如,浏览器可能需要请求服务器上的另一个页面,或者通过代理服务器重复请求。)
4xx-客户端错误(发送错误,客户端有问题。例如,如果客户端请求的页面不存在,则客户端不会提供有效的id凭据。(5xx服务器错误)由于出现错误,服务器无法完成请求。)常见的返回码有:
00 OK-[GET]:服务器正常返回
01created-[post/put/patch]:用户成功创建或修改了新数据。
02 accepted-[]:表示请求在后台队列中(异步任务)
04无内容-[删除]:用户成功删除数据。
400无效请求-[post/put/patch]: 401未授权-[]:表示用户请求错误,服务器没有创建或修改数据的操作,表示用户有权限。
03反馈-[]:显示
用户被授权(相对于401错误),但访问被禁止。
44未找到-[]:用户提出的请求旨在获取不存在的记录。服务器没有操作,操作幂等。
46不可接受-[GET]:用户请求的格式不可用(例如,用户请求JSON格式,但只有XML格式)
00内部服务器错误-[*]:服务器出现错误,用户将无法判断发出的请求是否成功。
9.什么是DNS?答:DNS就是域名系统,用于域名解析。你在线输入网址后,它会将其转换成IP,然后访问对方服务器。不是,你要去百度就得记住百度的IP,但是有了DNS处理,你只需要记住对应网站的域名,也就是网址。
10.你们公司是怎么做接口测试的?答:接口测试实际上和一般测试的区别在于它是测试用例的设计部分。获取接口规范。
设计接口测试功能用例(主要从用户角度看接口是否能满足业务需求,用例设计就是黑盒用例)。
各种参数的验证(正常情况下,异常情况包括输入参数的数量和类型不正确,可选/必选,以及某些参数互斥或相关的情况)。
接口返回值的各种验证(满足接口文件要求)
理解接口实现逻辑,实现逻辑覆盖(语句/条件/分支/决策/…)
接口是否可以并发执行,是否安全,性能是否满足要求?
使用工具或自编代码验证。
发现问题时,与功能测试相同。报纸报道bug,跟踪状态的跟踪状态。
11.如何设计界面测试用例?答:一般来说,设计接口测试用例需要考虑以下几个方面:
前提条件是否满足?一些接口需要满足前提条件才能成功获取数据。常见,需要登录Token逆向用例:根据是否满足前提条件(假设n个条件)设计0~n个用例。
带缺省值参数的正用例:所有带缺省值的参数不填写或不传递,所有必需参数用已有的“常规”值正确填写,其他不填写,设计一个用例。
业务规则和功能需求。这里根据时间情况和接口参数,可能需要设计N个正向用例,反向用例。
参数是否需要:对于每个需要的参数,设计一个参数值为空的反向用例。
参数之间有关联吗?有些参数是相互制约的。
参数数据类型限制的反向用例:为每个参数值类型不匹配的参数设计一个反向用例。
参数数据类型的数据范围值限制正向用例:对于所有参数,设计一个正向用例,其中每个参数的参数值都是数据范围内的最大值。
12.你做界面测试。你测试什么?答:
按照约定的协议、方法、格式内容进行可用性测试,向接口传输数据,处理后返回预期结果;
接口是否正确实现;
返回值测试——返回值在内容和类型上要正确,以保证调用者能够正确解析;
参数边界值和等价类检验;和错误处理测试。
输入异常值(空值、特殊字符、超出约定长度等。),并且接口能够正确处理它们并按预期响应;
如果输入了错误的参数,界面可以正确处理,并按预期响应;
输入更多或更少的参数,界面可以正确处理并按预期响应。
错误数据格式测试(比如用表单格式写的json格式);安全测试主要指数据传输的安全性:
敏感数据(如密码和密钥)是否加密;
返回数据是否包含敏感数据,如用户密码、完整的用户银行帐户信息等。
接口是否对传入数据进行安全检查,如ID加令牌;
接口是否防止恶意请求(如大量伪造请求接口导致服务器崩溃);性能测试,如接口的响应时间、并发处理能力和压力测试处理;
并发请求同一个接口(尤其是POST请求),以及接口的处理(比如插入同一个记录,导致数据错误和系统故障);代码测量研究所
界面的响应时间在用户可容忍的范围内;对请求量大的接口做压力测试,判断最大瓶颈是否满足当前业务需求;
13.你通常用什么工具来测试接口?答:常用的http协议接口测试工具,如postman、fiddler、jmeter;web界面使用SoapUI、jmeter等。
14.如果没有接口文档,做接口测试?这个问题主要考情商,通俗点说就是忽悠的能力。先忽悠一下面试官。如果进去了,也是盲测。做好随时拿锅回去的准备。当然你肯定回答不了面试官的意外(心理mmp,笑脸),然后就该拉小腿了。
回答:用抓包工具抓取界面,然后针对性的测试;如果接口字段信息不清楚,找时间。
专注于开发解决方案。(提琴手、查尔斯等。常用来抓包)
15.在手动接口测试或自动接口测试过程中,如何处理上下游接口的数据依赖?答:使用全局变量处理依赖数据,比如登录后返回token。其他接口需要这个令牌,所以使用全局变量来传递令牌参数。
16.如何测试依赖第三方数据的接口?A: mock然后面试官会问你是不是mock,然后你继续沿着坑挖,建立mock服务。请参考这个http://www.51ste.com/share/det-485.html.
17.在界面测试中,如何测试依赖于登录状态的界面?答:登录状态依赖接口的本质是每次发送请求都需要带一个session或者cookie才能发送成功,在构建POST请求的时候添加必要的session或者cookie。
18.如何模拟弱网络进行测试?回答:Fiddler和charles都能模拟弱网测试。一般来说,模拟丢包也就是模拟弱网测试。工具
可以看《几种弱网模拟方法,总有一种适合你》。
19.你在接口测试的过程中发现了哪些bug?面试官问这个问题主要是想知道你有没有实际做过接口测试。毕竟现在很多小伙伴的简历都被包装了(不包装就没办法面试,为了生存可以理解)。
答:
例程错误、接口未实现、结果未按约定返回、边界值处理错误等。输入异常值(空值、特殊字符、超过约定长度等。),接口抛出错误,没有做封装;输入错误的参数,多输入,少输入参数,
接口中可能存在的错误;安全问题,如明文传输、返回结果中的敏感信息、不验证用户身份信息、不恶意请求拦截等。
性能问题,比如接口并发插入多个相同的操作,响应时间过长,接口压力测试瓶颈等。代码测量研究所
20.当一个接口出现异常时,如何分析异常?答:先抢包,用fiddler(charles)工具抢包,或者浏览器上的F12调试工具抢包;在APP上,然后用Fiddler做代理,通过你的手机设置一个代理,看请求和返回消息;检查后端日志,比如Linux系统通过xhell连接服务器,检查接口日志看有没有错误信息(命令:tail -f log文件);
21.如何分析一个bug是前端还是后端?答:通常提到bug,前端开发和后端开发总是扯皮,不承认是对方的bug。这种情况很好判断。首先,抓取数据包并查看请求消息。查看接口文档,看看请求消息是否有问题。如果有问题,是前端发来的数据不对。请求消息没有问题,所以看返回消息,返回的数据是错误的,这是后端开发的问题。
22.你做界面测试自动化吗?答:现在对于大量的应用,广泛提倡接口测试的自动化,维护成本低,利润高。常用的工具有很多,比如Jmeter,Robot Framework,pytest等。
23.列出几个JMeter监听器?一些JMeter监听器有:聚合报告、摘要报告、查看结果树、查看表格中的结果、图形结果、BeanShell监听器摘要报告等。
24.python中的黑盒测试。在unittest中,没有内置的数据驱动,所以我们不得不用ddt来实现。首先,我们必须在python运行环境中安装ddt,并使用以下命令安装pip install ddt的另一个测试框架pytest。它是由数据驱动的,它是由@pytest参数化的。传统的酒窝。参数化(argnames,argvalues)。也可以根据自己的需要,使用python读取和驱动数据。
25.如何处理界面自动化中的关联?将前一个请求返回的结果传入下一个请求的参数中,并将请求的结果反映到一个类属性中(使用setattr()函数),该属性将被下一个请求调用。
26.自动化测试如何验证结果?断言,预期结果与实际结果的比较
数据库验证,根据测试场景,查询数据库中的数据,并与请求前的数据进行比较。
27.自动化使用的测试框架是什么?简述自动化框架的设计和维护。
测试框架:python unittest请求DDT openpyxlpymysql日志记录
Python:入门容易,语法简洁。
Unittest:定义测试用例类、维护生命周期的具体方法、测试场景行为、测试用例预场景、行为、预期结果、实际结果、断言方法以及测试用例的设置拆卸方法。
请求:接口调用,一个支持http请求的库。这个API很简洁,提供了不同的http请求方法,并且支持会话和cookies。
Ddt:数据驱动,类似ddt的decorator,数据测试方法decorator解包迭代数据类型。
普通用户、数据库、配置文件-(基本数据)
Openpyxl:数据管理excel管理数据,使用openpyxl模块读写excel数据(EXCEL、csv、json、yaml、txt都可以管理测试数据)
Pymysql:数据库交互,数据验证
Eval,json:数据格式转换。Eval将python支持的格式转换成相应的格式。
日志:日志处理,统一日志输出格式、通道、级别,记录执行结果,方便定位问题。
詹金斯:持续集成
2/框架设计思想:数据驱动的结构分层(可读性、可维护性、可扩展性)
数据驱动:维护数据与代码分离,接口调用行为一致,根据不同的参数组合驱动不同的测试场景,减少代码冗余。
结构:数据层、用例层、逻辑层
数据层:测试数据data.xls的支持
用例层:执行用例的test _ register . pytest _ reclaim . py
逻辑层:封装、提取常用方法等模块,如doexcle . pydo _ MySQL . py http _ requests . pylogger . py。
3/框架设计步骤:
测试数据的准备:EXCEL表测试用例的准备-EXCEL数据的读取-参数值的替换-代码测量研究所
Initiate:请求方法(用于封装的get/post方法-—URL拼接(不同的参数被转换成字典)
获取请求的返回值:解析返回值代码、状态、消息信息。
肯定
好处:
1.自动化测试用例与手工测试用例的完美结合,减少重复工作。
2.配置灵活,测试环境可以独立切换执行测试用例。
3、常用功能封装,逻辑清晰,易于维护。
4.统一的执行门户和测试用例集管理:
Run.py模块通过模糊搜索选择要执行的测试用例。
5.持续集成,规则建设,快速反馈。
28.具体来说,在这个项目中,如何将自动化应用到实践中?在您通过分析自动化结果完成了所有自动化测试框架的设计和实现之后,您将测试这些接口,然后将它们集成到
Jenkins,配置定期执行,生成html报告,检查测试通过率,检查接口的功能。
每次发布时,在测试新功能的开发之前,都要进行回归测试。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。