本次测试使用上篇“二、用例测试”的环境。BenchmarkSQL基准测试属于压测,为尽量减小复制延迟,将两个从库的刷盘参数设置为0,并开启组提交与多线程复制。 直连主库 首先不通过Proxy,直连主库进行基准测试,用以结果数据对比。 准备测试数据,创建16张表,每张表一百万条数据。 ,预热一分钟,压测5分钟,每秒输出一行报告。 sbtest4 | sysbench_ds | | sbtest3 | sysbench_ds | | sbtest6 | sysbench_ds | | sbtest5 准备测试数据,建一个测试表,插入一千六百万行。按照规则,会在四个数据源中使用hash_mod算法平均自动分成16个分表,每个数据源4个分表,每个分表近似一百万数据。
H5 页面发版灵活,轻量,又具有跨平台的特性,在业务上有很多应用场景。 针对这些白屏、卡慢之类的问题,我们测试该从哪些方面去展开测试分析和数据对比呢?接下来笔者分享一些 H5 前端测试实践的经验,抛砖引玉,希望大家一起谈论,一起挖掘更多有价值的课题。 一、开篇:H5 页面加载过程浅析 如下图所示,是精选平台打开 H5 页面的几个过程截图。 ? 四、总结:H5 前端性能测试方案 当然,前端性能不仅仅表现在白屏、卡顿问题,也有可能是手机过度发热等等。 从这个方向出发,我们积累了一些测试经验,其中最重要的必过项是首屏速度(不仅提升用户体验,还可以提升业务的转化率),其次流畅度、流量和 CPU 等,某些场景下也是需要重点考量的点。 ?
但与此同时,近60%的AI项目因输出不可靠、幻觉频发、提示漂移或安全漏洞而延期上线——问题核心不在模型能力,而在**缺乏系统化、可复现、可审计的LLM测试实践**。 传统软件测试方法(如单元测试、契约测试)难以直接迁移:LLM输出非确定性、评估维度多维(事实性、安全性、连贯性、公平性)、输入敏感度高(微小prompt改动引发结果剧变)。 本文聚焦真实工程场景,梳理并实测5个高活跃度、强可集成性的LLM测试开源方案,覆盖从本地验证到CI/CD嵌入的全链路需求。 结语:开源不是终点,而是测试范式进化的起点 这5个方案并非相互替代,而是构成LLM测试的‘黄金组合’:RAGAS守RAG可信底线,LLM-eval定模型选型基准,Promptfoo管提示生命周期,Guardrails 它让LLM测试从黑盒玄学,变为可阅读、可修改、可贡献、可审计的工程实践。下一站,将是测试即代码(Testing-as-Code)与LLMOps的深度耦合——而你,已经站在了起点。
软件质量保障 专注于测试圈:测试质量保障、自动化工具/框架、平台开发、算法测试、BAT/TMD大厂测试岗面试题/面经分享、测试团队建设与管理、测试新技术的分享。 偶尔也聊聊个人工作的收获与经验。 yaml可以适用于Java/Python测试框架,ini通常用于Python的测试框架。本文讲解一下这两种配置信息载体的配置格式与解析方法。 测试文件如下: [mysql] host=127.0.0.1 port=3306 user=root password=yourpassword dbname=test [redis] host=127.0.0.1
测试代码的方法名能够体现出测试用例的内容。 初始化对象、执行操作和验证结果这3段之间有明显的分隔,一般使用空行进行分割 每个测试用例的代码行数均不多,每个测试用例只测试一个方法,测试目的是保证软件的可测试性。 什么是 TDD 测试驱动开发(Test Driven Development,TDD) TDD 5步骤。 编写描述程序某方面功能的单个单元测试 运行单元测试,该测试会因为没有实现测试内容而失败 编写刚好够用的代码(最简单的方法) 使测试通过 重构代码,直到其符合简单性这一标准 随着时间的推移,重复累积单元测试 运行单元测试,查看测试是否失败,若成功,则返回第1步。 编写刚好能够通过测试的代码,让测试通过 如果测试通过,则检查全部测试是否都成功。
我们很熟悉以REST实现的API,可以用任何能够发出http 请求的库或者工具来测试REST API。 回到正题,刚才主要还是停留在REST api与GraphQL一些基本的区别,那么怎么手动测试。 我们可以利用代码来实现,但对于项目中所有角色,尤其是一些没有代码经验的人,让他们去看代码实现是非常痛苦的,自动化测试本质是能够帮我们快速回归,验证完成功能是否受到影响,并且你的测试代码或工具能够让每个角色轻松理解并能够快速简单使用 ---- 利用测试脚本实现GraphQL自动化api测试 上面主要介绍如何手动测试GraphQL,当然我们也可以利用代码来实现GraphQL 测试。 传统上我们测试RESTful时,大部分人可能选择的mocha chai supertest 这个库作为测试框架 来编写API测试,通过上面的文章,我们了解到GraphQL 请求的底层依然还是http request
前段时间接到了一个输入法开关下发的功能,通过精准测试的理念,在测试效率和测试覆盖度上提升较大,在这里分享一下测试过程: ? 3、确定测试全集: 通过了解实现,确定测试全集为: 1、 全部策略正确性。 2、 所有单元策略正确性。 于是想到了通过导流来减少回归工作量的方案,具体方案如下: 1、 将线上流量导到测试服务器。 2、 对比测试服务器和线上服务器的返回结果是否一致。 5、手动设计用例: 经过统计,所有204条单元策略中,有8条策略线上流量未覆盖到。覆盖度为96.1% 有了未命中的策略id,可以针对每条单元策略的命中条件,设计相应的接口用例覆盖单元策略。 总结了一下,本次结合精准测试理念,对项目的提升如下: ? 整体开展精准测试的大体过程如下: ? 欢迎添加我们的搜狗测试微信号,与我们一起聊聊测试。 ?
测试实践都会提供一些解决思路,并且还远不仅限于此。 然而并不是所有的行为都能够称之为行为,其中需要意识到行为和实现是有区别的,我们希望记录的是具体的用户行为而不是这个行为中的每一步实践。 二、Cucumber测试实践 1、并不是BDD 根据维基百科,BDD是一种对于TDD在敏捷软件开发中的改进尝试,主要目的在用自然语言让DEV、QA、BA、PO对于程序如何运行形成一种共同理解。 然而,我们的目的是为了将我们在测试过程中的所有行为、断言利用程序记录下来,所以Cucumber是作为一种脚本工具来完成测试实践。在这个场景下我们测试的是一个已经开发完成的代码,这不是一种BDD。 1、Cucumber与E2E结合不是好的实践 在github上搜索Cucumber相关的开源项目,95%以上的都是将Cucumber和E2E测试工具相结合使用。
在微信生态项目中,大部分H5页面都是运行在微信内(即微信内置浏览器),用户使用的移动端设备、系统版本、微信版本五花八门。本期文章将详细介绍微信H5兼容性测试的理论、方法和实际案例。 还有一种测试方法是测更多的手机型号,很多自动化测试平台就是采用这种策略,但这种策略是否适合微信H5测试呢?为什么微信H5兼容性测试困难? 如果用云真机来测试微信H5,面临的问题是需要进行一系列复杂的微信登录操作,然后再进行测试,微信在新手机上的整个登录流程还是比较复杂的。微信H5的测试要从何下手呢? 测试方法与实践做在测试之前首先,不指望测试阶段解决所有的问题,在开发时就需要考虑兼容性。 如果用自动化测试微信H5,怎么在那么多设备上登录微信呢? 测试策略又是什么?
Springboot+Junit5微服务单元测试编写实践 现在写单元测试的重要性不言而喻,下边说明一下Junit5测试的会用到的主要注解和方法。PS:常用开发工具都可以自动生成Junit测试类。 ) Junit5中用来替代Junit4的@RunWith(SpringJUnit4ClassRunner.class),会启动Spring的上下文 @ContextConfiguration 指定加载 ApplicationContext的配置文件或配置类,一般和@ExtendWith(SpringExtension.class)结合使用 @ExtendWith(MockitoExtension.class) Junit5中用来替代 测试方法结构 单元测试采用Given...When...Then的结构,即 准备数据,用mock模拟方法返回值 执行,调用测试方法 验证,用assert等验证方法返回结果 数据库的单元测试 @MybatisPlusTest 可以在做数据库的单元测试时不使用@SpringBootTest注解启动整个工程 接入层的单元测试 @WebMvcTest 同样用来做MVC层的单元测试,只注入MVC层相关的Bean
// 新增视觉测试 performance: 5 // 新增性能测试 }; case 'static-site': return { visual: 5 // 组件库需要大量视觉测试 }; default: return this.levels; } } functions: 80, lines: 80, statements: 80 } } }; } } 现代测试实践 ; expect(screen.getByRole('button')).toHaveClass('btn-outline'); }); }); React Testing Library实践 > { expect(screen.getByText('Jane Doe')).toBeInTheDocument(); }); }); }); Playwright E2E测试实践
经历过FunTester框架Redis压测预备, 下面就应该进入实践阶段了,首先呢,先分享一个对Redis里面不停地添加key-value的测试用例。 "mark":"Redis测试021516", > ① . "table":"eJztk8sKgkAUQPeB/3A/QMFMWvgZ0Q8IDiQ0Fk1BLXtR0Lr5jVb90Cyiz+j2wB5UWj6m4A4XdKPnnHE0KpBuNVgQit12td +swbVt6Ld6zA9SPmxUjPecBhPdTiQYNEPOPBhagvVCvw3RgJswsjjC/SiJkezBwwjO7/IcpwZcmNwfem61jrc5VGRdSi5xUpUQpSyKkjOcckgnRNEkJcc45dFuMYXSlJzjlENUcoKDlwXOc2S +5PirXU5jIjc3izh1inPd5A8FMljF6fcel43IUedj4/dmWgS/KHo8Wq//ov+8HAt/QIMKqZAK9WtQIRVSoX4NKqRCKtSvQYVUSIX6NQotPAA24o0Q
一个测试类,通常有多个测试方法,有时候一个或多个测试方法都需要某些共用的”数据“, 比如说都要访问某个数据库的某张表,比如说都需要起浏览器,都需要调用post方法等。 cls.status = 1 def setUp(self): print("Now starting") @data_provider([(1, 2, 3), (4, 5, self, None , current_process())) print(self.status) assert SumData().sum_data(4, 5) 历史文章: Python数据驱动实践(一)–ddt实现数据驱动 Python数据驱动实践(二)–教你用Python实现数据驱动 Python数据驱动实践(三)–动态添加测试用例 Python测试框架实现 (四)–动态挑选测试用例 Python测试框架实现(五)–多线程
4 if value: 5 func. 1#多线程部分代码 2with ThreadPool(number_of_threads) as p: 3 p.map(f, cases_to_run) 4p.close() 5p.join() 具体代码如下: 1#部分代码 2def run(case): 3 #cls是测试类 4 cls = case[0] 5 #func_pack是测试函数及所有参数 6 : 1@TestClass() 2class TestSumData: 3 @BeforeClass() 4 def before_class(cls): 5 print self, None , current_process())) 20 print(self.status) 21 assert SumData().sum_data(4, 5)
一、引言:为什么LLM性能测试至关重要? 通过与 ms-swift 训练框架 的无缝集成,开发者可在训练后直接发起性能评测,形成“训练-评测-优化”闭环 三、EvalScope性能测试实践指南 环境搭建 EvalScope 工具的运行需要 Python api.deepseek.com/chat/completions", "api_key": os.getenv("DEEPSEEK_API_KEY"), "parallel": 5, 这里还额外指定了参数:"no_test_connection": True, 主要是为了简化测试流程,否则测试连接时可能会无法正常启动测试,需要额外处理。 # Extract the JSON part after "data:" and parse it data = json.loads(line[5:
一、电量测试之农业时代 在之前很长一段时间,我们都是用这种可怜的方式进行电量测试的: 1、选定测试场景以及时长; 2、给手机充放电,让手机剩余电量在我们预设的值,比如90%,每个场景测试开始时,保证手机都是这一电量 或者说,以200mA的稳定电流放电,能放5小时。但明显这样意义并不大。 1、首先,上线前的电量测试,只要装上对应的证书,便可开始执行测试,只要记下哪个时间段对应的是哪个场景,然后测试完后,取下系统的数据库,便可以对当次的电量做较全面的评价,例如,某个APP在某场景下,20分钟运行时间 5、是否在充电,如果是在充电过程中,使用的任何应用,具体电量都不作统计,不入数据库,而只统计整机的电量。 5、系统中每个应用都有几种状态,分别是不运行、前台活跃、前台不活跃(一般应用间切换时出现)、后台、暂停(在后台但没有运行,程序还在内存中)。
前言 小编最近参与了两个SDK测试项目,一个是与外部企业APP对接的SDK测试,对于要接入APP完全不了解,只针对SDK demo的功能和调用进行测试;另一个是与公司内部产品APP对接的SDK测试项目, 是针对SDK与APP源码集成后进行测试,通过这两个项目,小编对SDK测试工作有了更深入认识,在此对SDK测试内容和测试方法进行总结分享给大家。 SDK测试内容 SDK测试,是对SDK提供的功能和接口进行测试,测试需要关注哪些内容呢? 5)稳定性测试 稳定性测试需要测试SDK的功能在一定压力下,持续运行一段时间,接口功能和设备资源占用有无异常。 3)基于代码的单元测试 这种方法提测时一般只提供SDK源代码和SDK接口说明文档,测试时针对各个接口方法进行编写测试代码进行单元测试。
性能测试中最容易被误解的部分之一就是负载测试。大多数人认为所有性能测试就是负载测试,但这是不准确的。有许多类型的测试组成性能测试。 在进行负载测试之前要考虑的问题之前,让我们仔细研究一下负载测试的基本信息。 LoadRunner的基本一种定义:负载测试是许多并发用户运行同一程序,以查看系统基础结构是否在不影响功能或性能的情况下处理了负载。 还有一种说法将负载测试解释为: 负载测试是性能测试的子集。 但是建议在着重负载测试之前首先通过模拟或者监控正常一天的吞吐量来开始负载测试。 这里的关键词是吞吐量,这是另一个经常被误解的性能测试。 测试时间越长,在测试过程中捕获的事件数量就越多,并且无论使用何种工具,对其进行分析都将更具挑战性。 负载测试会生成大量数据。深入研究测试结果并找到所需的一切并不容易。
测试同学们平时用的比较多的测试框架和工具,如JMockit、EasyMock、Mockito和PowerMock,大家普遍认为代码可读性差,多组测试数据使用起来麻烦等缺点,今天小编就来给大家介绍一款简洁 、优雅、易理解的测试框架——Spock 首先给大家简单介绍下这款测试框架,Spock是一个基于Java和Groovy应用的测试框架,通过JUnit runner调用测试,兼容绝大部分JUnit的运行场景 下面我们开始Spock的实践: 一.环境搭建 IDEA > Eclipse Gradle > Maven (官网中有详细的Gradle配置说明https://gradle.org/) IDEA+Maven 3.创建groovy的测试源码目录:首先在test目录下创建名为groovy的目录,之后将它设为测试源码目录 4.创建一个简单的类 ? 5.我们的目录结构 ? 三.Spock中的许多概念和特征都来自jUnit,我们总结看下Spock测试模板方法的定义和JUnit的对比,后续我们会对各个模板方法进行介绍和测试实践,请大家持续关注搜狗测试公众号。 ?
1.简介 JMeter是开源软件Apache基金会下的一个性能测试工具,用来测试部署在 务器端的应用程序的性能。这里我们用来做接口测试。 4.创建测试计划 创建线程组 ? 创建请求 ? 创建结果树 ? 5.运行测试 ? ?