原文地址:https://www.enterprisedb.com/blog/feature-test-automation-pgadmin-4
原文作者:Yogesh Mahajan
pgAdmin 4 是 PostgreSQL 最流行和功能最丰富的开源管理和开发平台。 pgAdmin 可以在桌面模式(单用户)或服务器模式(多用户)下运行。在服务器模式下,可以使用本地操作系统上的浏览器访问 pgAdmin。
pgAdmin 遵循敏捷开发过程,采用迭代和增量开发方法。测试是开发过程的关键部分。 pgAdmin 定期使用可用版本的子集进行测试,以确保高质量的产品。测试套件包括 API 测试、UI 测试(称为功能测试)、单元测试和“resql”测试,这是一个 pgAdmin 特定的测试框架,用于测试 SQL 的逆向工程。
为了在较短的发布周期内获得更好的质量,需要测试自动化。Selenium WebDriver 使用 Python 进行功能测试自动化。功能测试框架目前支持并行测试/跨浏览器测试。未来持续测试需要更快的测试执行。并行测试涉及通过允许同时测试多个操作系统/浏览器组合,并行运行独立测试,以减少整体测试执行时间。扩展测试覆盖范围可最大限度地降低风险,并减少发布具有回退或缺陷产品的机率。
pgAdmin 测试自动化功能
pgAdmin 测试自动化架构

pgAdmin 测试自动化功能具有以下组件 -
1. 网络驱动程序接口(WebDriver API)
webdriver在本地使用浏览器,就像用户在本地或远程使用 Selenium 服务器一样。Selenium WebDriver 指的是语言绑定和单个浏览器控制代码的实现。这通常被称为 WebDriver。 WebDriver 通过驱动程序与浏览器通信。驱动程序是特定于浏览器的,例如谷歌的 Chrome/Chromium 的 ChromeDriver,Mozilla 的 Firefox 的 GeckoDriver 等。驱动程序与浏览器运行在同一系统上。这可能是也可能不是,测试本身正在执行的同一个系统。
2. Python单元测试框架(Framework- Python-unittest)
Webdriver 有一项工作,而且只有一项工作:与浏览器通信。 WebDriver 对测试一无所知:它不知道如何比较事物、断言通过或失败,它当然对报告一无所知。因此,在使用 selenium WebDriver 进行测试自动化时,需要一个测试框架。测试框架负责运行和执行测试中的 WebDriver 和相关步骤。 pgAdmin 使用与 Python 捆绑在一起的内置单元测试框架。在单元测试中,基类提供所有断言方法以及清理和设置例程。此外,python 多线程方法用于一次启动多个测试。
3. Selenoid
WebDriver 与浏览器的通信也可能是通过 Selenium Server 或 RemoteWebDriver 进行远程通信。 RemoteWebDriver 与驱动程序和浏览器在同一系统上运行。远程通信也可以使用 Selenium Server 或 Selenium Grid 进行,两者又与主机系统上的驱动程序通信。
selenoid是使用 Docker 容器启动浏览器的 selenium hub 的实现。 Selenoid 支持并行测试和跨浏览器测试,同时降低了硬件成本,并且无需复杂的 selenium 网格设置。 Selenoid 为每个 selenium 会话(即对浏览器的请求)提供一个短暂的容器,并在会话关闭时立即停止它。每个容器都包含一个特定的浏览器版本、一个支持该版本的相应 WebDriver 二进制文件以及所有必需的依赖项,如字体、图形工具包等。容器在浏览器进程之间提供了足够高的隔离级别,允许在理论上无限数量的不同浏览器版本进行并行测试,具体取决于资源可用性。
Selenoid 还提供视频录制和在线/离线仪表板等功能。它还提供实时预览和与浏览器交互的能力,以帮助开发人员诊断和理解测试失败。
以下是使用 selenoid 进行 pgAdmin 测试自动化的一些片段 -
-
可用的浏览器和配置 -

-
统计和会话 -

-
现场测试执行

-
录像

结论
Selenoid 很受欢迎,并且拥有强大的开发者社区。它为不同的浏览器(包括 Android、Firefox、Chrome 和 Opera)维护了一组预构建的 docker 容器映像,具有多个版本。随着新浏览器版本的发布,浏览器的 docker 容器镜像也随之发布。跨浏览器测试帮助 pgAdmin 减少测试执行时间并增加测试覆盖率。
Yogesh Mahajan 是 EDB 的首席软件工程师。他的核心能力是 Python、Javascript、Java 和云技术 AWS、Openstack 和 Azure。 Mahajan 还是 AWS 认证的解决方案架构师。自 2019 年以来,他一直在开发和测试领域为 pgAdmin 做出贡献。





