专注测试技术的课程订阅站点

进行测试前必须问的三个基本问题

对于测试同学来说,为了详细了解背景,你必须在合适的时间向合适的人提出合适的问题。如果没有背景信息,你可能无法设计出有效的测试场景。

在没有有效测试场景的情况下,你可能无法为团队提供有价值的反馈,而这是质量保证人员(QA)所期望的。最终,团队将对测试过程失去信心,产品负责人可能会对软件质量提出质疑。因此,提问不仅对深入了解背景至关重要,还对确保交付的软件符合每个利益相关者的期望至关重要。

我的测试方法总是从向参与决策过程的不同人员提问开始。这使我能够深入了解变更的原因。

我向技术主管和架构师提问,以了解他们如何规划代码变更以适应新的业务需求。

我向产品负责人提问,了解计划中的变更将如何解决用户的问题。这让我了解客户面临的问题。

在这篇文章里,我将分享在开始测试之前你应该问的这些基本问题。

目录

  • 在测试之前 QA 应问的基本问题
    • 什么变了?
    • 为什么变了?
    • 影响在哪里?

什么变了?

你必须首先问产品负责人:计划做哪些变更?为了详细了解,可以进一步拆分为更小的问题,比如:

  • 具体修改了哪些组件?(例如数据库、后端、前端或其他系统服务)
  • 哪些改动影响了系统的状态路径?
  • 是否引入了任何新的终端用户功能?
  • 这些变更为终端用户解决了什么问题?

为什么变了?

同样重要的是了解变更背后的理由。你应该能够理解客户面临的问题,这些问题促成了这一决策。如果不了解用户的痛点,作为 QA,你无法确保变更是否有效地解决了这些问题。为了进一步拆分这个问题,你可以问以下跟进问题:

  • 在此次变更之前,利益相关者具体遇到了哪些问题或痛点?
  • 实施此变更预期带来的好处或改进是什么?

影响在哪里?

“影响在哪里?”是有效测试计划中最重要的问题之一。你应该尽早识别受影响的区域。通过定位受影响的区域,你可以设计出全面覆盖这些变更的测试场景。

总之,作为 QA,你应该具备设计有效测试场景所需的所有知识。你可以根据你的系统和情况调整这些问题,但你必须尽早得到这些问题的答案,以确保你的测试高效且有效。

2024年最值得学习的自动化测试工具

https://img.ethanhan.cc/file/e8bea6744d9a0e2895ad1.png

这是一张 主流的 3 大自动化测试工具每周 npm 下载量的统计对比。

npm 是 nodejs 的依赖管理工具,所以这张图可以看出在 javascript 这门语言领域,每种工具使用人数的变化情况。

看图说话,从趋势图上看,3 大工具在 2024 年的命运大相径庭。

  • cypress 增速明显放缓,考虑到 cypress 只有 javascript(typescript)版本,所以可以比较确定的是,cypress 的用户数已经停滞不前了;
  • selenium 的用户数开始退坡,考虑到 selenium 有 java 和 python 的版本,我们只能说,在前端领域用 selenium 的人变少了;
  • playwright 的用户数急剧增加,特别是在 2023 年的下半年,曲线陡然上升,可能新用户和从 selenium 转投过来的用户带来了这次爆发式的增长;

结合上次我做的一个关于如何使用 playwright 狂赚美刀的视频,结论很明显了。

2024 年最值得学习的自动化测试框架就是 playwright 了。

为什么是 playwright

  • 首先 playwright 有个好爹,微软出品,如果项目不被砍的话,更新和维护的力度是可以得到保证的;
  • 其次 playwright 的入门比 selenium 其实是要简单不少的,适合初学者;
  • 另外 playwright 的多种特性保证了初学者可以用相对简单的代码写出可以稳定运行的测试用例,做过自动化测试的同学肯定知道,对于用例来说,稳定运行意味着什么;
  • 最后,也就是最为重要的一点就是,大部分的在其他测试层面,比如单元测试或者接口测试,搞不定的用例或者操作,都可以用 ui 自动化工具来实现。也就是重剑无锋,大巧不工。这就意味着,除了测试,ui 自动化工具的应用范围其实非常广,学的好真的可以赚钱。还是我上次视频里提到的 ai 设备之耻——rabbit R1 的例子,既然 ai 现阶段没办法实现自动打车或者定外卖的功能,那就让 playwright 去实现吧;

如何学习

  • 首先建议初学者使用 typescript 的版本,原因很简单,ts 版本配合编辑器会带来完备的代码提示,对初学者来说很可能带来极大的帮助;
  • 建议使用默认的带 testsuit 也就是测试套件的版本进行学习,因为这个版本自带断言,测试的目的就是为了各种断言;
  • 官方文档是最好的学习资料,因为官方文档更新非常及时,毕竟 playwright 还在密集开发中,经常隔一段时间就会带来一些新特性;

开坑

一转眼就下半年了,准备开个 playwright 教程的坑,其实之前一直想做的,但无奈 playwright 更新太快,所以就这么搁置起来了。

当今爆火的RPA其实就是自动化测试

