python自动化测试面试题(三)(持续更新)

您所在的位置:网站首页 客观题是指什么类型的题 python自动化测试面试题(三)(持续更新)

python自动化测试面试题(三)(持续更新)

#python自动化测试面试题(三)(持续更新) | 来源: 网络整理| 查看: 265

在这里插入图片描述 41、怎么设计接口测试用例?(非常重要)

通常,设计接口测试用例需要考虑以下几个方面:

①是否满足前提条件

有些接口需要满足前提,才可成功获取数据。常见的,需要登录Token 逆向用例:针对是否满足前置条件(假设为n个条件),设计1~n条用例

②是否携带默认值参数

正向用例:带默认值的参数都不填写、不传参,必填参数都填写正确,设计1条用例

③业务规则、功能需求

结合接口参数说明,可能需要设计N条正向用例和逆向用例

④参数是否必填

逆向用例:针对每个必填参数,都设计1条参数值为空的逆向用例

⑤参数之间是否存在关联

有些参数彼此之间存在相互制约的关系

⑥参数数据类型限制

逆向用例:针对每个参数都设计1条参数值类型不符的逆向用例

⑦参数数据类型自身的数据范围值限制

正向用例:针对所有参数,设计1条每个参数的参数值在数据范围内为最大值的正向用例

42、你做接口测试,测什么?(非常重要) 可用性测试

根据约定的协议、方法、格式内容,传输数据到接口经处理后返回期望的结果: 1、根据响应结果判断接口功能是否正确实现; 2、返回值测试 – 返回值除了内容要正确,类型也要正确,保证调用方和前端能够正确地解析, 3、返回值测试 – 判断返回值中的字段是否有缺少或者多余 4、参数值边界值、等价类测试;

错误和异常处理测试

1、输入异常值(空值、特殊字符等),接口能正确处理,且按预期响应; 2、输入超长数据或者超大或者超小数据,接口能正确处理,且按预期响应; 3、输入错误的参数,接口能正确处理,并按预期响应; 4、多输入、少输入参数,接口能正确处理,且按预期响应; 5、错误传输数据格式(如json格式写成form格式)测试;

安全性测试,主要指传输数据的安全性:

1、敏感数据(如密码、秘钥)等是否加密传输; 2、返回数据是否含有敏感数据,如用户密码、完整的用户银行账号信息等; 3、接口是否对传入的数据做安全校验,如身份ID加token类似校验; 4、接口是否防止恶意请求(如大量伪造请求接口致使服务器崩溃);

性能测试,如接口的响应时间、并发处理能力、压测处理情况:

1、并发请求相同的接口(特别为POST请求),接口的处理情况(如插入了相同的记录导致数据出错,引发系统故障); 2、接口响应时长在用户可忍受的范围内; 3、对于请求量大的接口做压测,确定最大的瓶颈点是否满足当前业务需要;

43、没有接口文档,如果做接口测试?(非常重要)

没有接口文档,那就需要先跟开发沟通,然后整理接口文档 没有接口文档,可以抓包看接口请求参数,然后不懂的跟开发沟通

44、你平常做接口测试的过程中发现过哪些bug?(非常重要)

面试官出这个题,主要是想知道你是不是真的做过接口测试, 常规错误,接口没实现,没按约定返回结果,边界值处理出错等。 输入异常值(空值、特殊字符、超过约定长度等),接口抛错,没做封装处理; 输入错误的参数、多输入、少输入参数,接口可能出现的错误; 安全性问题,如明文传输、返回结果含有敏感信息,没对用户身份信息做校验,没做恶意请求拦截等; 性能问题,如接口并发插入多条相同操作,响应时间过长,接口压测出现瓶颈等;

45、你的项目是什么阶段介入接口自动化测试的(非常重要)?

项目前期:编写测试用例、搭建测试框架、调试脚本代码; 项目中期:执行测试,报告bug,维护框架,调整测试用例 项目后期:代码改进,框架优化,结果输出,分析报告,回归测试 项目上线:监控项目,维护框架

46、Python 什么是命名元组? from collections import namedtuple User=namedtuple('User',('name','age','city')) user1=User('kobe','18','洛杉矶') print(user1) #User(name='kobe', age='18', city='洛杉矶') print(user1.name) print(user1.age) print(user1.city)

执行结果:

python User(name='kobe', age='18', city='洛杉矶') kobe 18 洛杉矶 47、Python 如何去操作 MySQL 数据库? # 1、导入mysql from pymysql import * # 2、创建数据库lianjie conn = connect(host='localhost', port=3306, user='root', password='xxxx', db='mytestdb', charset='utf8') print(conn) # 3、打开游标 cur=conn.cursor() # 4、执行sql语句 # 编写sql语句 # 查询数据时为了节约内存,不要用*,而要指定具体的字段,另外要指定查询条件,现在查询条数 sql="select sno,sname,sex,age,enterdate,classname,email from t_student1 where age>%s" params=(30) # 执行sql语句 cur.execute(sql,params) # todo 获取1条数据,每次执行cur.fetchone()语句,游标都会向下走,获取到新的数据 result=cur.fetchone() print(result) # result=cur.fetchone() # print(result) # result=cur.fetchone() # print(result) # todo 获取所有的数据 result1=cur.fetchall() print(result1) # todo 获取多条数据 result1=cur.fetchmany(2) #取指定条数据 print(result1) # 5、关闭游标 cur.close() # 6、关闭连接 conn.close() 48、解决手动造数据问题(重要)

