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

chrome上更好的录制回放工具?Jesteer介绍及试用

之前跟大家分享后 chrome 上原生的录制回放功能,今天看到了一款最新的的录制回放工具 jesteer,于是第一时间来了解和试用一下。

主要功能

  • 不用写代码,直接可以录制和回放
  • 可以录制基本的页面交互
  • 自动创建基于 Puppeteer 的脚本
  • 回放时的快照检查功能
  • 简单舒适的 web ui

安装

jesteer 是一款 chrome 插件,直接去 chrome 商店里所有 jesteer 点击安装既可。

界面

jesterr 的界面很简单,就 3 个按钮

  • Record:开始录制
  • Take a snapshot:dom 高亮
  • Copy to clipboard

简单上手使用

  • 点击 Record 开始录制
  • 录制过程中点击 Take a snapshot 进行断言
  • 点击 Stop Recording 停止录制
  • 点击 Copy to clipboard 拷贝生成的代码到剪切板

这几步还是非常简单的,后来我遇到了一个问题,怎么进行用例的回放呢?之前 chrome 自带的 Recorder 是可以录制完成后直接回放的,而 jesteer 则找不到回放按钮。折腾一小会后我终于找到了答案。

把生成的代码粘贴到测试项目中

为了可以运行生成的代码,我决定新建一个 nodejs 项目来进行尝试。

mkdir jesteer_example
cd jesteer_example
npm init
npm install --save-dev jest
npm install --save-dev puppteer
touch example.test.js

修改 package.json

2023年 Selenium 是否正在消亡

看到一篇文章Is Selenium Dead? Explore the State of Selenium Automation in 2023 !,里面比较详细的描述了 2023 年 selenium 的现状以及竞品分析,感觉还是非常全面的,简单的翻译了一下,供大家参考。

技术世界中,工具和技术以飞快的速度发展,软件测试也不例外。在过去的几年里,涌现出了许多新的测试工具(如 Cypress、Playwright 和 Robot Framework 等),每种工具都有其独特的特性和方法来解决同一个问题:测试自动化。

然而,在测试自动化领域,多年来只有一个框架一直是基石:Selenium。它已经存在并开源了 15 年以上,直到最近,一场激烈的争论浮出水面:Selenium 是否已死?是否存在更好的替代品?它是否在面对新的测试工具和方法时失去了竞争力?

在这篇文章中,我将从自己的角度深入探讨 Selenium 在 2023 年的现状,探索其相对于竞争对手的优势和劣势,以及在快速变化的外部世界中中面临的挑战。

前提条件:

  • 成为一名 QA 爱好者 😉

Selenium 的崛起和统治

Selenium 最初由 Jason Huggins 于 2004 年开发,作为一个基于 JavaScript 的自动化工具(名为 JavaScriptTestRunner),用于自动化内部应用程序的测试,该应用程序需要耗费大量的手工工作。多年来,随着他意识到该程序的潜力,它演变成了 Selenium-core 并开源。然后,通过多位贡献者实现了许多功能,例如:

  • Selenium IDE:它支持通过录制和回放功能运行自动化测试
  • Selenium Grid:一种强大的功能,可以执行并行测试,以将测试执行时间减少到最低限度
  • Selenium 2:这是 Selenium 1 和 Webdriver 的合并,形成了我们今天所知道的工具。