最近有机会看到了 RPA 在实际工作中的重度应用,深刻感受到了自动化的强大实力,以后的应用前景时完全可期的。

RPA (Robotic Process Automation) 简介

Robotic Process Automation (RPA) 是一种技术,使用软件机器人(或称“机器人”)来模拟人类在数字系统中执行的任务。RPA 可以自动执行高度重复性和规则驱动的任务,这些任务通常需要人类操作来完成。RPA 通过与现有系统和应用程序进行交互,无需对底层系统进行改动即可实现自动化。

本质上讲 RPA 就是自动化脚本,好的 RPA 脚本可以结合页面自动化,桌面自动化(操作桌面级的应用,比如微信电脑版)以及接口自动化,用自动化去替代人类操作。与自动化用例不同的是 RPA 里面的断言不是必须的,自动化用例的目的是验证,也就是实现断言;RPA 的目的是高效率低错误率的完成工作,比如给微信群群发消息之类的。从本质上讲,RPA 就是一种自动化测试,一种理论上可以省略断言的自动化测试。但实际上如果想要 RPA 脚本长时间稳定运行,断言也是必不可少的,当断言条件不满足时,RPA 脚本应该进行无损的容错处理,这样程序才会更加健壮。

我们可以把 RPA 看成是综合性的自动化测试,也就是设备端的自动化。比如下面这个 RPA 场景:

  • 第一步调用 api 自动获取一些最新的资讯,用 ai 做改写。这是接口自动化;
  • 在网页端把改写后的资讯发布到某资讯网站。这是网页自动化;
  • 在桌面端把新发布的资讯自动发送到微信群里。这是桌面应用的自动化;
  • 最后调用设备农场的手机,在所有的手机上给这篇资讯点赞。这是手机自动化;

因为测试金字塔的关系,我们会将自动化测试分为 ui,接口以及单元测试,这些测试之间天然隔绝,相对独立,所以想象的空间其实不大,只是代替人工进行验证而已。其实这是没问题的,毕竟每种测试代表的主体不一样,分开使得测试用例变得更加容易编写和维护。

但 RPA 的主体是机器人,他的目标就是代替人类办公过程中的大量的重复性操作,多种自动化技术和 ai 技术的结合才可以达到这种效果,这么一想其实结论很明显了,RPA 就是自动化测试,是所有种类自动化测试的终极合体形态(有点中二了)。

RPA 的真实应用案例

我看到的实际例子

我看到的实际应用其实是在电商上,有朋友开了一家跨境电商的公司,我去那边拜访的时候正好遇到他在研究国内某家 RPA 厂商(最近融资了 1 亿美金)的方案。因为电商的重复性劳动是非常多的,所以 RPA 的应用场景相当的广阔。最震撼的例子是退货退款的例子。

一些商家平时的销量比较大,但众口难调,出的单越多,退货的比例就越高。

每个退货单其实逻辑上不需要审核,只要退就好了,但是流程上还是要系统在系统上做一些操作的,因为处理有时效性,需要在短时间内快速解决掉,用人工做的话长时间下来工人会感到疲惫,另外操作的效率也相对较低。这时候 RPA 就可以很好的满足长时间高效率低错误率的重复性工作,据说一到两天可以处理几万个订单,这其中节省的人力真的是非常可观的。

另外还有很多跨境电商公司用 rpa 做批量上下商品等操作,也是非常杀手级的应用。

其他的 RPA 应用领域如下。

1. 银行与金融

应用场景: 贷款处理、账户开立、反洗钱监控、客户服务。 案例: 某大型银行采用 RPA 自动化贷款处理过程,包括贷款申请数据的验证和审批,从而将处理时间从几天缩短到几小时。此举不仅提高了效率,还减少了人工处理中的错误。

活久见!性能测试工具Gatling支持javascript了

很久之前给大家介绍过一款性能测试工具 Gatling。该工具有开源版本和企业版本,一般情况下我们只关注开源版本,毕竟企业版还是非常贵的。之前的开源版本中,测试脚本是用 Scala 写的,这门语言有点高阶,写起来不顺手,不过 2024 年的今天,情况有所改变。

Gatling 团队 5 月 23 日宣布,他们已为 Gatling 负载测试新增了 JavaScript 和 TypeScript SDK。这个新的 JavaScript SDK 是 npm 库中第一个企业级负载测试工具,使更多的开发者能够使用他们熟悉的编程语言进行 Gatling 负载测试。

自从 Gatling 推出以来,它一直是一个基于 Java 虚拟机(JVM)的开发工具,专注于负载测试。现在,开发者可以使用 Gatling JavaScript SDK 编写负载测试,并将测试编译在 JVM 上运行。这结合了脚本语言的灵活性和多线程等必要的性能特性。

最重要的是,使用 Gatling 不再局限于 Java 开发者。通过 npm 安装命令设置项目,熟悉的语法使 JavaScript 开发者可以轻松上手,同时拥有 Gatling 引擎的强大功能来运行负载测试。

为什么 Gatling 团队开发了 JavaScript 和 TypeScript SDK?