参数化 手机号: excel里边存放初始手机号 每次执行完,回写新的手机号(原来号码+1) 每次从数据库里查询最大手机号,在这个基础上加1 变量替换: 数据库依赖关系 ${mobile} ${regtime} ${memberid} ${loanid} 最关键:用例设计、用例参数之间依赖关系

49、为什么做接口测试(重要)?

a、可以发现很多在页面上发现不了的bug。 b、检查系统的异常处理能力。 c、检查系统的安全性,稳定性。 d、前端随便变,接口测好了,后端就可以不用变了。 e、接口测试是一个完整的体系,也包括功能刻试、性能则试和安全性测试。

50、登录按钮除了用click方法进行点击以外还有其他方式吗?

还可以使用 submit() 方法,前提是input元素的type为submit

51、怎么验证复选按钮是不是被选中

可以使用元素的 isSelected() 方法,如果返回的是 true 则说明被选中,否则表明未被选中

52、需求:给定一个只包含正整数且非空的数组,返回该数组中重复次数最多的前N个数字(返回结果按重复次数从多到少降序), 请用熟悉的语言实现该需求。10分钟内写出来 a=[2,3,5,7,2,2,7,8,5,5,5] def fun(s): d={} for item in s: if item not in d: d[item]=1 else: d[item]+=1 print(d) return d def fun_sort(): res = fun(a) dd = sorted(res.items(), key=lambda x: x, reverse=True) print(dd) N = int(input("请输入一个数:")) for i in range(0,N): print("出现次数排第%d的数字是%d,共出现了%d次" % (i+1,dd[i][0],dd[i][1])) fun_sort() 53、在制定自动化测试计划的时候一般要考虑哪些点?(重要)

1、分析当前的工具是否适合新项目 2、选择合适的自动化测试框架 3、确定要做自动化测试的范围和不做自动化测试的范围 4、测试环境的准备 5、制定一个粗略的脚本开发的时间表 6、制定脚本执行的一些策略,如冒烟测试的频率,回归测试的时间点及频率等 7、定义自动化测试的输出,比如脚本,测试数据,发现的缺陷,测试报告等

54、编写自动化脚本时的一些规范?

1、统一的命名约定,如用例名,方法名等 2、良好的脚本注释 3、遵循代码规范,使用适当的缩进 4、对异常进行处理

55、做自动化测试时关注的一些指标?

1、自动化测试用例的覆盖率=自动化测试用例数/所用用例总数,这个比例越高测试反馈越快,成本节约越多 2、节省的时间成本=手工测试所花的时间-自动化测试所花的时间 3、自动化测试的投入=开发脚本的投入+脚本维护的投入+工具价格 4、自动化测试发现的缺陷数,每次回归测试时自动化测试发现的缺陷数及漏测数,反应了自动化用例的有效性 5、自动化测试投入产出比 ROI=(手工测试的成本-自动化测试成本)/自动化测试成本 ROI如果是负值说明自动化测试的成本未收回,ROI为正值说明自动化测试成本已回收,且值越大说明回报越好

56、Selenium可以处理Windows弹窗吗?

Selenium本身是不可以处理Windows弹窗的,但是Selenium可以借助Autolt小工具来完成对Windows弹窗的操作。

57、如何判断一个元素在页面上是显示出来的?

webelement类中的is_displayed()方法

本身这个函数用于判断某个元素是否存在页面上(这里的存在不是肉眼看到的存在,而是html代码的存在。某些情况元素的visibility为hidden或者display属性为none,我们在页面看不到但是实际是存在页面的一些元素。)

58、Selenium中如何判断元素是否存在? from selenium.common.exceptions import NoSuchElementException # 判断元素是否存在 def isElementPresent(self, by, value): try: element =self.driver.find_element(by=by, value=value) except NoSuchElementException as e: # 发生了NoSuchElementException异常,说明页面中未找到该元素,返回False return False else: # 没有发生异常,表示在页面中找到了该元素,返回True return True 59、不可逆的操作,如何处理,比如删除一个订单这种接口如何测试

此题考的是造数据的能力,接口的请求数据,很多都是需要依赖前面一个状态的 比如工作流这种,流向不同的人状态不一样,操作权限不一样,测试的时候,每种状态都要测到,就需要自己会造数据了。 平常手工测试造数据,直接在数据库改字段状态。那么自动化也是一样,造数据可以用python连数据库了,做增删改查的操作。 测试用例前置操作,setUp做数据准备 后置操作,tearDown做数据清理

60、接口产生的垃圾数据如何清理

跟上面一样,造数据和数据清理,需用python连数据库了,做增删改查的操作 测试用例前置操作,setUp做数据准备 后置操作,tearDown做数据清理。

在这里插入图片描述

在这里插入图片描述


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3