![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
软件测试
文章平均质量分 87
跟我一起学测试呀
授人以鱼不如授人以渔
展开
-
如何选择开源的自动化测试框架?这9款开源工具你一定要知道
⾃动化测试在未来将会越来越受到重视在移动互联⽹时代,对于质量的要求⽐PC时代⾼的多,⽽投⼊产出⽐最⾼的⾃动化测试,将会是⼤部分公司的⾸选⽅向,谈到自动化不得不提及自动化测试的核心,构建自动化测试框架。自动化测试框架由一组最佳实践,通用工具和库组成,可帮助测试人员评估多个Web和移动应用的功能,安全性,可用性和可访问性。而现在,软件开发世界中有很多的自动化测试框架,该如何选择?原创 2024-06-19 21:50:56 · 425 阅读 · 0 评论 -
压测怎么做?如何自动化?盘点各大公司全链路压测方案与实践
全链路压测指的是基于实际的生产业务场景、系统环境,模拟海量的用户请求和数据对整个业务链进行压力测试,并持续调优的过程。常用于复杂业务链路中,基于全链路压力测试发现服务端性能问题。原创 2024-06-18 17:15:29 · 290 阅读 · 0 评论 -
快速了解接口测试
什么是接口测试?接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。接口测试的原理?是通过测试程序模拟客户端向服务器发送请求报文,服务器接收请求报文后对相应的报文做出处理然后再把应答报文发送给客户端,客户端接收应答报文这一个过程。为什么要做接口测试?原创 2024-06-18 17:14:27 · 274 阅读 · 0 评论 -
python+pytest接口自动化 —— 参数关联
参数关联,也叫接口关联,即接口之间存在参数的联系或依赖。在完成某一功能业务时,有时需要按顺序请求多个接口,此时在某些接口之间可能会存在关联关系。比如:B接口的某个或某些请求参数是通过调用A接口获取的,即需要先请求A接口,从A接口的返回数据中拿到需要的字段值,在请求B接口时作为请求参数传入。参数关联在接口自动化测试中是必然会遇到的场景,设计关联参数的用例会直接影响到用例的维护,当然这也是在接口自动化项目的架构设计时就需要考虑的问题。原创 2024-06-15 16:39:42 · 822 阅读 · 0 评论 -
做接口测试的流程一般是怎么样的?UI功能6大流程、接口测试8大流程这些你真的全会了吗?
接口测试需要围绕测试计划实施接口测试重点是:api文档分析、用例设计接口api文档分析要重点查看下面两项:1、请求参数说明 如:是否必填、类型、取值范围2、接口之间业务以来关系具体接口应用工具主要根据后台协议和测试计划测试工具来定,可使用工具如:postman、jmeter、requests、抓包(fiddler、charles)原创 2024-06-15 16:38:06 · 709 阅读 · 0 评论 -
接口测试详解
如:微信的提现和充值的操作, 调用银行对外开发的接口(支付、提现)这些接口有权控制(token(是指根据业务逻辑、输入参数、输出值的描述,对正常输入情况下所得的输出值是否正确的测试,也就是测试对外提供的接口服务是否正常工作。②数据库的增删改查,比如一个post接口操作完成后,通过列表页接口查看新的 数据是否和刚才的post一致。:硬件接口指的是硬件提供给外界的一种实体。⑤格式:年月日、年月日时分秒、(/、-、:),手机号码、邮箱。1.鉴权码参数(token)异常:(空、错误的、过期的鉴权码)原创 2024-06-14 16:40:29 · 385 阅读 · 0 评论 -
Selenium自动化测试(断言 / fame框架处理)------实例
2、常见的断言包括:验证页面内容,如标题是否为xxx或当前位置是否正确,或是验证该复选框是否被勾选。:试图访问一个还未设置的全局变量,基本上是由于另有一个同名的全局变量,导致你以为在访问。1、验证应用程序的状态是否同所期望的一致。:无法引入模块或者包,基本是路径问题。:传入一个不被期望的值,即使类型正确。:输入输出异常,基本是无法打开文件。:语法错误,代码没有正确的对齐。:试图访问一个对象没有的属性。:使用一个还未赋值对象的变量。:试图访问字典里不存在的键。:传入的对象类型与要求不符。原创 2024-06-14 16:39:17 · 380 阅读 · 0 评论 -
史上最全excel导入功能测试用例设计(以项目为例)
下图是产品列表,产品编码具有唯一性,每个产品都有成本价、省级价、市级价、特约价、终端价和车主价,这个列表主要是维护当前产品的价格(成本价在此不能修改),修改价钱的时候,变更原因分为两种:首次定价和价格修改。预期结果:正确导入,当前为空的价钱不修改,还是原来的,其他价钱正常修改,状态为待定价审核。预期结果:正确导入,各个价钱对应显示正确,状态变为待定价审核,变更原因为价格修改。预期结果:正确导入,不一致的价格修改,其他价钱不修改还是原来的,状态为待定价审核。欢迎各位优秀的小伙伴们补充,但愿这篇文章对你有用!原创 2024-06-13 21:49:18 · 752 阅读 · 0 评论 -
A/B测试是什么?面试官把我问懵了
因为AB测试是检验来自两个组样本平均数的差异性,从而判断它们各自代表的总体的差异是否显著,因此使用的是两个总体均值之差的检验。由于我们的测试样本不可能都一模一样,所以我们设定的两个一模一样的对照组的结果也有可能出现不一样的结果,这就是随机波动。随机波动会进一步影响测试的结果。试验实施:要积极的进行多维度的细分分析,除了总体对比,也看一看对细分受众群体的试验结果,不要以偏盖全,也不要以全盖偏。合理的进行正确的流量分割,保证试验组和对照组里的用户特征是一致的,并且都具有代表性,可以代表总体用户特征。原创 2024-06-12 17:02:51 · 625 阅读 · 0 评论 -
黑盒测试所涵盖的测试类型
黑盒测试是一种先进的测试方法,它所涵盖的测试类型广泛且有效。在软件开发过程中,应该采用黑盒测试和其他测试方法相结合,以确保软件系统的质量和可靠性。同时,测试人员也应该持续学习和更新测试知识,以提高测试效率和测试质量。原创 2024-06-12 16:42:46 · 472 阅读 · 0 评论 -
appium图像识别之images-plugin插件
在进行的过程中,由于页面的复杂性,需要根据页面的技术实现,通过上下文来切换不同的定位类型,给定位元素的稳定性带来了不小的挑战;则不依赖于页面本身是用什么技术实现的,只要能识别图片上的元素即可定位,从而成了未来探索的一个方向。appium提供了一些方法利用图像识别来定位元素。原创 2024-06-11 20:41:26 · 895 阅读 · 0 评论 -
REST 内容协商:全面解析
REST 内容协商是指客户端和服务器之间协商确定要传输的数据的内容和格式的过程。在中,客户端通常使用 HTTP 头部信息(如 Accept 和 Content-Type)来指示期望的数据格式、编码方式、语言等信息,服务器根据这些信息来确定返回数据的格式。当客户端和服务器无法就数据格式等达成共识时,内容协商机制可以使客户端和服务器协商确定最终的数据格式。原创 2024-06-07 16:53:02 · 688 阅读 · 0 评论 -
Python aiohttp 使用指南:快速入门教程
aiohttp 是一个基于异步 I/O 的 Web框架,专注于提供高性能、低开销的异步 Web 服务。它允许我们同时处理大量并发请求,而不会阻塞程序执行。aiohttp 使用 Python 的 async/await 语法来实现异步编程,这使得编写异步代码更加直观和简洁。在传统的同步编程中,每个任务都是按照顺序依次执行的。如果一个任务需要等待一些耗时的操作(如网络请求或文件读取),那么整个程序将会被阻塞,导致其他任务无法执行。原创 2024-06-07 16:51:20 · 1006 阅读 · 0 评论 -
Selenium/webdriver介绍以及工作原理
最近在看一些底层的东西。driver翻译过来是驱动,司机的意思。如果将webdriver比做成司机,竟然非常恰当。我们可以把WebDriver驱动浏览器类比成出租车司机开出租车。在开出租车时有三个角色:· 乘客:他/她告诉出租车司机去哪里,大概怎么走。· 出租车司机:他按照乘客的要求来操控出租车。· 出租车:出租车按照司机的操控完成真正的行驶,把乘客送到目的地。在WebDriver中也有类似的三个角色:· 自动化测试代码:自动化测试代码发送请求给浏览器的驱动(比如火狐驱动、谷歌驱动)。原创 2024-06-06 16:10:01 · 521 阅读 · 0 评论 -
软件测试要学习的基础知识——黑盒测试
黑盒测试也叫功能测试,通过测试来检测每个功能是否都能正常使用。在测试中,把程序看作是一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,对程序接口进行测试,只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当接收输入数据而产生正确的输出信息。黑盒测试以用户角度,从输入数据与输出数据的关系触发,试图发现一下几类错误:功能不正确或遗漏界面错误数据库访问错误性能错误初始化和终止错误用例设计方法包括:等价类划分边界值分析决策表因果图场景法等等。原创 2024-06-05 21:54:32 · 517 阅读 · 0 评论 -
python+playwright 学习-1.环境准备与快速开始
说到 web 自动化,大家最熟悉的就是 selenium 了,selenium 之后又出现了三个强势的框架Puppeteer、CyPress、TestCafe, 但这3个都需要掌握 JavaScript 语言,所以只是少部分人在用。2020年微软开源一个 UI 自动化测试工具 Playwright, 支持 Node.js、Python、C# 和 Java 语言。原创 2024-06-04 22:10:06 · 773 阅读 · 0 评论 -
盘点:App 移动自动化测试工具
App移动端测试工具非常多,首先 区分 Android 和 iOS,以及 harmonyos 平台,每个平台下都有自己的自动化测试工具。自动化工具又区分 调试工具、monkey 工具、UI自动化工具。本文就来盘点以下,当下主流的app自动化测试工具。原创 2024-06-04 22:08:47 · 911 阅读 · 0 评论 -
Flutter 中的单元测试:从工作流基础到复杂场景
由于通过 DI 构建了UniversityEndpoint类,因此可以进行自定义网络拦截器。(如果 UniversityEndpoint 类自己初始化一个 Dio 类,就没有办法模拟类的行为。为了模拟Dio类的行为,需要知道 Retrofit库中使用的 Dio方法—— 但无法直接访问 Dio。"}),-1,"));现在已经创建了拦截器来模拟网络响应,接下来可以定义测试组和测试函数签名。原创 2024-06-03 21:39:49 · 771 阅读 · 0 评论 -
14:00面试,14:06就出来了,问的问题有点变态。。。
从小厂出来,没想到在另一家公司又寄了。到这家公司开始上班,加班是每天必不可少的,看在钱给的比较多的份上,就不太计较了。没想到5月一纸通知,所有人不准加班,加班费不仅没有了,薪资还要降40%,这下搞的饭都吃不起了。原创 2024-06-01 21:46:13 · 959 阅读 · 0 评论 -
Jmeter压测实战:Jmeter二次开发之自定义函数
新建maven项目,这里项目名为:JSF_Sampler因为是基于Jmeter的扩展,需要依赖包Jmeter两个核心包,分别是:pom.xml文件核心配置如下实现类依次实现以下几个步骤1)新建实现类并继承AbstractFunction注意:实现类的包名必须包含 xxx.functions.xxx,Jmeter 使用命名规则实现实现类的加载。2)重写以下方法,每个方法的用途见下方代码注释execute()/*** 京东宙斯 下单标准字段常量*//**原创 2024-06-01 15:21:29 · 594 阅读 · 0 评论 -
倾囊相授之性能分析思路
在这一篇中,我说到了瓶颈的精准判断、线程递增的策略、性能衰减的过程、响应时间的拆分、构建分析决策树以及场景的比对,这几个环节,是性能分析过程中非常重要的环节。从我的经验上来说,这一篇文章可能是我工作十几年的精华所在了。而这里的每一个环节,又有非常多的细分,特别是构建分析决策树这一块,它需要太多的架构知识、系统知识、数据库知识等等。鉴于本文只是想起到一个提纲挈领的作用,所以无法展开描述,希望在后续的篇幅中,我们尽量细致拆解。原创 2024-06-01 15:18:42 · 714 阅读 · 0 评论 -
倾囊相授之性能分析思路
在这一篇中,我说到了瓶颈的精准判断、线程递增的策略、性能衰减的过程、响应时间的拆分、构建分析决策树以及场景的比对,这几个环节,是性能分析过程中非常重要的环节。从我的经验上来说,这一篇文章可能是我工作十几年的精华所在了。而这里的每一个环节,又有非常多的细分,特别是构建分析决策树这一块,它需要太多的架构知识、系统知识、数据库知识等等。鉴于本文只是想起到一个提纲挈领的作用,所以无法展开描述,希望在后续的篇幅中,我们尽量细致拆解。原创 2024-05-31 17:12:05 · 412 阅读 · 0 评论 -
小型企业的自动化部署脚本:简化部署流程,提高效率
如果不想把时间浪费在本地打包,忍受不了上传jar包的龟速网络,人肉停服和启动服务。请尝试下这款自动部署化脚本。小小的投入,带来大大的回报。原创 2024-05-31 17:10:32 · 797 阅读 · 0 评论 -
2种方法,jmeter用一个正则提取器提取多个值!
中,用json提取器,一次提取多个值,这个很多人都会。但是,用正则提取器一次提取多个,是否可以呢?肯定,很多人都自信满满的说,可以!?写一个这样的,不就是可以提取两个了吗!是的,这种做法没有错,但是,你发现一个问题吗?你的“ Name of created variable 引用名称” 应该怎么填呢?你是填一个,还是多个,多个你又用什么符号来分隔呢?然后,然后你就楞住了,因为你不能用正则提取器,同时把提取的多个值写到对应的变量中,虽然你理想的写了多个变量名称,也用符号分隔了。原创 2024-05-30 15:17:07 · 298 阅读 · 0 评论 -
RobotFrameWork环境搭建及使用
下载驱动地址:http://npm.taobao.org/mirrors/chromedriver/,下载后解压的Chromedriver.exe放在python的目录下即可(因为这个目录会配置环境变量)作为一款具有关键字驱动的软件,我们要用好这个特点,我们在设计用例的时候,尽量多的去封装一些常用的功能成关键字,例如登陆之类的功能。调用关系:业务逻辑层去调用页面元素层 -> 测试用例层去调用业务逻辑层 -> 测试用例层使用模板做数据驱动。页面元素层的参数化这边需要继续参数化调用。注意需要调用页面元素层。原创 2024-05-30 15:14:27 · 844 阅读 · 0 评论 -
14:00面试,14:06就出来了,问的问题有点变态。。。
从小厂出来,没想到在另一家公司又寄了。到这家公司开始上班,加班是每天必不可少的,看在钱给的比较多的份上,就不太计较了。没想到5月一纸通知,所有人不准加班,加班费不仅没有了,薪资还要降40%,这下搞的饭都吃不起了。还在有个朋友内推我去了一家互联网公司,兴冲冲见面试官,没想到一道题把我给问死了:如果模块请求http改为了https,测试方案应该如何制定,修改?原创 2024-05-29 22:01:22 · 522 阅读 · 0 评论 -
小白也能看得懂的Jmeter性能测试中服务端资源监控技术
Metric to Collect:根据监控的要求可以选择CPU,Disks I/O,Network I/O等,一次只能选择一个,如果要监控多种资源,可以点击“Add Row”继续添加。下载“ServerAgent-2.2.3”,解压到复制到要监控的服务器上,windows和linux通用,使用这个代理服务之前要JDK已经安装配置成功。如下图所示下载“ plugins-manager.jar ”,下载后放到“jmeter\lib\ext”目录下,重启jmeter。插件管理器的下载地址:https://原创 2024-05-29 21:28:06 · 662 阅读 · 0 评论 -
不会做UI自动化测试?一起设计框架再实践吧
是要解决什么问题,这里的问题不能是模糊且没有边界的,之后将要自动化的产品、模块、流程进行分类与整理,这里一般来说推荐产品的核心主流程,一般覆盖happy path即可,但如果需要加入一些反向用例与使用场景也是可以的,但切忌不要一股脑的把团队的手工测试用例都加进去,到了后期你会体验到什么叫维护的时间比测试的时间更长。另外,一些业务逻辑的判断,(比如是否存在该用户,不存在新建,存在直接进入),也可以放在po中,但是需要谨慎,这里比较推荐的还是放在测试用例内,也方便大家根据不同的情况做断言。原创 2024-05-28 16:46:00 · 994 阅读 · 0 评论 -
掌握3个Mock工具,轻松玩转单元测试
Mock工具经过调研,基本上是表格下面的这么个情况:rap2和easy-mock等,都是基于node开发的,和我们开发部的主力语言Java相性一般,后续改造难度大,并且不支持请求超时的配置和上下文的配置,优点是使用操作简单,pass。wiremock,和rap2差不多,就是多个支持延时请求,不过是英文的,pass。mock-server,基于java语言的,底层是netty,编程自由,比较适合java技术栈的团队。原创 2024-05-28 16:43:48 · 552 阅读 · 0 评论 -
经验分享:JMeter控制RPS
RPS(Request Per Second)一般用来衡量服务端的吞吐量,相比于并发模式,更适合用来摸底服务端的性能。我们可以通过使用 JMeter 的常数吞吐量定时器来限制每个线程的RPS。对于RPS,我们可以把他理解为我们的TPS,我们就不过多解释了。 RPS 取决于压测的并发数以及服务的响应时间,并发数过高,可能压力过大压垮后端服务,并发数过低,可能压不到指定的 RPS。为了避免压力过大压垮后端服务以及摸底后端服务性能上限,可以通过设置常数吞吐量定时器来限制线程的 RPS 上限。原创 2024-05-27 21:43:47 · 857 阅读 · 0 评论 -
常见的软件测试用例设计方法有哪些?
以上六种用例,最重要的是区别每种用例方法的应用场景。简单总结如下:1)流程图法(也叫场景法),主要针对业务场景,也就是多个功能的组合使用场景。2)等价类划分法,主要针对数据很大,且数据主要为数字、日期类型。3)边界值, 确认边界,要结合等价类使用4)判定表, 一条测试用例覆盖多个条件,且条件之间有约束5)正交法, 数据很大,但是无法使用等价类缩小范围(比如城市名,浏览器名称不是数字、日期类型),就用正交表来缩小范围6)错误推测法,有经验的人使用。原创 2024-05-27 21:43:11 · 90 阅读 · 0 评论 -
在单元测试中使用Jest模拟VS Code extension API
对VS Code extension进行单元测试时通常会遇到一个问题,代码中所使用的VS Code编辑器的功能都依赖于库,但是我们在单元测试中并没有添加对库的依赖,所以导致运行单元测试时出错。由于库是作为第三方依赖被引入到我们的VS Code extension中的,所以它并不受我们的控制,最好的办法就是在单元测试中对其中的API进行模拟。本文中我将介绍如何使用来模拟vscode库的API。如果你还不太熟悉如何开始创建一个VS Code extension,的文档可以教你快速上手。原创 2024-05-25 17:00:51 · 836 阅读 · 0 评论 -
测试角色在项目各阶段的项目管理tips
是一个繁杂的过程,每个阶段需要涉及到不同人员、资源的协调配合。每个角色都有自己的定位和任务,为了紧密配合项目经理或无分配项目经理运行项目的场景下确保项目成员共同达成项目目标,不同的角色掌握相应的项目管理意识就尤为重要。那么,测试角色作为项目交付的质量把控者,具备相应的项目管理意识在项目的高质量、高效率交付目标上有着重要作用,如前置识别质量风险、进度风险等。原创 2024-05-25 16:59:05 · 271 阅读 · 0 评论 -
性能测试包含哪些内容?
2、强度测试:强度测试是指在资源有限的情况下,对软件产品的性能进行测试和评估。测试人员可以通过模拟不同的网络环境,如稳定的局域网环境和繁忙的广域网环境,来评估软件产品在不同网络环境下的性能表现。4、并发测试:并发测试是指在多个用户同时访问软件产品时,对软件产品的性能进行测试和评估。1、负载测试:负载测试是指在特定条件下,对软件产品的性能进行测试和评估。过程中非常重要的一环,它可以帮助测试人员全面了解软件产品的性能表现,并对其进行优化,以提高软件产品的质量和用户体验。和用户隐私的前提下,对其进行测试和评估。原创 2024-05-24 15:55:41 · 265 阅读 · 0 评论 -
每天5分钟,软件测试轻松掌握sql语句(表的查询和增加命令)
insert into 表名(字段名1, 字段名2) values(value1,value2)drop table if exists xxx 表示当xxx表存在的时候才会执行删除操作。insert into 表名 values(0,xx,xx,xx)按照设计表的数据类型,依次插入对应数据,数据之间用逗号隔开。主键如果是自增长,可以是用0或者null代替。select * from 表名。2 部分字段填写的方法。原创 2024-05-24 15:54:53 · 271 阅读 · 0 评论 -
不会英语适合学软件测试么?软件测试对英语能力到底有没有要求?
经过以上几个方面的分析,相信大家对于测试岗位的英语要求能力有了基本的认识,也能够认识到英语对自己的职业发展的重要性。当然,上面提到的场景还只是普通的软件测试公司,如果你要去的是外企或者有国外业务和客户的企业,英语能力的要求就更加不可小觑了:除了面试中的英语简历和英语自我介绍是必不可少的,进去后的工作过程中的英语读、写、听、说各项能力都是必备技能。所以,大家如果已经从事测试行业了,或者即将进入测试行业,然而自己的英语还不忍直视的话,可以在深造巩固自己的技能的同时,积累和锻炼基本的英语能力。原创 2024-05-23 16:17:51 · 395 阅读 · 0 评论 -
Python多进程:自动化测试中的5种运用场景
多进程是指同时运行多个独立的进程,每个进程都有自己独立的内存空间和系统资源。并行运行独立任务:在接口自动化测试中,某些任务可能是独立运行的,可以通过多进程同时运行这些任务,提高执行效率。并行执行不同测试套件:如果有多个测试套件需要执行,可以通过多进程同时运行不同的测试套件,加快整体测试过程。分布式接口测试:多进程可以用于分布式接口测试框架,实现多台机器同时进行接口测试,提高测试速度。独立的内存空间:每个进程都有自己独立的内存空间,进程之间的数据不共享,相互之间不会影响。示例一:多进程并发执行任务。原创 2024-05-23 16:16:47 · 443 阅读 · 0 评论 -
性能测试的实践痛点和解决方法
沟通时以共同的目标驱动,以实际的利益沟通,往往更高效也更容易达成合作。大家容易忽略的一点是,测试环境的结果只代表当前环境,无法直接换算到生产环境,而且很多公司连单独的性能测试环境都没有,又何谈自己的测试结果能对线上部署有直接的辅导和参考作用呢。技术团队一定要对业务和技术的关系有统一的认知,勇于承担业务运营的支撑者和辅助者的角色,从实际的业务和需求痛点出发,解决问题,最终才能体现自己的价值。但要搞清楚这三点,最终还是要回归到实际的性能测试场景中,只有解决了实践过程的痛点,那目标和价值的关系就很容易捋清了。原创 2024-05-22 15:47:02 · 819 阅读 · 0 评论 -
测试找BUG总结
有利于增加测试冒烟测试的通过率,能更早的进行测试。如果是平台方面的需求,在开发自测后,应告知产品,让其对此需求的界面UI布局和前台功能进行简单的操作使用,确认符合产品预期的原型后,再进行测试,防止开发做出的结果不是产品想要的,在测试完成后或者在上线后,产品才发现开发做的不是自己想要的,则会出现返工现象,以及可能带来客户满意度和公司金钱方面的损失等。2)要对业务、代码架构和整体的测试流方面,逐步形成正确的全面的认识,站的更高,才能看得更全面,对涉及较多模块的需求才能测得更快更好,也才能发现更多的隐藏bug。原创 2024-05-22 15:46:23 · 324 阅读 · 0 评论 -
Playwright UI 自动化测试实战
这个测试脚本使用Playwright启动Chromium浏览器,打开登录页面,输入用户名和密码,单击登录按钮,然后等待成功登录后的页面加载。是一个开源的自动化测试工具,可以用于测试Web应用程序,支持多种浏览器,并提供强大的自动化测试功能。无论是测试登录流程还是更复杂的应用场景,Playwright都可以帮助您自动化测试过程,提高测试效率和质量。Playwright是一个功能强大的UI自动化测试工具,它支持跨浏览器测试,并提供了丰富的API,用于模拟用户交互。通过编写自动化测试脚本,您。原创 2024-05-21 15:36:14 · 673 阅读 · 0 评论