测试经验分享,Web自动化测试+性能测试面试项目讲解(详情)

目录:导读


前言

Web自动化项目讲解:

1、首先我们搭建好Python+selenium+pytest/unittest单元测试框架环境,然后打开pycharm,新建一个python文件,通过form selenium import webdriver导入webdriver模块。

通过driver=webdriver.Chrome(),(框ruang目)创建一个浏览器对象,在通过get方法打开我们项目测试环境的URL地址,之后开始编写银行首页界面测试用例通过driver.get命令打开我们项目的网址,maximize_window()最大化窗口

2、进入定位在线申请框,发现是img标签通过find_element_by_xpath()方法进行定位,并调用click()方法进行点击操作

编写切换窗口,首先用handles3= driver.window_handles方法进行获取当前所有的窗口句柄

通过for循环进行窗口句柄的切换至'在线申请窗口',并调用break结束窗口的切换

3、编写易贷申请页面用例、定位个人易贷申请框,发现是img标签调用find_element_by_xpath()方法进行定位,并调用click()方法进行点击操作

编写切换窗口操作,首先用handles3= driver.window_handles方法进行获取当前所有的窗口句柄

通过for循环进行窗口句柄的切换至'个人易贷申请窗口',调用break结束窗口的切换

4、编写贷款信息填写自动化测试用例,定位姓名、证件号、手机号、工作单位所在地区、户籍所在地区详细资料、申请额度、个人今年收入、家庭总资产、逾期次数、验证码。

5、定位发现输入框都是是input标签、driver对象通过调用find_element_by_id()方法进行定位输入框,并且通过send_keys()方法输入内容、定位证件类型、贷款种类、职务职称、发现都是下拉选择框driver对象通过调用find_element_by_id()方法进行定位、并且通过Select(s).select_by_index()索引位来进行选择编写信息确认测试用例,调用贷款信息填写方法,定位提交按钮元素,发现是a标签此时调用find_element_by_linktext(),并调用click()方法

6、测试用例编写完成,在主函数中运行测试用例,输出测试报告(详细步骤:实例化一个unittest中的defaultTextloader的discover类的对象,

用于放置自动化测试用例,导入HtmlTestRunnerNEW包,实例化一个HtmlRunner类的对象runner调用run方法用于运行discover存放的自动化测试用例)

7、我刚开始用selemium做ui自动化测试的时候都是用线性脚本去写的,所以会存在一些脚本冗余的情况。

所以后面我采用了7层封装,分别是:

1)config包:用来存放项目的配置项,或者配置文件(服务器的信息,数据库的信息)

2)data包:用来存放测试用例的数据(一般将用例的数据保存在excel表格或者mysql数据库中)

3)lib包: 用来存放引用的第三方包(例如:HtmlTestRunner这种生成报告的第三方文件)

4)report包:用来存放运行自动化测试用例以后生成的报告

5)run包:用来存放运行测试用例的runner对象(不同的runner对象运行不同的用例)

6)testcase包:用来存放被运行的测试用例(用例一般封装在unittest框架中)

7)utils包:用来存放封装的一些工具类(例如操作excel表格的工具类,操作mysqlI的工具类,操作配置文件的工具类)

jmeter做基准测试、压力测试、并发测试

1、基准测试:较小的压力,提供基础的数据

我们先要看性能测试的需求分析 ,关于测试人员测试出来的问题,及用户反馈的问题综合分析编写测试计划,测试计划编写完成就开始执行性能测试。

首先打开bodboy录制接口,在file窗口下把badboy里面录制的接口导出jmeter格式:Exprot to jmeter文件并修改文件名称保存在某个目录下,然后打开Jmeter创建一个测试计划。

在测试计划中添加接口测试线程组并修改名称,性能测试我是分为4给阶段来测试的那么分别是:基准测试,压力测试,并发测试,失效恢复测试,

我先添加的是基准测试接口,在基准测试接口下添加线程组,在线程组下添加HTTP Cookie Manager管理器、User Defined Variables用户变量、HTTP Header Manager信息头管理器。

同步定时器输入用户组数量及通过的时间设定,然后导入在bodboy录制的接口地址,添加聚会报告,添加查看结果树,点击运行查看响应数据,分析性能的结果,然后输出性能测试报告

2、压力测试:接近性能的拐点或者瓶颈,进行持续的压测

性能测试的目的:就是不断的增加服务器的压力 ==》可以从2个方面去考虑,一个是不断的增加

用户的数量(站在用户的角度),一个是不断的增加请求数(站在服务器的角度)

性能测试的模型:

1)用户并发模型:不断的去增加并发用户数(并发测试就是基于这种模型)

2)吞吐量模型:不断的去增加请求的数量(压力测试就是基于这种模型)

首先在Jmeter测试计划下创建一个线程组并修改名称,然后添加jp@gc - Throughput Shaping Timer定时器,在定时器中点击add ROW(设置请求数,设置并发数,设置持续时间进行压测)(start RPS起始每秒请求数,End RPS结束每秒请求数,Duration,sec加载时间),再添加http请求,和添加查看结果树,

和jp@gc - Composite Graph、>圆形管理插件
jp@gc - Hits per Second、>每秒点击数监控插件

jp@gc - Transactions per Second、==>响应时间曲线监控插件

jp@gc - Response Times Over Time ==>TPS曲线监控插件

然后添加一个聚会报告,查看结果分析主要是看rps(hps)和tps数据,并输出测试报告。

3、并发测试:所有的用户在同一时间调用同一个接口

1)相对并发 ===》没有设置集合点和基准测试一样

2)绝对并发 ==》需要设置集合点synchrnizing timer,让所有的用户加载完成之后才去发送接口请求

那么并发测试又分为相对并发和绝对并发

我做绝对并发测试时需要在测试计划中创建一个线程组并修改名称,然后添加同步定时器,设置一个集合点synchrnizing timer,让所有的用户加载完成之后,才去发送接口请求,那么在定时器中点击add ROW(设置请求数,设置并发数,设置持续时间进行压测)(start RPS起始每秒请求数,End RPS结束每秒请求数,Duration,sec加载时间),再添加http请求,和添加查看结果树,

然后添加一个聚会报告,查看结果分析主要是看rps(hps)和tps数据,并输出测试报告。

性能测试是怎么测的?

在测试之前首先要了解它的准出原则:TPS、响应时间、并发数、吞吐量等分别是多少

我们公司是用jemeter做的性能测试,那我就拿我之前做的一个场景来说吧,那是从登陆到进入个人中心查看用户信息这么一个流程。目标是对服务器进行压力和稳定性测试,以及对CPU、内存的一个压测。

首先的话,在jemeter中创建一个线程组,添加http请求,填写相关信息,url、端口号等等,根据文档上写的我们是做五百用户的一个并发 ,把线程数设置为500,加载时间设为10s,模拟500个用户同时操作。

还需要添加定时器,有两个参数,第一个是并发数,设置为500,第二个是时间,设置时间为10000ms。

为了查看测试结果,可以添加聚合报告,聚合报告一般观察平均值、90%、95%用户请求时间、最大最小请求时间、错误率,还可以借用其他插件生成曲线图,基本上就是这样的

如果不符合,那就需要根据聚合报告、去找一下性能瓶颈,在根据瓶颈进行分析,给出调优方案,在最后完成一下性能回归测试 。

完整版!企业级性能测试实战,速通Jmeter性能测试到分布式集群压测教程

|-------------------------------------|
| 下面是我整理的2025年最全的软件测试工程师学习知识架构体系图 |

一、Python编程入门到精通

二、接口自动化项目实战

三、Web自动化项目实战

四、App自动化项目实战

五、一线大厂简历

六、测试开发DevOps体系

七、常用自动化测试工具

八、JMeter性能测试

九、总结(尾部小惊喜)

人生最动人的风景,往往藏在最难攀爬的高处。当你觉得力竭时,请记住:每一次坚持都在雕刻更强大的自己。别问路有多远,只管迈步向前;别怕山有多高,向上攀登就是答案!

你体内沉睡着改变世界的力量!每个清晨都是改写命运的新机会,每次挫折都是精心包装的礼物。当全世界都在说"不可能"时,正是你证明"可能"的最好时机!

相关推荐
软件测试小仙女3 小时前
认真测试大语言模型(LLM)
软件测试·人工智能·测试工具·ai·语言模型·自然语言处理·llm
流星白龙1 天前
7.YAML和JSON Schema
json·接口测试
天才测试猿1 天前
Postman常见问题及解决方法
自动化测试·软件测试·python·测试工具·职场和发展·接口测试·postman
草莓味的¥猪2 天前
JMeter 4000并发压测实战教程
jmeter·性能测试
realhuizhu2 天前
周五下午5点改完的代码,你敢直接发布上线吗?
自动化测试·单元测试·ai编程·测试驱动开发·代码质量
流星白龙2 天前
9.测试报告allure
接口测试
Stella25213 天前
实习日志|知识总结
linux·服务器·软件测试·数据库