什么是测试脚本?如何编写(附示例)

⚡ 智能摘要

软件测试中的测试脚本是一组逐行执行的指令,它驱动应用程序并检查每个步骤。本指南涵盖三种构建方法、一个可重用的模板和一个可运行的示例。 Selenium 例。

  • 📝 核心定义: 脚本会说明要执行的每项交易、要输入的确切参数以及每一步的预期结果。
  • 🎛️ 三种构建方法: 录制和回放、关键字或数据驱动的脚本编写,以及直接用编程语言编写代码。
  • 🧱 语言自由: 脚本语言不必与应用程序语言一致,因此 Java 产品可进行测试 Java脚本或 Python.
  • 📋 模板规范: 标准模板固定了 ID、前提条件、测试数据、步骤、预期结果和状态字段。
  • 脚本 vs 案例: 测试用例是手动执行的逐步操作程序,而测试脚本是由工具自动执行的。
  • 质量规则: 保持每个脚本清晰,每个步骤只限制一个操作,并从真实用户的角度设计路径。

什么是测试脚本

软件测试中的测试脚本是什么?

A 测试脚本 这是对验证被测应用程序所需执行的系统事务的逐行描述。它列出了要执行的每个步骤以及每个步骤的预期结果。

由于脚本是可执行的,因此可以在多个设备和构建版本上系统地重复运行同一个脚本。一个可用的脚本总是会记录实际输入的内容和预期输出。

如何编写测试脚本

测试脚本
测试脚本

创建测试脚本有三种不同的方法:

记录和播放

在这种方法中,测试人员完全不需要编写任何代码,只需记录用户的操作即可。但之后仍然需要编写代码来修复任何错误或微调自动化行为。

这种方法比从头编写完整的测试脚本更简单,因为您已经有了完整的代码。它主要用于简化的编程语言,例如 VBScript。

关键词或数据驱动脚本

在这种方法中,测试人员和开发人员之间有明确的区分。在数据驱动脚本中,测试人员使用关键字定义测试,而无需了解底层代码。

在这里,开发人员的工作是实现关键字的测试脚本代码并在需要时更新此代码。因此,在这种方法中,测试人员无需担心系统。但是,对于您想要自动测试的任何新功能,他们将高度依赖开发资源。

用编程语言编写代码

如果您选择这种方法,通常仍然可以进行录制和回放,以生成剧本的初稿。

然而,测试人员迟早需要超越录制和回放的阶段,学习手动编写简单的脚本。重要的是要明白,你可以选择你的 程式语言 即使你的申请是用 Java.

然而,这并不意味着你需要用 Java,这可能很难学习。相反,你可以用更简单的语言编写测试脚本,例如 JavaScript 或 Ruby(或任何您希望使用的更简单的语言)。

测试脚本示例

例如,要检查网站上的登录功能,您的测试脚本可能会执行以下操作:

  • 指定自动化工具如何在登录屏幕中定位“用户名”和“密码”字段。比如说,通过它们的 CSS 元素 ID。
  • 加载网站主页,然后点击“登录”链接。确认出现的登录屏幕以及“用户名”和“密码”字段可见。
  • 输入用户名“Charles”和密码“123456”,然后找到“确认”按钮并点击它。
  • 他们需要指定用户如何找到登录后出现的欢迎屏幕的标题 - 例如通过其 CSS 元素 ID。
  • 验证欢迎屏幕的标题是否可见。
  • 阅读欢迎屏幕的标题。
  • 确认标题文本等于“欢迎查尔斯”。
  • 如果标题符合预期,则记录测试通过;否则,记录测试失败。

示例测试脚本 Selenium - Java

上面的要点列表用简单的英语描述了一个登录测试。下面是使用可执行脚本编写的相同测试。 Selenium WebDriver 和 JUnit每个要点对应一行或两行代码。

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.junit.Assert;
import org.junit.Test;

public class LoginTestScript {

    @Test
    public void validLoginShowsWelcomeMessage() {
        // Step 1: start the browser and open the site
        WebDriver driver = new ChromeDriver();
        driver.get("https://demo.guru99.com/test/login.html");

        // Step 2: locate the fields by their element ids
        driver.findElement(By.id("email")).sendKeys("Charles");
        driver.findElement(By.id("passwd")).sendKeys("123456");

        // Step 3: submit the form
        driver.findElement(By.id("SubmitLogin")).click();

        // Step 4: read the welcome title and assert the expected result
        String actual = driver.findElement(By.id("welcome")).getText();
        Assert.assertEquals("Welcome Charles", actual);

        driver.quit();
    }
}

真实剧本与录制好的剧本有三个区别:

  • 定位符是明确的。 元素是通过 ID 而不是屏幕位置来查找的,因此脚本不会因布局更改而失效。
  • 断言即是测试。 如果没有 assertEquals,脚本只会执行点击操作;断言决定的是操作是否成功。
  • 清理工作始终在运行。 driver.quit() 会释放浏览器,否则运行失败会留下进程。

任何语言都适用相同的结构。 Python - Selenium 调用变为 driver.find_element(By.ID, “email”) 并断言 actual == “Welcome Charles”。

创建测试脚本的技巧

以下是创建测试脚本的一些重要提示:

保持清晰

你的测试脚本应该足够清晰易懂,无需他人帮助即可运行。如果测试人员需要不断向项目负责人询问应用程序的详细信息,就会浪费时间和资源。

