- 博客(75)
- 收藏
- 关注
原创 4.3-2 jenkins
45 (9-15)/2 * * 1-5每个工作日从早上9:00 到下午5:00 这段时间内每间隔2小时的的某刻;例如: 每2分钟执行一次 H/2 * * * * (注意:要空一格,H/2 每隔两分钟,第二个* 任何时 ,第三个* 表示任何日,第四个* 表示任何的月,第五个* 表示任意周 )每前半小时中,间隔10分钟 H/(0-30)/10 * * * *每天8至点16点,每1小时执行一次 H (8-16)/1 * * *第一个* 表示: 分钟:0—59。
2025-04-03 11:55:46
373
原创 4.3-1 jenkins安装
在工作中我们引入持续集成,通过持续集成自动构建(代码的编译、发布、部署、 用例的更新和自动化执行),从而达到尽早发现代码集成的错误。第七步:等所有开发人员将bug修复好,再进行代码集成,交给测试进行回归测试 这样我们会陷入一个循环:修改bug集成代码部署测试的循环中。是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。第三步:等所有模块开发完成后,由项目老大(开发负责人)对所有模块的代码进行集成。一个节点是一个代理服务器。
2025-04-03 11:54:41
663
原创 4.2-2 monkey压力测试
案例:adb shell monkey -p com.baidu.yuedu -s 1001 --throttle 1000 --ignore-crashes --ignore-timeouts --ignore-security-exceptions -v-v-v 100 >D:\f\xyz.txt。案例:adb shell monkey -p com.baidu.yuedu -s 1001 --throttle 1000 -v-v-v 100 > D:\ls\fx\cc1.txt。
2025-04-02 20:06:55
954
原创 4.2-1 app测试
安卓虚拟机机制解释:android本身不是为触摸屏打造的,所以所有的应用都是运行在一个虚拟的环境中,由底层传输数据到虚拟机中,再由虚拟机传递给用户UI,任何程序都就可以轻松访问其他程序文件。设备系统: iOS(ipad、iphone)、Android(三星、华为、联想等) 、Windows(Win7、Win8)、OSX(Mac)、鸿蒙系统、mac。在市面上app测试流行,分为安卓端和ios端(ios端必须要maos系统,鸿蒙系统,还要企业级的证书,再公司一般不会用ios做自动化)这是系统机制决定的。
2025-04-02 16:20:03
864
原创 4.1-3 模拟器
dx.find_element_by_id("com.moji.mjweather:id/azz").send_keys("北京市")# dx.find_element_by_id("com.moji.mjweather:id/jc").click() #同意进入。'platformVersion':'android-5.1W', #平台版本。'appPackage':'com.moji.mjweather', #包名。五.sdk中的tools中的uiautomatorviewer.bat。
2025-04-01 18:35:04
243
原创 4.1-2模拟器
案例:adb push E:\dcs\two\app\lj.txt /data/查看手机端安装的所有包名:adb shell pm list packages。启动adb server命令 :adb start-server。停止adb server命令 :adb kill-server。本地文件路径:E:\dcs\two\app\lj.txt。从手机端下载文件 : adb pull + 文件。本地文件路径:E:\dcs\two\app。查看adb版本 :adb version。
2025-04-01 15:00:59
378
原创 4.1-1 app环境搭建
通常是 某一家厂商 针对某一 平台 或 系统 或 硬体 所发布出来用以开发应用程式的工具组,在这个工具包里面,可能包含了各式各样的开发工具,模拟器等。sdk的路径:E:\app\adt-bundle-windows-x86_64-20140702\sdk。是用来帮一个 产品 或 平台 开发应用程式的工具组,由产品的厂商提供给开发者使用的。(1)jdk 已安装,java的一种编译器 (本地windows安装)3、:platforms:你安装下载的所有Android平台,分版本存放。
2025-04-01 14:59:14
459
原创 3.31-4 性能面试题
B. 利用性能监控工具,比如:JAVA开发B/S结构的项目,可以通过JDK自带的Jconsole,或者JProfiler,来监控服务器性能,Jconsole可以远程监控服务器的CPU,内存,线程等状态,并绘制变化曲线图。选择用户最常用的场景进行测试,例如登录、搜索和订购。当性能拐点出现时,例如,当用户达到某个订单时,如果响应时间突然增加,则该拐点的对应用户数可以是该系统可以装载的最大用户数。例如,如果测试结果不可靠,如响应时间、事务通过率、CPU等指标是否满足需求,请分析并纠正异常原因,然后重新测试。
2025-03-31 16:46:31
201
原创 3.31-3 性能问题
因为网银系统日志量较大,异步日志队列很快就满了,如果单条日志存在大报文,还有可能导致内存溢出,因此不适合采用异步日志。如果日志量少(压测产生日志的速度,低于日志写入文件的速度),则可以使用异步日志,大幅提高性能。解决方法:采用更高效的算法、数据结构替换原来消耗CPU的代码,或者采用新的设计绕过瓶颈代码,比如查找数据的逻辑,可以把List改为Map,以空间换时间;问题现象:50并发压测,TPS曲线正常应该是平缓的,波动不大,如果突然出现剧烈下降,并且短时间内无法恢复,则可能存在问题。
2025-03-31 16:45:37
407
原创 3.31-2 性能指标
而且后一种并发更接近用户的实际使用情况,因此对于大多数的系统,只有数量很少的用户进行“严格意义上的并发”。当理发店来了9个客户的时候,3个客户理发,而6个用户在等待,3个客户的等待时间为1个小时,另外的3个客户的等待时间为2小时,客户的最大忍受时间为3小时包括理发的1个小时,所以6个客户的等待时间都在客户的可以承受范围内,故9个客户是该理发店的最大并发用户数。第1个公式计算的是绝对的TPS,也是瞬间TPS,jmeter中的throughput是吞吐量是平均TPS,这个绝对TPS指的是某个点的值。
2025-03-31 16:44:18
718
原创 3.31-1 性能测试
Active Threads Over Time:每秒的活动线程数,X轴表示访问的时刻,Y轴表示活动线程数,F(X,Y)表示某个时刻的活动线程数。监听单位时间内活动的线程数。每活动线程数可能的事务吞吐量,途中 X 轴表示的是活动线程数,Y 轴表示的是事务吞 吐量,F(X,Y)的含义是当系统处于某个活动线程数时,系统当时的事务 吞吐量是多少。比如当有 10 个活动线程时,事务吞吐量是 100/s,而当有 20 个活动线程时,事务吞吐量 是 50/s,说明随着用户访问的增加,系统的处理 效率开始下降了。
2025-03-31 14:06:24
338
原创 3.29-4nmon
分析 AIX 和 Linux 性能的免费工具, 这个高效的工具可以工作于任何屏幕、telnet 会话、甚至拨号线路。如果您拉伸窗口,并在X Windows、VNC、PuTTY 或类似的窗口中显示这些数据,nmon 工具可以同时输出大量的信息。Nmon 启动后可以显示 Linux 系统 CPU、内存、进程信息,包括了 CPU 的用户、系统、等待和空闲状态值,可用内存、缓存大小以及进程的 CPU 消耗等详细指标。性能介绍 nmon 工具可以为 AIX 和 Linux 性能专家提供监视和分析性能数据的功能,。
2025-03-29 18:20:41
473
原创 3.29-4 添加插件
1. jp@gc - Bytes Throughput Over Time:不同时间吞吐量展示(图表) 聚合报告里,Throughput是按请求个数来展示的,比如说1.9c,就是每s发送1.9个请求;而这里的展示是按字节Bytes来展示的图表。6. jp@gc - Reponse Times Distribution: 显示测试的响应时间分布,X轴显示由时间间隔分组的响应时间,Y轴包含每个区间的样本数。@gc - Response Times Over Time 随时间变化的响应时间。
2025-03-29 16:36:28
827
原创 3.29-3 压力测试(不同用户)
作用于该定时器之后的所有请求,也就是说定时器实在请求执行前起作用的并发数和线程数一致时,并发启动时间,一定要大于线程组启动,如果小于这个时间,并发数量不准确。中使用Synchronizing Timer实现Lr中集合点的功能,模拟多用户并发测试,即多个线程在同一时刻并发请求。(注意:线程组整理的启动时间单位是秒,定时器里的等待时间是:毫秒 ,哟啊注意单位换算,1秒=1000毫秒)Jmeter默认没有超时时间,如果没有设置,一旦没有达到集结数量的请求系统就一直。2.前置处理中添加用户参数,导入用户。
2025-03-29 15:44:32
395
原创 3.29-2 jmeter-2
如果线程数为10,准备时长为2,那么需要50秒钟启动500个线程,也就是每秒钟启动10个线程。Average:平均响应时间——默认情况下是单个 Request 的平均响应时间,当使用了 Transaction Controller 时,以Transaction 为单位显示平均响应时间。#Samples 请求数,Average 平均响应时间,Min 最小响应时间,Max 最大响应时间,Error% 错误率及Throughput 吞吐量。线程数:虚拟用户数。启动时间:测试启动时间,启动延迟会覆盖它。
2025-03-29 11:59:33
400
原创 3.29-1 3种抓包-普通,badboy,代理
但要注意,端口不能被其它程序占用,端口信息要与浏览器设置保持一致。2)netstat -aon|findstr "8888" --查询端口是否被占用。3)tasklist|findstr "8888" --查询对应端口被什么程序占用。端口号:8888(默认)改成不常用的端口号避免端口号冲突;1)netstat -an --列出本机所有使用端口信息。目标控制器:使用录制控制器(默认)后面根据情况进行更改。第三种方式:jmeter中有反向代理录制脚本。要录制的要排除不需要的接口。
2025-03-29 11:22:57
337
原创 3.28-4 性能测试
report-template(报告模板):该目录下存放Jmeter的报告模板 templates(模板):该目录下存放Jmeter的各类配置模板 例如:JDBC、Beanshell等。性能测试要搭建性能环境,(不在测试环境和生产环境进行性能测试) 因为性能环境考验模拟线上环境,达到1:1比例;压力测试:压力测试是系统在一定饱和状态下,例如cpu、内存、磁盘I/O在饱和使用情况下,不断给系统施加压力,看系统的处理能力,以及系统是否会出现错误。(1)jmeter 轻量级工具,免费,开源, (我们讲解的)
2025-03-28 17:19:28
852
原创 3.28-3 文档读取和插入
一.jmeter参数化(txt文档实现参数化)以上内容是将sql语句写入到txt文档中引用。1.编辑sql语句中导入变量${变量名}新建一个txt文档:data 命名。4.6个数据,在线程数中设置6。二. 将数据写入txt文档中。1.新建txt文档,输入数据。(1)编辑txt文档。(2)导入txt文档。
2025-03-28 16:14:44
149
原创 3.28-2 jmeter读取mysql
prepared select:用于绑定变量重用执行计划,对于多次执行的SQL语句,prepared statement是最好的选择。路径:E:\dcs\two\jmeter\apache-jmeter-3.3\lib。Database Connection Configuration :数据库连接配置。这是一条更新语句包含insert和update,也是只能进行一条sql语句的查询。Connection Pool Confiauration 连接池的参数。这是一个查询语句,只能进行一条sql语句的查询。
2025-03-28 14:21:40
495
原创 3.28-1 token
填写入参参数:账号,密码,验证码,uuid是一个变量,引用第一个接口的uuid,登录成功响应体,生成tonken值,提取token值,第三个接口,要在请求头携带token值,填写Authorization字段中,后面的接口都要携带tonken值。http://shop.duoceshi.com/apis/api/menus/build这个接口的请求头加上token值(Authorization)(2)登录接口http://shop.duoceshi.com/apis/auth/login入参参数。
2025-03-28 11:53:53
455
原创 3.27-2
第三个接口:http://shop.duoceshi.com/apis/api/menus/build。(3)配置元件中添加CSV Data Set Config。d.用户数据有5条,执行5次,在线程中设置用户数。b.前置处理器中添加:用户参数,编辑变量和参数。二.通过txt文档或csv文件实现参数化。(1)前置处理器来设置变量(用户变量)2.提取接口中响应体的内容,正则表达式。pis/auth/code登录接口。a.添加登录接口,设置成变量。一.jmeter中参数化。(3)新建一个txt文档。
2025-03-27 19:04:44
300
原创 3.27-1 pymysql下载及使用
(1)连接方式:pymysql.Connection 或者pymysql.connect。import pymysql #导入pymysql。import pymysql #导入pymysql。import pymysql #导入pymysql。import pymysql #导入pymysql。import pymysql #导入pymysql。yb=lj.cursor() #创建游标对象。yb=lj.cursor() #创建游标对象。yb=lj.cursor() #创建游标对象。
2025-03-27 14:30:17
524
原创 3.26-2 自动化框架
讲解稿: 首先在pycharm里新建一个项目,然后构建6个包,分别是api构建包、conf配置包、report报告包、run运行包、testcase用例包以及utils工具包。其中api包用来组建并发送接口请求,conf包用来存放所有接口的入参信息,report包用来放置运行所有测试用例生成的报告,run包用来自动加载所有的测试用例、并且运行,testcase包用来继承unittest单元测试框架、组建接口测试用例,utils包用来存放发送邮件和生成报告模块。第四个包run包,运行包。
2025-03-26 17:49:35
695
原创 3.26-1 unittest框架
stream=f,title="接口自动化测试报告",description="接口用例执行情况",tester="dcs"unittest.TestSuite()套件。addTest 添加到套件中。第三,执行一个路径下的用例。unittset框架。二.运行部分用例接口。
2025-03-26 16:10:17
390
原创 3.25-3 request断言
http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getSupportProvince城市接口http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getSupport 入参CitybyProvinceName:{{cs}}data1={'byProvinceName':"浙江"}assert wb["msg"]=='登录成功'if wb["msg"]=="登录成功!
2025-03-25 17:43:24
791
原创 3.25-2request库
requests.request(post,url,data,headers=h1) 方法。requests.request(get,url,headers=h1) 方法。print(jk1.json()) #响应体转换成json格式。print(jk1.json()) #响应体转换成json格式。print(jk1.json()) #响应体转换成json格式。print(jk1.json()) #响应体转换成json格式。print(jk1.json()) #响应体转换成json格式。
2025-03-25 16:06:35
824
原创 3.25-1 postman执行+弱网测试
(1)集合右键,点击run ,运行多个接口。2.编辑环境,集合,执行次数等。四.运行多个接口有变量。1.导出json脚本。2.打包json文件。3.点击集合的run。
2025-03-25 10:48:44
235
原创 3.24-3 接口测试断言
如果不断言,只能说明接口是通的,不能说明响应体是正确的。#断言响应时间小于200ms。一.postman 断言。#状态码是否等于200。认识下test中的功能。1.断言再test中。#断言响应体包含内容。
2025-03-24 18:53:17
880
原创 3.24-2 postman使用
先登录接口成功,生成cookie值,才能让后面接口依赖。上一个接口响应参数,作为下一个接口请求参数。添加到环境变量中,可以让后面城市接口引用。将json格式中的string设置变量。byProvinceName:浙江。(1)设置{{}} 定义变量。将省份接口转换成json格式。cookie值是保持会话。(4)选择环境,执行。
2025-03-24 17:21:06
346
原创 3.24-1接口测试理论
请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI。一,有接口文档(1)接口文档(开发,如果接口文档),参考接口文档,没有就是自己去抓包(2)根据获取的接口,根据入参和响应参数,进行编写接口用例(3)接口测试用例评审(4)接口测试用例导入用例管理工具(禅道)(5)搭建好测试环境(6)使用接口工具或代码去调试接口(7)有bug通过bug管理工具提bug给开,开发修改,测试验证(8)测试完后,输出接口测试报告。第四步:服务器接受到客户端的请求后,会进行token值的对比。
2025-03-24 17:20:18
927
原创 3.21-1自动化框架
测试准备前要做的工作和测试执行完后要做的工作.包括setUp()和tearDown()。一个Testcase的实例就是一个测试用例,测试用例就是一个完整的测试流程,包括初始化setUp、运行run、测试后的还原tearDown。# tj.addTests([Cms("test2"),Cms("testA")])#将两个或两个以上添加用例到集合中,# unittest.TextTestRunner().run(tj) #通过testrunner运行套件中的用例。
2025-03-21 17:39:30
589
原创 3.20-1ui自动化切换,登录退出
dx.find_element_by_id("kw").send_keys(Keys.CONTROL,"a") #全选。# dx.find_element_by_id("kw").send_keys(Keys.CONTROL,"x") #剪切。# dx.find_element_by_id("kw").send_keys(Keys.CONTROL,"v") #剪切。# dx.get("file:///D:/HBuilder/bao/alert弹框.html") #通过get打开页面。
2025-03-20 16:16:00
531
原创 3.18-29种定位链接,隐藏框
dx.find_element_by_xpath('//*[@autocomplete="off" and @name="wd" ]').send_keys("xpath中组合属性and定位")dx.find_element_by_css_selector("[autocomplete='off'][class='s_ipt']").send_keys("css中组合属性方法")dx.find_element_by_css_selector("#kw").send_keys("css中id简写方法")
2025-03-19 18:01:06
238
原创 3.18-1
2、定义类的时候__init__方法中有一个参数self,这也是类中的方法与普通函数的区别,类的中的方法必须有一个参数self,而且位于参数列表的开头,在类中self就是代表类的当前类的实例(对象)自身,在python调用时无需传值,python会将对象自动传给self接受。#print(d1.sheet_names())#显示所有页面名称['Sheet1', 'Sheet2', 'Sheet3']print(dx.row_values(0,1,2))#0第一行,1第2列,2为结束列不包含。
2025-03-18 14:45:49
784
原创 3.17-2 调用常见7个包,两例题
print(os.path.join(url,'3.17-1.py'))#连接目录与文件名或目录。print(time.strftime("%H-%M-%S-%y-%m-%d"))#时间戳。print(os.path.isfile(url))#判断是否文件#False。print(re.match('a',s))#显示结果是索引位:(0, 1)print(time.strftime("%H-%M-%S"))#年月日。print(time.strftime("%y-%m-%d"))#时分秒。
2025-03-17 19:09:48
261
原创 3.15-2内置函数
print("学号:{1[1]},分数:{0[2]}".format(list,list2))a="姓名:{name},年龄:{age}".format(name="zs",age=18)print(max(list));print(divmod(7,3))#(2, 1)同时输出商和余数。list2=["a","b","c","d","e"]#索引1。print(list(z))#将压缩内容转化为列表。name=int(input("请输入账号:"))name=str(input("请输入账号:"))
2025-03-15 16:37:45
910
原创 3.15-1自定义 函数
三、优点:1.降低代码冗余;2增加代码复用性、提高开发效率;__name__ 是当前模块名,当模块被直接运行时模块名为 __main__ ,这句话的。if __name__ == '__main__': 是函数的入口,也称为主函数。意思就是,当模块被直接运行时,以下代码块将被运行,当模块是被导入时,if __name__ == '__main__': 主函数调用。函数是组织好,可以重复使用,用来实现单一,或者关联功能的代码段。函数名(实际参数)、调用函数。(5)参数是可变长元组。(4)参数有默认参数。
2025-03-15 14:19:05
392
原创 3.14-3 判断,循环
2、先熟悉下range()函数:如果需要遍历一个数字序列,可以使用python中内建的函数range()用法:continue语句用来告诉Python跳过当前循环的剩余语句,然后继续进行下一轮循环。print("账号正确" if name=="admin" else "账号错误")要求:包含开始值,不包含结束值,步长从2开始,1表示木有变化,默认从0开始。print("富婆" if name=='yy' else "乞丐")用法:语句会立即退出循环,在其后边的循环代码不会被执行。
2025-03-14 17:10:06
233
cms环境搭建,搭建之前要快照多有米的环境:在虚拟机内点击快照即可;因为要删除多有米的webapps内所有内容
2025-03-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人