自 Selenium 2 以来,它获得了很大的关注度,其受欢迎程度迅速上升,这可以归因于几个关键因素,这些因素改变了游戏规则:

  • 开源:Selenium 是开源的,这意味着它可以免费使用,并有一个庞大的社区可以帮助您解决遇到的任何问题,并有许多贡献者和用户。这导致了持续的改进和更新。
  • 跨浏览器兼容性:Selenium 支持各种网络浏览器,如 Chrome、Firefox、Safari、Edge 和 Internet Explorer,使其成为网络应用程序测试的通用选择。
  • 多种编程语言:Selenium 兼容多种编程语言,包括 Java、Python、C#、Ruby、JavaScript 和最近的 Kotlin。测试自动化工程师可以选择他们喜欢的语言进行测试自动化。
  • 广泛采用:许多组织和公司已将 Selenium 纳入其测试自动化套件中,这导致了大量的资源、教程和支持在线可用。(现在,我自己也为我的雇主的公司管理着一个 Selenium 套件 😉)
  • 与测试框架的集成:Selenium 可以与流行的测试框架如 TestNG 和 Cucumber 集成,从而实现结构化的测试用例管理和报告。
  • 并行性:Selenium 使用 Selenium Grid 支持强大的测试用例并行性,这大大减少了执行时间。

Selenium 在 2023 年的现状:已死还是未死?

你应该知道的python自动化脚本

www.freecodecamp.org是我密切关注的免费学习编程的网站,里面不定期会有高质量且最新的各种编程以及技术教程,今天偶然在freecodecap看到一篇讲python进行日常自动化的帖子,原文在这里https://www.freecodecamp.org/news/python-automation-scripts/,觉得有点意思,顺便就把里面的内容拿出来分享和评论一下。

自动校对

# Python Proofreading
# pip install lmproof
import lmproof
def proofread(text):
    proofread = lmproof.load("en")
    correction = proofread.proofread(text)
    print("Original: {}".format(text))
    print("Correction: {}".format(correction))

proofread("Your Text")

说实话,似乎用不上。

自动随机播放音乐

import random, os
music_dir = 'E:\\music diretory'
songs = os.listdir(music_dir)

song = random.randint(0,len(songs))

# Prints The Song Name
print(songs[song])

os.startfile(os.path.join(music_dir, songs[0]))

思路很好,不过似乎也用不上。

pdf 转 csv


import tabula

filename = input("Enter File Path: ")
df = tabula.read_pdf(filename, encoding='utf-8', spreadsheet=True, pages='1')

df.to_csv('output.csv')

需要pip install tabula,在做数据处理的时候就很有用了,因为有些站点的收据下载的格式默认就是 pdf 的。

自动压缩照片

import PIL
from PIL import Image
from tkinter.filedialog import *

fl=askopenfilenames()
img = Image.open(fl[0])
img.save("output.jpg", "JPEG", optimize = True, quality = 10)

需要安装 PIL(Python Imaging Library) ,在归档的时候应该有些用处。

playwright会成为下一个selenium吗?

playwright 是微软推出的一款 e2e(端到端)测试工具,支持多种语言及浏览器,那么它会成为下一个 selenium 吗?前几天看到外国的一篇文章发表了其观点,这里翻译了一下并夹杂了一点点的私货,希望可以对大家所有帮助。

selenium 作为浏览器自动化项目来说是非常成功的存在。Selenium 现在已经被下载了几百万次,并继续在全球范围内被广泛接受和使用。

Selenium 的成功的原因

  1. Selenium 是开源的,支持多种(如 Java、C#、Js、Python、Ruby、Perl 等),支持所有的浏览器(chrome、firefox、edge、ie、safari、opera 等),可以在多种操作系统(Windows、MAC、Linux)上运行。
  2. Selenium 功能强大–它可以做 web 测试,也能做跨浏览器兼容性测试。另外 selenium 设计的初衷是浏览器的自动化,所以除了用作测试之外,selenium 还在 web 自动化操作领域有所建树。
  3. Selenium 有一个庞大的用户社区,可以帮助你快速入门。
  4. 与其他开源工具相比,Selenium 非常稳定,它的实现甚至成了标准的 w3c 协议。
  5. 最后,Selenium 社区是充满活力的,定期举行许多活动和研讨会,你可以与志同道合的人讨论最新的工具和技术。

playwright 会成为下一个 selenium 吗?

考虑到现代 Web 应用自动化,Selenium WebDriver 似乎是最受欢迎的工具之一,然而,像 Playwright、Puppeteer、Cypress 这样的替代工具正在出现,并争取在一段长时间之后能对其进行超越。

Playwright 是一个 JavaScript 框架,支持在前端实现 Web 应用程序的自动化。它在后端使用 Node.js,就像 Puppeteer 那样。它扩展了该框架,为用户提供了编写端到端测试或隔离测试应用程序特定部分所需的所有工具。

支持使用包括 Java、Js、C#、Python 在内的语言编写测试用例,并像 Selenium WebDriver 一样在任何浏览器和任何操作系统上运行。它是开源的,很容易使用,支持单兵作战和团队协同。

在 UI 自动化领域,Playwright 能够成为下一个 Selenium 的主要原因有以下七个方面。

  • Playwright 得到了微软的支持,其作者来自 Puppeteer(谷歌)团队,因此 playwright 可以吸收 Puppeteer 积极的方面。另外,它已经了一些版本来支持多种编程语言,社区的反馈也非常积极。简而言之微软的钞能力和干爹属性使其相对其他开源项目来说可能会有更多的持续性。

自动化测试覆盖率要到多少才算足够

本文非原创,翻译自https://qahiccupps.blogspot.com/2021/09/693-ok.html

“我们的测试用例中有多少是自动化的?”

这个问题有很多内容,特别是当它是监控测试状态的指标的时候。这也不是我第一次被问到。根据我的经验,当有人提出这个问题时,可能是因为(a)他们听说过它,(b)测试用例的数量是可数的,并且(c)他们的任务是提供一个管理层可以接受的数字,并且每月向大量不会看它的人发邮件做 ppt,然后阐述自动化“测试”的价值。

如果这听起来很愤世嫉俗……好吧,我想是的。

但是,并不意味着我对了解您的需求并试图帮助你获得可以你需求的东西不感兴趣。

我们能谈谈你的追求吗?为什么?

我们可以?太好了!

我会开始。我对这个问题的一些考量是:

  • 自动化测试覆盖率似乎被认为是我们测试的一种衡量标准
  • 这样的数字不会说明做过的测试的价值
  • 测试用例的定义没有实际意义
  • …而且,不管它们是什么,测试用例只是我们测试的一部分
  • 有一个隐含的假设,即自动化程度越高越好
  • …但自动化有其自身的风险
  • …而且,无论自动化意味着什么,自动化测试用例只是我们测试自动化的一部分

如果我看看我们的测试方式,以及我们可能称之为测试用例的内容,我现在可以想到三种方式来回答您的问题:

  1. 从我认为问题的意图来看,我们没有测试用例。我们所有正在进行的测试都是探索性测试,虽然我们可能会用自动化的方式记录测试结果,测试完成以后我们把现存的用例转换成自动化是没有意义的,我们标记为得分为 0%。
  2. 出于练习的目的,我准备将回归测试用例集中的每个断言描述为一个测试用例。因为它们将是我们唯一的测试用例,而且它们都是自动化的。得分 100%!
  3. 好的,我们在测试用例管理系统中有一些项目。这些是历史的发布验证记录,(大多数)测试团队以外的人在我们发布之前会进行这些检查。我更喜欢将它们视为检查点,但我很现实,并且知道我的一些同事只是想遵循步骤。相对于“自动化测试用例”的数量,它们很少,但如果我们将它们包括在我们的计算中,我们会将分数降低到 99%。

这些答案对我们中的任何一个来说似乎都不是很令人满意,是吗?

对我来说,这种指标充其量只涵盖了我们所做工作的一小部分,其背后的假设非常值得怀疑。对您而言,该指标的重要性不及某个合理的数字,该数字可以在 ppt 中用来量化测试的最终效果。对此我也有一些想法:

  • 对我来说,测试是知识性的工作,因此很难用简单的数字来衡量
  • 测试不是独立于其他产品开发活动而存在的
  • 如果没有创建测试用例等人工产出物的话我们也可以完成良好的测试
  • 没有经过对话交流和正当理由而强加的指标可能会受到怀疑
  • 强加的指标可能会有被造假的风险
  • 从产出物(bug 列表,用例设计)开始是本末倒置
  • … 最好先问你想测量的指标是什么以及为什么

那么,例如,是否希望衡量客户对产品的满意度?是为了衡量测试的贡献吗?是否要查看时间花在了企业想要停止的活动上?是寻找瓶颈吗?或者是其他东西?如果我们同意使用某种指标,我们如何向测试人员保证他们没有受到不公正的评价,并且他们不应该为了使数字看更好而修饰或者歪曲他们的工作实践?

我们需要的不仅仅是花言巧语。想象一下,你被告知你的表现将根据你发送的电子邮件数量来衡量,你会如何反应?你会在讥讽它的同时但还是发送更多的电子邮件吗?您会发送电子邮件而不是进行丁丁或者是企业微信的沟通吗?您会关心对您、他人和企业的潜在不利影响吗?别人怎么能说服你采取不同的行为?最后,您是否真的希望以良好的意图研究合理的指标并根据结果采取行动?如果是这样,那么我将尽我所能帮助获得一些合理的东西,有明确的警告,公平的,透明的,承认其收集涉及的混乱,可以有效地从数据中得出我们有,这在商定的误差范围内,这反映了我们正在做的工作。如果没有,那么我会问你什么样的数字会更好的反映出实际的工作效果?我会简单地告诉你:让我们说 69.3%,好吗?

作者使用的英文没有那么通俗,加上翻译能力有限,所以最后可能需要简单的提炼一下文章的观点

  • 自动化测试的覆盖率应该不能作为汇报测试效果的指标
  • 测试的目的不是为了产出好看的数据或者指标
  • 不合理的指标会造成不合理的结果而忽略了测试工作的实质

索引构造与信息检索 让ChatGPT成为Selenium问答助手

这是 chatgpt 为我生成的 3 个标题,我选了第 3 个。

  1. 利用 Langchain 和 GPT 实现 Selenium 机器人自动问答
  2. 向量化存储和检索:如何用相似度搜索匹配 Selenium 知识?
  3. 索引构造与信息检索:让 ChatGPT 成为 Selenium 问答助手

之前有很多同学会问我一些有关 selenium 的问题,因为精力有限,不能一一回答。最近正好 chatgpt 为代表的生成式 ai 非常火爆,那么我们能不能训练一个有 selenium 知识的 机器人帮我回答问题呢?人的时间有限,但是机器人可以一直在线工作,妥妥的劳模了。

经过一番调研,我发现 langchain 这个库也许可以祝我一臂之力。

整体思路

整理思路很简单,就是 gpt 是预先训练好的模型,有自己的先见知识,这也是为什么我们问它问题它会给出答案的原因,因为它的模型里就固化了这些知识。然而 gpt3 模型用的数据应该是截止到 2021 年的,也就是 2 年多之前的数据了。尽管 selenium 总体得带速度不快,但这两年也多多少少发生了一些变化,直接用 gpt 模型的先见知识可能会造成一些回答不准确的情况。

所以我们可以用 gpt 的两大能力,而不是先见知识。

  • 推断的能力。给出一些上下文,让 gpt 总结和推断问题的答案
  • 生成内容的能力

所以现在问题就变成了如何给 gpt”灌“入最近的 selenium 知识?

其实我们可以在 gpt 的 prompt 里面加上一些实时的准确的上下文,然后让 gpt 去根据上下文内容实时的生成问题的答案,比如下面这个 prompt

你是selenium问答机器人,你的任务是根据我提供的selenium相关信息来回答用户提出的问题。忘掉你之前的学到的知识,只用我提供的信息去回答。如果问题超出了我提供的信息范围,你就回答不知道。

==============
selenium的一些最新的介绍
...
...
...
==============
问题:selenium是什么?

这样一来任务就变成了如何根据用户的问题搜索相关的 selenium 知识? 这里就要用到向量化存储和检索了。