JavaScript 生态系统的惊人发展是不可否认的。最初,它只是一个前端脚本语言。随着 NodeJS 和 TypeScript 的出现,它现在成为构建现代 Web 应用程序和 API 的全栈、类型安全的语言。根据某些估计,JavaScript 是 98%财富 500 强企业技术栈的一部分。

Java 和 JavaScript 的历史

Java 和 JavaScript 的历史从一开始就紧密相连。两种语言都是在硅谷开发并于 1995 年发布的。JavaScript 最初被称为 Mocha,但 Netscape 将其改名为 JavaScript,以利用 Java 日益增长的人气。

chatgpt 4o 制定的软件测试学习计划强到离谱

chatgpt4o 已经发布几天了,近期关于这个模型的各种测试评测层出不穷,不过可以看到该模型在学习教育领域潜力巨大,可以教初中生学数学,教老外学英语,教学方式新颖独特,比普通老师教的都好。

今天正好被灰度到了 gpt4o,发现其知识库是 2023 年的,比之前的 3.5 要新不少,正好可以问一下跟测试同学自我提升相关的问题。

第一个问题: 请帮我制定一个 2024 年软件测试人员的技术提升计划

制定一个 2024 年软件测试人员的技术提升计划需要考虑当前的技术趋势、行业需求以及个人的职业目标。以下是一个详细的技术提升计划:

第一季度:基础夯实与工具掌握

  1. 巩固基础知识

    • 复习软件测试基础理论:测试生命周期、测试类型(如单元测试、集成测试、系统测试、验收测试等)。
    • 学习和掌握测试用例设计方法:等价类划分、边界值分析、因果图、状态转换测试等。
  2. 工具使用

    • 熟练掌握常用的测试管理工具:JIRA、TestRail、Zephyr 等。
    • 学习和使用版本控制工具:Git。
    • 学习自动化测试工具:Selenium、Appium(针对 Web 和移动应用)。
  3. 编程技能

    • 学习一门编程语言,如 Python 或 Java,掌握基础语法和编程逻辑。
    • 编写简单的测试脚本,进行单元测试和简单的自动化测试。

第二季度:深入自动化测试与持续集成

  1. 自动化测试进阶

    • 学习和掌握高级的 Selenium 用法:页面对象模型(POM)、数据驱动测试(DDT)。
    • 掌握移动应用测试工具 Appium 的进阶技巧。
    • 学习 API 测试工具:Postman、RestAssured,并掌握 API 测试的基本方法。
  2. 持续集成/持续交付(CI/CD)

    • 学习 CI/CD 基础知识和概念。
    • 掌握 CI/CD 工具:Jenkins、GitLab CI、CircleCI 等。
    • 实践在项目中配置自动化测试与 CI/CD 管道。
  3. 测试框架

    • 学习和使用测试框架:JUnit、TestNG(针对 Java),PyTest(针对 Python)。
    • 设计和实现端到端测试框架。

第三季度:性能测试与安全测试

  1. 性能测试

    • 学习性能测试的基础理论和方法。
    • 掌握性能测试工具:JMeter、LoadRunner。
    • 进行性能测试脚本编写和性能分析。
  2. 安全测试

    • 学习和掌握基本的安全测试知识:OWASP Top 10、常见的安全漏洞(如 SQL 注入、XSS 等)。
    • 使用安全测试工具:Burp Suite、OWASP ZAP。
    • 进行安全测试实践,识别和修复常见的安全问题。

第四季度:云测试与新技术探索

  1. 云测试

AI自动化探索之gpt4与playwright

之前介绍过一个使用 chatgpt4 分析 dom,然后生成 puppeteer 代码进行自动化的测试工具 Taxy AI。今天发现有人推荐了一个使用 chatgpt4 生成 playwright 代码的测试工具BrowserGPT,稍微看了一下,原理比较简单,比较适合我们去研究一下,顺便打开思路。

演示动画

https://github.com/mayt/BrowserGPT/raw/master/public/browsergpt.gif

具体使用

因为我没有 chatgpt4 的 key,所以没办法直接上手使用,只能通过文档去猜测一下具体用法。

BrowserGPT 设置了 openai 的 key 以及 start url 之后就可以在命令行里运行了,大致的使用方式是输入一些自然语言,然后 BrowserGPT 执行 AI 生成的 playwright 代码,实现自然语言自动化的功能。

go to hn
click on the abc article

比如上面的一些描述就实现了去 hacknews 网站点击 abc 这篇文章的功能。

原理分析

大致看了一下,执行的流程是这样的,代码在这里

  • 获取初始化的 url,打开 chrome 浏览器,跳转到这个 url
  • 在命令行里启动 prompt,也就是给用户一个输入的 ui
  • 初始化 openai 的 api
  • 写个死循环,每次用户输入之后调用doAction函数
  • doAction函数里简化当前页面的 dom 元素
  • 将简化过的 dom 元素传给 chatgpt,让 gpt 根据 playwright 的示例生成代码
  • 执行 chatgpt 生成的代码

这里最有意思的部分是doAction函数