为避免这种情况,请确保测试脚本中的每个步骤都清晰、简洁且连贯。这有助于保持测试过程的顺利进行。

保持简单

您应该创建一个测试脚本,其中只包含一个测试人员需要执行的特定操作。这可确保每个功能都得到正确测试,并且测试人员不会错过软件测试过程中的步骤。

仔细考虑

要编写测试脚本,您需要站在用户的角度来决定测试哪些路径。您应该有足够的创造力来预测用户在运行系统或应用程序时将使用的所有不同路径。

何时使用测试脚本方法?

以下是使用测试脚本的原因。

  • 测试脚本是确认没有跳过任何步骤并且结果与约定的测试计划相符的最可靠方法。
  • 预先编写好的脚本在执行过程中出错的几率要小得多。
  • 测试人员自由探索产品时,很容易错过一些功能。
  • 测试人员也可能错误地认为某个函数产生了预期的结果,而实际上并没有。
  • 当用户表现重要且具体时它特别有用。

什么是测试脚本模板?

测试脚本模板是一个可重用的预格式化文档,其中包含项目中每个脚本都必须填写的字段。标准化模板决定了测试的详细程度,并确保审阅者无需猜测每个步骤的含义。

一个可用的模板包含以下字段:

领域 目的
脚本 ID 用于唯一标识符 trac能力和缺陷关联
标题 一行说明脚本验证的内容
模块或功能 受测应用程序的区域
前提条件 说明系统必须在第一步运行之前处于运行状态。
测试数据 精确的输入,包括凭据和边界值
步骤 编号操作,每步一个操作
预期结果 每一步的可观察结果
实际结果 执行时填写
状态 通过、失败、阻塞或不运行
作者和日期 所有权和版本历史记录

测试用例和测试脚本之间的区别

以下是测试用例和测试脚本的主要区别:

测试用例 测试脚本
测试用例 是用于测试应用程序的逐步过程。 测试脚本是一组用于自动测试应用程序的指令。
测试用例用于手动测试环境。 测试脚本用于自动化测试环境。
它是手动完成的。 它是按照脚本格式完成的。
测试用例模板包括测试ID、测试数据、测试流程、实际结果和预期结果等。 在测试脚本中,我们可以使用不同的命令来开发脚本。

测试脚本的优点和缺点

编写脚本是一种投资。了解它的回报点,就能告诉你应该首先自动化哪些测试。

优势

  • 可重复: 每次构建都执行相同的步骤,这使得回归测试成为可能。
  • 快速大规模应用: 原本需要测试人员一天才能完成的测试套件,现在几分钟就能运行完毕,甚至可以通宵运行。
  • 一致: 脚本永远不会感到厌倦,不会跳过任何步骤,也不会误读结果。
  • 跨平台: 一个脚本可以在不同的浏览器、设备和操作系统上重放。
  • CI 就绪: 脚本会接入构建管道,以便自动验证每次提交。

缺点

  • 高昂的初始投入成本: 编写和调试脚本所花费的时间远远超过手动运行一次测试的时间。
  • 维护负担: 元素 ID 的更改或页面的重新设计会破坏脚本,这些脚本必须进行修复。
  • 技能要求: 除了录制和回放之外,团队还需要具备编程能力。
  • 对意外视而不见: 脚本只会检查它被告知要检查的内容,因此视觉和可用性缺陷会被忽略。
  • 虚假的自信: 一套浅薄的绿色脚本可以掩盖覆盖范围上的真正漏洞。

实用原则​​:将稳定、重复、高风险的路径编写成脚本,而将探索性和可用性工作保持手动进行。

测试脚本:要点总结

  • 测试脚本是指逐行描述,其中包含有关应执行以验证被测应用程序或系统的系统事务的信息。
  • 测试用例是用于测试应用程序的逐步过程,而测试脚本是一组用于自动测试应用程序的指令。
  • 创建测试脚本有三种方法:1)录制/回放;2)关键字/数据驱动脚本;3)编写脚本。 Code 使用编程语言。
  • 您的测试脚本应该清晰,并且您应该创建的测试脚本应该只包含测试人员要采取的一个特定操作。
  • 测试脚本是确认没有跳过任何步骤并且结果与约定的测试计划相符的最可靠方法。
  • 测试脚本模板是一个可重复使用的格式化文档,其中包含对创建可用测试脚本很重要的预先选择的信息。

常见问题

测试用例是为人工测试人员编写的逐步操作流程。测试脚本是工具自动运行的可执行代码。一个测试用例一旦实现自动化,通常会变成一个测试脚本。

首先录制并回放代码以了解其结构,然后编辑生成的代码。一旦录制的代码失效,就转而手动编写脚本,因为录制的定位器很少能在用户界面更改后保留下来。

任何只需运行一次的内容、每个迭代周期都会变化的内容以及任何需要通过视觉判断的内容。探索性测试、可用性审查和一次性检查,编写脚本的成本都比手动执行更高。

是的。人工智能工具可以将编写的测试用例转换为可运行的脚本,并在元素发生变化时提出自愈定位器。 Rev检查每个生成的断言,因为一个永远不会失败的脚本实际上什么都没测试。

人工智能辅助工具能够检测已更改的元素并自动更新定位器,无需人工干预,从而减少了脚本出错的最常见原因。团队在再次使用该套件之前,仍需审核这些更改。

总结一下这篇文章: