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

在人生的道路上,不管是潇洒走一回,或者是千山独行,皆须是自己想走的路,虽然,有的人并不是很快就能找到自己的方向和道路,不过,只要坚持到底,我相信,就一定可以找到自己的路,只要找到路,就不必怕路途遥远了。

导读:本篇文章讲解 python自动化测试面试题(三)(持续更新),希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

在这里插入图片描述

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做数据清理

在这里插入图片描述

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/123226.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!