一、自动化框架环境怎么部署?
接口测试框架
1)选择开发语言
2)选择Pytest作为测试框架
3)设置测试报告
4)选择代码仓库
5)部署持续集成方案
ui测试框架
1)工具环境 2)依赖包3)工程目录4)脚本书写步骤
1、工具环境
a) Python解释器
b) Pycharm编码工具
c) Web端:
d) 浏览器
e) 浏览器驱动程序
2、依赖包
a) Selenium
b) pytest
c) pytest-html
3、工程目录
a) base 基类python package
b) page PO封装python package
c) case 测试用例python package
d) data 数据文件Directory
e) report 测试报告Directory
f) log 日志文件Directory
g) screenshot 截图文件Directory
h) config.py 项目配置信息文件
i) utils.py 工具类文件
4、
脚本编写
二、哪些项目适合自动化测试
1. 需求变动不频繁
2. 项目周期需要足够长
3. 自动化测试脚本可重复使用
5. 手工测试无法完成的测试
接口测试、性能测试、配置测试、大量数据输入测试,这些就是需要投入大量时间与人力也可以引入自动化测试。
三、python需要编译吗?
不需要
Python是一种解释型语言,对于Python来说,你不需要显式地进行编译步骤。你可以直接运行Python文件
四、python是面向什么的语言?
面向对象
它支持多种编程风格,包括面向对象编程、函数式编程、以及过程式编程。不过,Python最广为人知的特点之一就是它的面向对象特性。
五、python生成随机数?
random.randint(a,b) 随机整数
random.random() 随机0到1浮点数
六、python数据类型
整数、浮点数、字典、元组、字符串、列表、布尔、None、集合
七、unitest和pytest适用场景
unitest更适合大项目、pytest更适合小项目
如果你正在维护一个已有的使用 unittest 的大型项目,并且团队成员熟悉其用法,那么继续使用 unittest 是合理的。
如果你有一个新项目,特别是小型项目,或者希望简化测试过程,那么 pytest 可能是一个更好的选择。
如果你对测试有特殊需求,例如需要高度定制化的测试报告,或者需要并行测试执行等,pytest 的插件生态系统可能更适合你的需求。
八、整个自动化测试的优点
提高测试效率、减少人为错误、提高测试覆盖率、便于重复执行、降低长期成本、支持多平台测试(自动化测试可以轻松地跨多个操作系统、浏览器和设备进行测试、便于兼容性测试)、易于扩展
九、测试脚本开发人员投入
看项目大小
看自动化测试成熟度
看自动化测试覆盖范围
看测试周期
十、列表list和元组tuple区别
列表可变、除list之外还有字典dict、集合set
元组不可变
十一、列表去重
1、适用集合set A = list(set(B))
2、列表推导式 L = [A.append(x) for x in B if x not in A]
3、直接循环去重
十二、字符串反转
1、切片 A = B[::-1]
2、reversed和join A = ''.join(reversed(B))
reversed把字符串反转成list,join将list里面的值拼接成字符串
十三、装饰器的作用
Python 装饰器是一种强大的功能,允许你在不修改原始函数代码的情况下增加新的功能。
对测试而言:
设置测试环境(例如,初始化数据库连接或创建临时文件。)
清理测试数据(例如,关闭数据库连接或删除临时文件。)
模拟外部依赖(使用模拟对象(mocks)来替代真实的外部依赖,以便于在没有实际外部服务的情况下测试代码。例如,模拟网络请求、数据库查询等。)
条件跳过测试
参数化测试
性能测试(记录执行时间等)
记录测试结果(自动记录测试结果,便于跟踪和分析测试过程)
十四、python中的闭包
它能够记住并访问其定义时所在的作用域中的变量,即使在其外部作用域已经关闭的情况下也是如此。简单来说,闭包就是能够访问其自身范围之外变量的函数。
条件:
一个函数中包含另一个函数、外函数返回内函数、内函数能调用外函数的变量(即使其外部作用域已经关闭)
十五、进程、线程
进程:进程是操作系统中独立运行的基本单位,每个进程都有自己的地址空间。
线程:线程是进程内的一个执行单元,它是进程内部可调度的最小单位。
多进程测试:如果需要模拟多个独立的应用实例或者测试不同进程之间的交互,可以使用多进程技术。(例如一个系统里面有多个独立的应用程序、验证这些程序之间的交互)
多线程测试:如果要测试应用程序的并发处理能力,例如数据库连接池的性能,或者Web服务器的请求处理能力,多线程测试就显得尤为重要。(验证应用程序在同时处理多个任务或请求时的表现)
并发测试工具:一些测试工具(如JMeter或LoadRunner)支持多进程或多线程并发模拟用户行为,帮助评估系统的负载承受能力。
十六、处理接口依赖
一般处理接口依赖都是指处理token鉴权
在工具里面(postman)在上一个请求发送后,使用js脚本将token提取设置为全局变量
在自动化测试脚本里面编写一个提取token到临时文件的方法,需要使用时再提取出来
十七、自动化测试支持并发吗?
支持(“并发”是一个广泛的概念,它可以指代多种不同级别的并行执行。并发可以涉及多进程、多线程、协程等多种形式。)
1、在pytest框架的自动化测试中使用pytest-xdist插件便可以实现并发
pytest -n 2 test_sample.py 指定两个进程来运行测试
pytest -n auto test_sample.py 自动设置进程数(根据cpu核心数)
2、对于非pytest的测试框架、可以使用多线程来实现并发测试
使用 Python 的 threading 模块
#执行测试用例
def run_test(test_case):
pass
#测试用例
test_cases=[{},{},{}]
# 创建线程列表
threads = []
# 启动线程
for test_case in test_cases:
thread = threading.Thread(target=run_test, args=(test_case,))
threads.append(thread)
thread.start()
# 等待所有线程完成
for thread in threads:
thread.join()
十八、性能测试一般关注哪些指标?
tps:每秒处理的事务数,用于衡量系统在单位时间内可以处理的事务数量。( TPS 表示每秒钟系统能够处理的事务数量。)
qps:每秒内处理的查询数量。通常用于数据库或API接口的性能测试。
错误率:处理请求时发生的错误或失败的次数与总请求数量的比例。
平均响应时间:平均响应时间是指从客户端发出请求到接收到服务器响应这段时间的平均值。这个时间通常包括网络延迟、服务器处理时间和数据传输时间等。
并发数:并发用户数,指某一时刻同时向服务器发送请求的用户数。
资源使用率:cpu、内存、磁盘、网络,CPU不高于75%-85%、内存不高于80%、磁盘IO(速率)不高于90%、网络不高于80%;
注意:一个事务是指一个客户机向服务器发送请求,然后服务器做出反应的完整过程。这包括用户请求服务器、服务器内部处理以及服务器返回给用户的整个流程。
TPS 考虑的是一个完整的业务流程,而 QPS 关注的是单个查询。
tps和qps实际场景中的关系
如果一个接口内部不再请求其他接口,那么 TPS 和 QPS 可能相等。
但在复杂的业务场景中,一次业务请求可能会触发多个后台查询,这时 QPS 就会大于 TPS。
在容量场景下,如果有多个独立的查询接口,且这些接口内部不再请求其他接口,QPS 可能是 TPS 的倍数。
十九、性能测试的目的
1、评估系统性能:确定系统在各种工作负载条件下的响应时间和资源利用率。测量系统的吞吐量,即系统在单位时间内能处理的最大工作量。
2、识别性能瓶颈:发现限制系统性能的因素,比如CPU、内存、磁盘I/O或网络带宽等。
3、确保稳定性:通过长时间的压力测试来检查系统的稳定性和可靠性。验证系统在长时间高负载下的表现,包括检测是否存在内存泄漏等问题。
4、提升用户体验
5、优化资源利用
二十、开发流程
需求分析(需求评审)、设计(架构设计、ui设计等等)、编程开发、测试(集成测试、系统测试、性能、安全、验收)、项目部署、维护