![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
软件测试
文章平均质量分 86
软件质量保障
通信硕士,拥有3项发明专利。前字节跳动测试工程师,现就职于蚂蚁集团,工作重点为微服务测试、接口测试平台研发等
展开
-
有效的测试
所寫即所思|一个阿里质量人对测试的所感所悟。公众号当我们想到自动化测试时,许多积极的方面可能会浮现在脑海中,比如缺陷检测,但实际上,良好的测试与良好设计同等重要,即通过可变代码来降低成本。可变性需要三个相关能力:重构灵活的设计有效的测试但是,自动化测试是如何实现可变性的呢?没有测试,任何更改都可能是一个潜在的缺陷。自动化测试提供了一张安全网,使得开发者在修改或重构代码时更有信心。原创 2024-08-04 00:33:02 · 768 阅读 · 0 评论 -
Postman Flows: 自动化重复执行任务
重复性是自动化的核心,Postman Flow支持重复性的任务执行。例如垃圾邮件删除,我们经常需要从多个系统中删除电子邮件。登录、搜索并从多个位置删除电子邮件可能非常耗时。本文介绍如何创建一个Flow,每次运行该Flow时,它都会删除一封电子邮件。同样,我们将使用Stripe.com、Brevo.com以及一个作为假设的内部系统的Postman mock服务器。原创 2024-08-03 07:30:00 · 295 阅读 · 0 评论 -
阿里微服务质量保障系列:异步通信模式以及测试分析
所寫即所思|一个阿里质量人对测试的所感所悟。最常见的方式就是异步消息通信。使用消息机制时,服务之间的通信采用异步交换消息的方式完成。基于消息机制的应 用程序通常使用消息代理,它充当服务之间的中介。另一种选择是使用无代理架构,通过直 接向服务发送消息来执行服务请求。服务客户端通过向服务发送消息来发出请求。如果希望 服务实例回复,服务将通过向客户端发送单独的消息的方式来实现。由于通信是异步的,因 此客户端不会堵塞和等待回复。相反 ,客户端都假定回复不会马上就收到。原创 2024-08-02 08:44:56 · 40 阅读 · 0 评论 -
TOP级AI驱动的单元测试工具推荐
理想的情况是,编写程序的开发人员在编写代码的同时编写单元测试。GitHub Copilot 是由 GitHub、OpenAI 和微软共同开发的基于生成式AI模型的工具,它基于所有出现在公共存储库中的自然语言进行训练。单元测试(Unit Testing)是软件开发的一种测试方法,它主要针对程序中的最小可测试单元——通常是函数、类的方法或模块等进行检查和验证。隔离性:每个单元测试都是独立的,测试时会将被测试单元与其他代码隔离,以确保只测试该单元的功能,不受外部因素影响。还需要手动完成生成的测试用例。原创 2024-08-02 08:43:39 · 415 阅读 · 0 评论 -
强大的接口测试可视化工具:Postman Flows
Postman Flows是一种接口测试可视化工具,可以使用流的形式在Postman工作台将请求接口、数据处理和创建实际流程整合到一起。如下图所示Postman Flows是以API为中心的可视化应用程序开发界面。它提供了一个无限的画布用于编排和串连API,数据可视化来显示你的流的最终输出。原创 2024-08-02 08:41:30 · 440 阅读 · 0 评论 -
解锁Swift Testing测试框架
与之前的版本相比,对单元测试的定义也有所改变。你不再需要在函数前缀上使用` test `,而是可以将` @Test `函数附加到任何你想让其成为测试的函数上。原创 2024-07-09 07:30:00 · 1365 阅读 · 0 评论 -
关于手工测试的思考
(这里的“产品”可能是正在运行的软件,或者是它的一部分。如果我们相信这种幻想,就不必去寻找那些深层的、隐藏的、罕见的、微妙的、间歇性的问题;与项目中的其他人不同,测试员专注于揭示尚未解决的问题,或是我们提出的解决方案所引入的问题。在测试的早期阶段,特别是放松或暂停我们对发现问题的关注,更多地关注建立我们对产品的心理模型可能非常重要。测试必须被视为一种社会(且社会上有挑战性)、认知、风险聚焦、批判性(在多个意义上)、分析性、调查性、熟练、技术性、探索性、体验性、实验性、科学性、启示性、光荣的手工艺。原创 2024-07-03 07:15:00 · 1051 阅读 · 0 评论 -
出BUG了。。。
事务的隔离级别决定了一个事务可以看到其他事务修改数据的程度,从最低级的读未提交(Read Uncommitted)到最高的串行化(Serializable),隔离级别越高,并发性能越低,但数据一致性越好。分布式事务:微服务架构下,原子服务(拥有自己的部署容器和数据存储容器)部署在不同的服务器上,服务间调用就会出现跨越多个数据库或服务的事务,需要特殊的协调机制(如两阶段提交)来确保所有参与方的一致性。最近出了一个bug,比较神奇的是,竟然一年前的变更引起的。反之,则直接return,不做什么操作。原创 2024-06-17 07:15:00 · 44 阅读 · 0 评论 -
APP中断测试知多少
所寫即所思|一个阿里质量人对测试的所感所悟。中断测试有助于移动测试人员识别与系统或用户行为相关的潜在风险,以便在发生流量干扰时能够识别出可能导致意想不到或不期望结果的问题。让我们深入探讨中断测试的细节及其手动或程序化实现方式。本文还介绍了用于自动化测试过程、加快测试执行速度并向用户提供高质量应用的移动工具,例如 Appium WebDriver。原创 2024-06-03 07:00:00 · 933 阅读 · 0 评论 -
聊聊变异测试
正如你所看到的,尽管为达到代码覆盖率而构建的测试集会通过代码执行类似的路径,但变异测试指标允许对测试应执行的验证进行更具体的描述。这是杀死的变异体与变异体总数的比率。在多数软件测试方法中,很难预判能否在测试过程中发现缺陷,往往直到这些缺陷在后续的测试环节被发现,甚至是更糟的情况下,在生产环境中出现时才会被注意到。随着工程师越来越多地采用更自动化的软件验证方法,以及在不断缩短的发布周期中对更高品质的软件输出的需求日益增长,变异测试帮助我们退一步评估,我们是否真的应该对我们的测试充满如此信心。原创 2024-05-27 07:00:00 · 509 阅读 · 0 评论 -
测试三问
在缺乏有效的测试用例的情况下,你可能无法为团队提供有价值的质量反馈,而这正是QA人员所期望的得到的。因此,测试不仅对于深入了解产品至关重要,而且对于确保交付的软件符合业务方的期望至关重要。作为一名QA,如果不了解用户的痛点,就无法确保这些变更是否真正为用户解决了问题。通过明确受影响的模块,你可以设计出全面覆盖这些变更的测试用例。我会向产品负责人询问有关需求变更如何为我们的用户解决问题,这让我了解了用户所面临的问题。我的测试方法总是向参与项目过程的不同人提问,这让我更深入地了解变更的背景知识。原创 2024-05-23 07:00:00 · 293 阅读 · 0 评论 -
Change-Driven Testing:变更驱动测试
当下,随着产品的迭代速度越来越快,测试人员必须在更短的时间内测试更多的软件。这使得每个代码变更都执行整个测试集变得不可行。而通过手工测试覆盖所有变更更变得不切实际。为了应对这一挑战,我们提出了基于变更驱动的测试(Change-Driven Testing)的方法论。变更驱动测试使用测试影响分析来自动查找给定代码变更的相关测试集,大大增加了早期捕获缺陷的概率。此外,基于变更驱动测试使用测试缺口分析来自动识别测试缺口(即缺乏测试用例覆盖的代码变更)。这使我们能够有意识地决定将我们有限测试资源用于提高我们的测试有原创 2024-05-20 06:45:00 · 732 阅读 · 0 评论 -
对构建高质量软件的思考
持有固定型思维模式的人认为自己的能力(或所做的事情)是固定不变的、与生俱来的。同样,DevOps文化的兴起也催生了专注于“平台工程”或“开发者体验”的中央团队,他们构建工具和自动化基础架构,并在必要时提供专业知识,使开发团队能够更轻松地运行基于云的服务和应用程序。如果数据表明拥有更多软件测试和运维方面技能的开发者是有益的,而你的回答却是“这不是我的工作”,那么你的成长将受到限制,而且你的职业生涯也会受到影响。有时候,开发人员不想学习如何测试或了解服务交付,因为他们认为自己高人一等,这是“别人的工作”。原创 2024-05-05 07:00:00 · 808 阅读 · 0 评论 -
自动化测试中的SOLID原则
自动化测试在软件质量保障手段中愈显重要。但是随着自动化测试代码的规模和复杂性不断扩大,它也很容易出现测试代码重复、紧耦合等问题。而SOLID原则可以解决这一问题,作为自动化用例开发的指导原则。原创 2024-04-13 08:44:23 · 691 阅读 · 0 评论 -
QA赖以生存的软技能
例如灵活性、团队合作、适应性在QA中是至关重要的,使工程师能够与团队成员和客户有效地协作。通过磨练这些技能,QA专业人员可以促进他们的职业发展,并在他们的领域产生真正的影响。从本质上讲,软技能使QA工程师能够有效地协作,有效地解决问题,并确保项目的整体成功。在质量保证工作中,软技能是至关重要的,因为它们使得技术专长得到更好的发挥。对于QA工程师来说,注意和处理任务中经常被忽视的小细节是很重要的。积极地注意别人在说什么,理解他们的观点和担心是至关重要的。反思以前的成功和失败,以提高未来的表现是非常有价值的。原创 2024-04-01 07:15:00 · 1071 阅读 · 0 评论 -
重新定义可观测性
对我来说,一个概念的良好定义应当具备这样的作用:当你拥有这样一个定义时,它不仅能够作为理解该概念的核心方式,而且还能引导你探索这一概念的方向,并指导你全面把握对该概念探索的所有含义。丢掉“尽管有分歧也要坚决执行”的说法,转向“提出有意义的问题,获取有用的答案,并根据所学付诸行动”。综上所述,我们探讨了控制理论中对可观测性的定义,认知系统工程中的可观测性定义,以及我提出的可观测性定义:可观测性是一个过程,通过这个过程,个体或组织能够发展出提出有意义的问题、获取有用答案并基于所学采取有效行动的能力。原创 2024-03-31 07:00:00 · 992 阅读 · 0 评论 -
别再傻傻地写测试了,先了解下Property-Based Testing
此后,也启发各个语言的 Property-Based Testing framework,例如:Python 的 Hypothesis、Erlang 的 PropEr、Rust 的 quickcheck、JS/TS 的 fast-check 等等。这样的优点是,我们已经可以通过产生出的阵列来测试,并打乱它后再确认是否已经排序,但是,这样我们还是只有测了「长度为 3 且内容物为 1 到 3 的阵列」、「长度为 5 且内容物为 1 到 5 的阵列」以及「长度为 10 且内容物为 1 到 10 的阵列」。原创 2024-03-17 07:15:00 · 701 阅读 · 0 评论 -
AI应用于软件测试的探讨
最近这段时间,随着OpenAi发布Sora,关注AI的同学估计都知道上面这张图,中美两大AI巨头(笑cry了)。当然本文不是聊这个段子,主要聊下AI在软件测试行业的应用与现状。不可否认,借助于AI辅助测试工程师做自动化测试是质量保证手段的趋势。由于AI、机器学习和神经网络是当前最热门的话题,大家似乎有一种“有了AI一切都会变得更好”的错误认知。但事实真的如此吗?原创 2024-02-28 01:12:13 · 1372 阅读 · 0 评论 -
【Explore It】Part 1-1测试和探索
如果你观察计算机的整个内部,你会发现一排排的组件,组件之间有电线连接,当时选择电线是非常关键的设计决策。随着你执行的每个实验,你都会对软件的行为有更多的了解。你提前为会话设定一个焦点,在会话期间,你可以灵活地探索,设计和执行测试,从一个测试到下一个测试,没有停顿。在这一部分中,你将了解如何制定章程来指导你的探索,如何观察真正发生的事情,如何识别有趣的变化,以及如何确定在以前从未考虑过的软件使用方式中应该预期什么行为。当你发现潜在的风险时,你会进行更深入的测试,利用你的观察和分析能力来调整你的测试。原创 2024-02-10 07:15:00 · 1335 阅读 · 0 评论 -
Martin Flower谈持续集成
我清楚地记得第一份工作初次接触到大型软件项目时的情景,依然记的当时是在一家大型英国电子公司暑期实习。我刚入职就被质量团队的测试经理带着参观公司,他带着我进入了一个巨大的、令人沮丧的、没有窗户的仓库,里面的小隔间挤满正在工作的人,经理告诉我这些程序员同事已经为项目(一个大型软件产品)持续开发了几年的代码, 当他们完成编程时,他们各自的单元(功能)模块正在被集成在一起,而且已经集成了几个月。经理告诉我,没有人真正知道这需要多长时间才能完成集成。原创 2024-01-29 07:15:00 · 1120 阅读 · 0 评论 -
对资金类服务幂等设计与测试的思考
状态机约束: 在设计单据相关的业务,或者是任务相关的业务,肯定会涉及到状态机(状态变更图),就是业务单据上面有个状态,状态在不同的情况下会发生变更,一般情况下存在有限状态机,这时候,如果状态机已经处于下一个状态,这时候来了一个上一个状态的变更,理论上是不能够变更的,这样的话,保证了有限状态机的幂等。原因:应用B会将首次请求失败的数据落DB,幂等请求时候,如果requestId不变,且amount不变,则会捞起首次请求落DB的refundDetial,组装对下游的请求报文,因此不会报错。原创 2024-01-14 20:15:00 · 1005 阅读 · 0 评论 -
低代码自动化测试的实践
而数据源可以来源于POSTMAN导出的JSON文件、SWAGGER文档,Charles的Har文件,甚至JMeter的JMX文件,当然我们需要写解析这些文件的脚本才能获取到需要的数据。此外,如果所测接口存在上下接口调用的依赖,则还需要进行全链路联调测试(不部分接口不是独立存在的,都是和其他接口相互调用的),联调测试是为了保证上下联路接口之间契约的准确性。需要特别说明的是,这里的无代码不是说没有测试代码,而是测试人员不用自己开发测试代码,使用Codeless测试工具可以帮助我们生成可以执行的测试用例集。原创 2023-12-20 23:53:11 · 494 阅读 · 0 评论 -
#BUG SHOW# 深挖一个6年前的老“bug”
为了兼容迁移过程中的存在的一部分特殊交易数据(正向[支付]交易在站点A,但逆向[退款]操作在站点B操作),因此需要做站点A和站点B数据的关联,形如下图,在目前迁移站点落的单据拼接站点A的交易单号。一方认为站点B当初设计表结构时候,字段长度的取值是经过业务发展评估的,请求过来的字段长度就应该不能超出定义的长度,,于是乎在落幂等表(一般是xx_unique表)时出现insert异常,但是这个异常并未直接阻断后续的业务流程,而如果以相同的内容(交易单据)再此发起接口请求,就可能会。针对这个缺陷,可以举一反三。原创 2023-11-25 20:41:49 · 165 阅读 · 0 评论 -
探索性测试最佳实践
探索性测试是一种动态测试方法,它在时间限制的测试阶段利用测试人员的专业知识和结构化方法。它涉及到并发的测试用例设计和执行,允许测试人员积极地探索在测试中的应用程序或系统,以寻找潜在的缺陷和漏洞。在这里,测试人员的工作不是基于先前编写的测试用例。他们盲目地测试系统,寻找消费者在没有明确目标或方向的情况下访问网站或应用程序时可能遇到的缺陷。从本质上讲,探索性测试试图复制最终用户的个人自由和偏好。这一切都是关于学习、研究和好奇。在现代的方法中,测试人员主动利用程序来衡量它提供的用户体验水平。原创 2023-09-28 23:14:58 · 654 阅读 · 0 评论 -
一文搞定Postman(菜鸟必看)
Postman是一个可扩展的 API 测试工具,可以快速集成到 CI/CD 管道中。它于 2012 年作为 Abhinav Asthana 的一个副项目启动,旨在简化测试和开发中的 API 工作流程。API 代表应用程序编程接口,它允许软件应用程序通过 API 调用相互通信。原创 2023-09-16 19:48:08 · 712 阅读 · 0 评论 -
Postman的高级用法一:重新认识postman核心模块
Postman支持以下变量类型:Global、Collection、Environment、Data、Local。原创 2023-09-16 18:56:50 · 358 阅读 · 0 评论 -
关于技术转管理角色的认知
技术人做了几年专业工作之后,会来到一个重要的“分岔路口”,一边是专业的技术路线,一边是技术团队的管理路线。不少人就开始犯难:究竟该往哪里走呢?原创 2023-08-12 09:51:03 · 267 阅读 · 0 评论 -
深入探讨软件测试的质量度量指标
质量保证指标可以通过测试覆盖率来度量功能和非功能测试的覆盖率,同时也可以根据测试发现的缺陷的状态、优先级和关键程度来度量质量,最终目的是提高用户的满意度。通常使用实时监控和跟踪工具。通过主动监控和优化这些指标,可以改善服务和应用程序的健康状况、可用性和可靠性。建立和使用 SLA、SLI 和 SLO 等工具也很常见,以确保达到既定的质量标准和服务水平、设定明确的目标并专注于持续质量改进。服务级别协议 (SLA):这是一份合同,用于确定将要提供的服务和必须满足的质量标准,在服务提供商和客户之间设定明确的期望。原创 2023-06-11 19:24:21 · 3476 阅读 · 0 评论 -
Elasticsearch系列-基础知识
集群中的数据被分片和副本存储在不同的节点上,从而实现数据的分布式存储和处理。每个分片可以有多个副本,副本可以被分配到不同的节点上,从而实现数据的冗余存储。1. 分布式架构:Elasticsearch 是一个分布式系统,可以在多个节点上运行,每个节点都可以处理数据的读取和写入请求。每个节点都可以存储数据的一部分,数据在节点之间自动分配和复制,以提高可靠性和性能。4. 主节点:Elasticsearch 集群中的一个节点被选为主节点,它负责管理集群的元数据,例如索引和分片的分配和复制。原创 2023-06-03 17:10:33 · 2552 阅读 · 1 评论 -
HTTPX从入门到放弃
HTTPX是一款Python栈HTTP客户端库,它提供了比标准库更高级别、更先进的功能,如连接重用、连接池、超时控制、自动繁衍请求等等。HTTPX同时也支持同步和异步两种方式,因此可以在同步代码和异步代码中通用。HTTPX功能如下:1. 发送HTTP请求:HTTPX支持发送HTTP GET、POST等请求,并提供了丰富的选项进行定制化。2. 请求头和查询参数:HTTPX可以方便地添加请求头和查询参数到HTTP请求中。原创 2023-05-31 09:04:19 · 4168 阅读 · 0 评论 -
AI测试|天猫精灵智能音箱测试策略与方法
2014年11月,亚马逊推出了一款全新概念的智能音箱:Echo,这款产品最大的亮点是将智能语音交互技术植入到传统音箱中,从而赋予了音箱人工智能的属性。这个被称为“Alexa”的语音助手可以像你的朋友一样与你交流,同时还能为你播放音乐、新闻、网购下单、Uber叫车、订外卖等等。原创 2023-05-14 10:45:52 · 1458 阅读 · 6 评论 -
什么?你还没使用过AssertJ!
如果需要扩展断言方法,AssertJ 同样也支持很多扩展点。通过实现 AbstractAssert接口来扩展自己的断言。if (!= age) {@Test以上是 AssertJ 的一些核心能力和用法,这些特性可以使测试代码更加清晰、简洁、易于理解。除了基本的断言方法之外,AssertJ 还提供了许多高级用法,可以帮助我们更好地编写测试代码。原创 2023-05-02 16:29:24 · 774 阅读 · 0 评论 -
浅谈软件质量与度量
本文从研发角度探讨下高质量软件应具备哪些特点,以及如何度量软件质量。原创 2023-04-29 00:45:41 · 1777 阅读 · 0 评论 -
探讨接口测试颗粒度
假设现在有一个新增商品的接口,返回的参数中有新增商品的 id(每次返回的 id 都不一样)、success(判断是否成功,0 失败 1 成功)1. 接口测试,断言的时候是否需要断言 id,还是说只需要断言 success 等于 1 就行?2. 如果需要断言 id,是断言 id 不为空即可,还是说从数据库中取新增商品的 id 和接口返回的 id 进行比较,断言是否相等,这种比较有必要吗原创 2023-04-22 14:42:48 · 1278 阅读 · 1 评论 -
【BUG SHOW】一个由高并发引起的缺陷分析
平台有这样的两个功能:功能01: 用户发起支付,成功则将表pay单据状态推进SUCCESS,然后发出支付结果消息;反之如果支付失败,则状态保持INIT不变,结束流程,并且不发消息。如果用户发起幂等重试,支付成功则可以继续推进状态到SUCCESS。功能02: 定时任务会自动捞起pay表状态INIT的单据,并且捞到数据后只需更新这条数据的gmt_modified为当前时间,不做其他处理直接return。原创 2023-04-15 16:49:01 · 430 阅读 · 2 评论 -
Visual Testing
所寫即所思|一个阿里质量人对测试的所感所悟。视觉测试也称为视觉 UI 测试。用于验证开发的软件用户界面 (UI) 是否符合预期。视觉测试不仅要验证开发的网页设计正确地遵循 UI 元素的空间、大小、形状和位置,还要验证网页元素在各种设备和浏览器中正常工作。原创 2023-04-02 15:13:41 · 881 阅读 · 0 评论 -
DevOps实战50讲-(2)Jenkins配置
代码拉到本地后,需要在Jenkins中对代码进行构建,Java项目就需要依赖maven环境,maven也需要依赖JDK,因此需要安装JDK和maven,并配置到Jenkins服务。由于Jenkins作为调度工具,需要从git拉取代码、构建代码、发布自定义镜像到docker仓库,所以Jenkins需要配置大量内容。同样可以在本地/Users/用户名/.jenkins/workspace下查看pull的代码。环境搭建完成后,我们使用Jenkins的过程中,创建的任务以及安装的插件会落到特定的目录文件。原创 2023-03-05 18:34:51 · 784 阅读 · 0 评论 -
Pytest:一个卓有成效的测试工具
目前最流行的Python单元测试框架有三种,分别是unittest, nose和pytest。其中unittest是Python自带的测试框架,但问题是比较老了,赶不上时代发展了(哈哈哈);nose2定位是带插件的unittest,实则对unittest的扩展。长远来看,pytest属于潜力股。原创 2023-03-05 10:21:55 · 1167 阅读 · 12 评论 -
MacBook Pro错误zsh: command not found: brew解决方法
MacBook Pro 重新安装homebrew,用以下命令安装,序列号选择阿里巴巴下载源。我的电脑型号是19款的MacBook Pro(Intel芯片)。原创 2023-02-26 19:20:59 · 1383 阅读 · 0 评论 -
DevOps实战50讲-(1)彻底理解DevOps
DevOps由Development和Operations两个词组成。其中Development代表着软件开发,包括设计、编码、测试等过程;Operations则代表着软件运维,包括部署、监控、维护等过程。因此,DevOps的字面意思可以理解为将软件开发和运维整合在一起的一种方法或理念,旨在加快软件交付速度、提高软件质量和可靠性。原创 2023-02-26 11:12:29 · 478 阅读 · 0 评论