如何搭建python自动化测试框架
1
新建一台Jenkins服务器,安装并配置好Jenkins
2
配置一个自动化测试脚本的代码库,可以使用Git或者SVN等版本控制工具。然后在Jenkins服务器上配置一个Job,负责自动的同步最新代码到Jenkins服务器上。
3
配置要跑自动化测试的虚拟机VM,推荐干净环境下安装需要跑自动化测试的依赖软件工具或者配置以及自动化测试工具(不提前安装配置也行,可以在跑自动化之前用另外的脚本自动安装配置),配置好之后关机并打一个snapshot镜像快照,并命名为prebuild或其它。
4
新建一个Jenkins Job,用来跑自动化。配置需要连接并使用的自动化测试虚拟机,配置要构建的自动化测试框架xml脚本文件(后面步骤有说明)和target,以及要归档的测试报告,邮件发送等等。
5
接下来的重点就是自动化测试框架的xml脚本文件了,首先里面定义一个target,负责获取自动化测试对象的安装包。
6
接着定义一个target(可选),负责从版本库上获取自动化测试脚本同步到Jenkins服务器上(也可以直接使用Jenkins Job本身的插件配置来获取代码)。
7
定义一个target,负责连接到虚拟机服务器,并恢复到虚拟机的原始状态例如prebuild,然后开机
8
定义一个target,负责拷贝项目产品安装包和自动化测试源代码到目标虚拟机上。
9
定义一个target,负责连接到目标测试虚拟机,并打开自动化测试工具,然后运行自动化测试脚本
10
定义一个target,负责处理自动化测试报告文件和日志文件并把它们从自动化测试虚拟机拷贝到Jenkins服务器对应的Job工作空间下。
11
最后定义一个主target,按照上面的target流程依次调用。这个主target就是Jenkins服务器上的自动化测试Job中配置的需要构建的Target。
1 http代码表,常考题目
404:找不到资源
500:服务器内部错误,无法完成请求。
501:服务器不支持请求的功能,无法完成请求。
502:充当网关或代理的服务器,从远端服务器接收到了一个无效的请求。
301:永久移动。请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI,今后任何新的请求都应使用新的URI代替。
302:临时移动。与301类似。但资源只是临时被移动,客户端应继续使用原有URI。
200:成功。
2 TCP/IP四层网络模型
链路层、网络层、传输层、应用层。
3 TCP/UDP区别?
TCP: 可靠传输协议,需要三次握手连接,有确认重传机制,特点是可靠、准确、有拥塞控制,缺点就是比较慢,传输量比较小,适用于升级、下载;一句话:TCP是可靠的传输。
UDP: 不可靠传输协议,面向非连接的协议,优点是传输量大、速度快,缺点是已丢失、没有拥塞控制,适用于直播、视频等。一句话:UDP是不可靠的传输。
4 html css js运行的先后顺序是什么?
界面加载的时候先加载html在加载css最后加载js
5 session和cookie的区别是什么
1 session存放在服务器端用来校验客户端的身份
2 cookie存放在客户端,每次从客户端往服务器发请求时,将cookie带到服务器端,用来校验客户端的身份
1 怎么用JMeter测试接口?
如果使用JMeter进行接口测试:
1) 测试前了解需求,根据接口规格说明书梳理业务;
2) 接下来设计用例,分析接口的入参和出参,分清楚有哪些有效输入和无效输入,设计用例(原则:用最少的用例覆盖所有有效输入,针对每一个无效的输入设计一个测试用例,如果有错误码没有覆盖到,还要对每个未覆盖的错误码分别设计一个用例);
3) 准备测试数据,比如:测试所需的账号、密码、key 等信息;
4) 打开JMeter,创建一个线程组,根据接口类型,填写好对应的接口地址和请求方式等;
5) 参数化配置,添加配置元件CSV Data Set Config,定义变量,并准备CSV格式的数据,变量的引用用${变量名}的格式;
6) 添加断言来判断测试结果的正确性,用得最多的是响应断言;
7) 添加监听器,比如查看结果树,对测试结果进行监听;
8) 运行测试用例;
9) 查看监听器结果,来判断用例的执行是成功还是失败,针对失败的用例,分析其失败原因;
10) 针对测试中发现的问题,给开发提单,直到问题最终解决。
11) 最后输出测试报告。
2 怎么用Postman测试接口?
如果使用Postman测试接口:
其中1,2,3点相同,工具使用方面则比JMeter跟简单,工具的主要的步骤是添加对应的请求、填写主机URL及入参、添加测试套、运行测试套、分析结果出报告。
3 在JMeter上如何把上一个请求的结果作为下一个请求的参数?
使用正则表达式提取器提取上一个请求的响应中的信息,保存一个引用名称比如abc,在下一个请求的参数中,用${abc}的格式来引用提取的结果。
常用的正则表达式格式:(+),其中表示匹配任意字符串,+表示只匹配一次,?表示匹配到就停下来。
一般是我们功能测试完成最后两三天时间测试性能。
1、先是分析需求计算出并发数,TPS,响应时间和 CPU,内存,硬盘和网络IO这些指标。
2、制定测试方案,主要包括环境,计划和具体测试那些场景(如可靠性,并发,负载,压力测试等)
3、根据场景用Badboy录制脚本,导出为JMeter工具支持的脚本。
4、用JMeter工具打开脚本,进行脚本调试,加一些断言,监听器,参数化等。
5、接下来执行性能测试,然后主要收集监听器和收集服务器CPU,内存,硬盘和网络IO等分析是否满足需求,如果满足就输出性能测试报告。
6、如果指标不能满足,反馈给开发进行调优。调优后继续测试,一直到满足需求后最终输出测试报告。
1 Python怎么定义一个函数?
你可以定义一个由自己想要功能的函数,以下是简单的规则:
1) 函数代码块以def关键词开头,后接函数标识符名称和圆括号()。
2) 任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。
3) 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
4) 函数内容以冒号起始,并且缩进
5) return[表达式]结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回None
2 Python切片
3 Python上用过什么库/模块?
webdriver:定位和操作元素
time:设置等待时间
ActionChains:动作链,完成鼠标的相关操作
Keys:键盘的相关操作
WebDriverWait:设置显式等待
Expect_Conditions:针对单个元素,设置显式等待的场景
PIL:截图
Select:下拉选择框的操作
unittest python:自带的单元测试框架
HTMLTestRunner:运行脚本,生成报告
ddt:实现数据驱动测试,行为和数据分离
4 你做过自动化测试吗?
我在上一份工作中,公司去年下半年也开始规划做Web 自动化,采用Python作为开发语言,通过Selenium WebDriver定位和操作页面元素,自动化框架用的是unittest。我主要负责写测试脚本。
假设一个测试团队有5个人:1资深(测试经理)+2~3个中级(自动化+手动)+1 个初级(手动)
5 使用什么工具进行的自动化测试
使用的工具是Selenium(Web自动化工具)
6 用的什么编程语言
用的Python
7 Selenium 用的是哪个版本的的?Python用的是哪个版本的?
用的是selenium 3110和Python2710
8 Selenium的工作原理?
1)对html元素定位
2)模拟对第一步定位到的元素进行点击、输入、选择等操作一句话:定位元素,操作元素。
9 元素定位方法有哪些?
要点:8种定位方法
1) 根据元素的属性值定位,比如 id、name、class、标签名、链接文字和部分链接文字;
2) 根据CSS选择器定位;
3) 根据 XPath 定位;
10 子页面里的元素怎么定位?
先切换到框架里,然后再定位,用switch_to_frame函数根据子页面id或name,切换到子页面;定位完了如果要再定位主页面的元素,要用switch_to_default_content 函数先返回主页面。
11 怎么定位alert弹窗?或者这样问:怎么处理JS原生窗口?
要点:主要涉及点击弹窗确认按钮、强行关闭弹窗、获取弹窗中的文字等操作。
1) 点击弹窗的确定按钮,用如下函数:
driverswitch_to_alert()accept()
2) 强行关闭,点击右上角的叉叉,用如下函数:
driverswitch_to_alert()dismiss()
3) 获取弹窗里的文字,用如下函数:
driverswitch_to_alert()text
12 怎么运行自动化用例并生成测试报告?
以unittest为例,我通常的做法是把用例加载到测试套中,做成一个脚本,在命令窗口下运行脚本,报告的生成用第三方模块HTML TestRunner来生成。
13 怎么定位/操作中的验证码?
用tesseract OCR引擎处理中的验证码,步骤:
(1)对整个屏幕截屏,保存成png格式的;
(2)在截取的中定位验证码的位置坐标;
(3)根据坐标对验证码截图;
(4)在中提取验证码,输入到输入框。
1介绍一下测试流程(重点,常见!)
2介绍一下测试方法
3介绍一下测试用例设计方法(用例设计方法&测试方法需要分清楚)
4设计一个登录页面的用例(提供某个场景的设计用例,重点!)
5举例说明项目推进的能力(针对个人评价的举例说明)
6考试中遇到的比较难的一个项目是?(掌握自己简历上的项目)
7印象深刻的一个bug?
8你们公司是不是敏捷开发?介绍一下敏捷开发?
9复盘会议的主要内容有哪些?
10App 的兼容性怎么测,App 的接口测试怎么测?
11Web 端测试和 App 端测试有何不同(常见)
1 工作中常使用的 SQL 语法有哪些?
2数据库存储过程
3SQL 常见查询语句编写(此处仅举例常见的查询语句,如有更多坑,希望补充)
a查询所有学生的数学成绩,显示学生姓名 name, 分数, 由高到低。
b统计每个学生的总成绩(由于学生可能有重复名字),显示字段:学生 id,姓名,总成绩。
c列出各门课程成绩最好的学生, 要求显示字段: 学号,姓名,科目,成绩
4慢查询是什么意思?
5导致数据库性能差的可能原因有哪些?
6Redis 缓存应用场景
7怎么定位 Redis 缓存失效问题(缓存坏了)
1 工作中常用的 Linux 命令有哪些?
2什么命令可以帮助 Linux 执行 Windows 上传的脚本
3简述 Linux 三剑客
4如何通命令定位 Linux 服务器下的日志?
5简述项目中的环境搭建和维护
1 自动化代码中,用到了哪些设计模式?
2 什么是断言?
3 UI 自动化测试中,如何做集群?
4 怎么对含有验证码的功能进行自动化测试?
5 如何优化和提高 Selenium 脚本的执行速度?
6 接口测试能发现哪些问题?
7 Selenium 中隐藏元素如何定位?
8 如何判断一个页面上元素是否存在?
9 如何提高脚本的稳定性?
10 如何定位动态元素?
11 如何通过子元素定位父元素
12 平常遇到过哪些问题 如何解决的
13 一个元素明明定位到了,点击无效(也没报错),如果解决?
14 测试的数据你放在哪
15 什么是数据驱动,如何参数化?
16 其他接口都需要登录接口的信息,怎么去让这个登录的接口只在其他接口调用一次?
17 接口产生的垃圾数据如何清理?
18 怎么用接口案例去覆盖业务逻辑?
1 性能测试指标包括哪些
2 如果一个需求没有明确的性能指标,要如何开始进行性能测试?
3 介绍 JMeter 聚合报告包括哪些内容?
4 如果有一个页面特别卡顿,设想一下可能的原因?
5 说一说项目中的实际测试内容
6 介绍一下 JMeter 进行性能测试的过程
7 介绍一下 JMeter 和 LoadRunner 的区别
全套软件测试/自动化测试海量资料免费领取
0条评论