」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 為什麼應該開始在前端測試您的應用程式?

為什麼應該開始在前端測試您的應用程式?

發佈於2024-08-26
瀏覽:119

但这些测试是为了什么?

想象一下,您正在制作巧克力蛋糕,只有在准备好后您才意识到忘记在面团中添加糖,现在怎么办?!将您的应用程序想象成这个蛋糕面糊,未经测试,它甚至可能一开始工作得很好,但在尝试的某个时刻,结果可能不会达到预期的效果。谁保证不会发生这种麻烦?!

Por que você deveria começar a testar sua aplicação no Front-End?

基于这个示例,测试证明了您的代码量,它们确保一切都在正确的位置,即使您决定添加新层或功能覆盖范围。

一般来说,自动化测试基本上是为测试其他代码而构建的代码,以确保应用程序的质量。
由于质量是关键词,因此工程和产品团队中的每个人都必须意识到测试产生的重要性和价值,以便它们能够以自然的方式集成到交付中。

我为什么要测试?

我在这里提出一些理由来说服您立即开始在代码中实施测试:

故障安全代码:测试有助于确保您的代码即使在添加新功能或进行更改后也能正常运行而不会出现错误。

无需恐惧的更改:应用程序维护将更加安全,因为您将能够重构或更新代码,而不必担心破坏某些内容,因为如果出现问题,测试会警告您。

更快的修复:通过自动化测试,您将能够更轻松地纠正问题,节省更多时间

部署过程中减少意外:您能想象刚刚完成部署并已经收到用户的电话,其中出现了可以预测的错误吗?!这些测试可以准确地帮助预防

帮助您和您的 QA 同事: 您是否知道您何时完成该功能并将其传递给 QA 进行测试,然后他给您一份包含 357 个需要修复的问题的报告?这个问题也会减少,因为你已经预测到了他可能会遇到的大部分错误

测试有哪些类型?

前端需要开发的测试有很多种类型,但今天我将重点关注其中三种:用户界面测试(UI)、功能测试(端到端)和验证测试举例说明其中每一个,我将使用测试库为 React.js 应用程序中的简单登录屏幕创建测试。

用户界面 (UI) 测试

用户界面 (UI) 测试检查组件是否按预期呈现,并且除了基于呈现之外,它们还检查重要元素的存在,例如表单字段、按钮和标签。

it('should render login form', () => {
  render();
  expect(screen.getByLabelText(/email/i)).toBeInTheDocument();
  expect(screen.getByLabelText(/senha/i)).toBeInTheDocument();
  expect(screen.getByRole('button', { name: /login/i })).toBeInTheDocument();
});

测试内容: 此测试确保 LoginForm 组件呈现基本的界面元素:电子邮件和密码字段以及登录按钮。 screen.getByLabelText 按关联标签搜索元素, screen.getByRole 按按钮的文本和功能搜索按钮。

功能测试(端到端)

功能测试或端到端(E2E)测试,从用户的角度验证应用程序的整个功能,模拟与界面的真实交互,例如填写表单和单击按钮,并评估是否应用程序按预期响应交互。

it('should call onLogin with the username and password when submitted', async () => {
  const handleLogin = jest.fn();
  render();

  fireEvent.change(screen.getByLabelText(/email/i), {
    target: { value: '[email protected]' },
  });
  fireEvent.change(screen.getByLabelText(/senha/i), {
    target: { value: '123456' },
  });

  await fireEvent.click(screen.getByRole('button', { name: /login/i }));

  await waitFor(() => {
    expect(handleLogin).toHaveBeenCalledWith({
      email: '[email protected]',
      password: '123456'
    })
  })

  await waitFor(() => {
    expect(handleLogin).toHaveBeenCalledTimes(1)
  })

});

正在测试什么: 这里,通过填写电子邮件和密码字段,然后单击登录按钮来模拟用户与登录表单的交互。该测试还检查 onLogin 函数是否使用正确的数据调用,并且仅被调用一次。

验证测试

验证测试确保应用程序验证无效输入并显示适当的错误消息。这些测试对于验证表单是否有效处理不正确的数据并向用户提供足够的反馈非常重要。

test('should show error messages for invalid inputs', async () => {
  render();

  fireEvent.change(screen.getByLabelText(/email/i), {
    target: { value: 'invalid-email' },
  });
  fireEvent.change(screen.getByLabelText(/senha/i), {
    target: { value: '123' },
  });

  await fireEvent.click(screen.getByRole('button', { name: /login/i }));

  expect(await screen.findByText(/Email inválido/i)).toBeInTheDocument();
  expect(await screen.findByText(/A senha deve ter pelo menos 6 caracteres/i)).toBeInTheDocument();
});

正在测试什么: 这里我们检查当电子邮件和密码字段填写无效数据时表单是否显示适当的错误消息。我们通过检查是否显示预期的错误消息来模拟输入不正确的值。

你明白为什么要测试吗?

在一个用户体验和软件质量优先的世界中,前端测试在确保我们的应用程序不仅正常运行,而且提供流畅、无错误的体验方面发挥着关键作用。

通过将这些测试集成到您的开发流程中,您不仅可以在问题变得令人头疼之前预防问题,还可以构建更可靠、更有弹性的代码库。每种类型的测试都有不同的验证层,它们一起形成一个大的安全层,有助于确保应用程序的质量和功能。

请记住,就像蛋糕配方中的每种成分都有其至关重要的作用一样,每种类型的测试在开发过程中都有其特定的功能,开发平衡的测试组合超出了推荐的做法,对于任何人来说都是必要的致力于提供高质量软件的团队。

Por que você deveria começar a testar sua aplicação no Front-End?

因此,下次您开发新功能或修复错误时,请将测试视为您不可或缺的盟友。它们是为用户提供更强大、更可靠、最重要的是更令人满意的应用程序的关键。

版本聲明 本文轉載於:https://dev.to/larissatardivo/por-que-voce-deveria-comecar-a-testar-sua-aplicacao-no-front-end-2aie?1如有侵犯,請聯絡study_golang@163 .com刪除
最新教學 更多>
  • 為什麼 PhpMyAdmin 在 Ubuntu 12.04 上給出「MySQLi 擴充缺失」錯誤?
    為什麼 PhpMyAdmin 在 Ubuntu 12.04 上給出「MySQLi 擴充缺失」錯誤?
    PhpMyAdmin 錯誤:MySQLi 擴充缺失在 Ubuntu 12.04 遇到 PhpMyAdmin 問題?儘管安裝了 Apache2、PHP5、MySQL 和 PhpMyAdmin,您還是遇到了「mysqli 擴充遺失」錯誤。 儘管您已取消註解 php.ini 中的「extension=my...
    程式設計 發佈於2024-11-07
  • 如何使用 java.net.URLConnection 將檔案和附加參數上傳到 HTTP 伺服器?
    如何使用 java.net.URLConnection 將檔案和附加參數上傳到 HTTP 伺服器?
    在 Java 中使用附加參數將檔案上傳到 HTTP 伺服器將檔案上傳到 HTTP 伺服器是許多應用程式的常見需求。但是,有時也需要隨文件一起傳遞附加參數。這是一個允許您在不使用外部庫的情況下發送文件和參數的解決方案:java.net.URLConnection 和Multipart/Form-Dat...
    程式設計 發佈於2024-11-07
  • 如何在 PHP 中逐行讀取和處理文字檔?
    如何在 PHP 中逐行讀取和處理文字檔?
    在 PHP 中讀取文字檔案:逐步指南許多 Web 開發場景都涉及從文字檔案讀取資料。在 PHP 中,檔案處理函數提供了逐行讀取純文字檔案的便捷方法。讓我們分解一下使用 PHP 讀取文字檔案的過程。 讀取文字檔案的程式碼:以下PHP 程式碼片段示範如何讀取文字檔案並逐行處理其內容:<?php /...
    程式設計 發佈於2024-11-07
  • 我離不開的生產力工具(獎勵)
    我離不開的生產力工具(獎勵)
    大家好,你們的孩子 Nomadev 帶著另一篇貼文回來了!今天,我很高興與大家分享一些我每天使用的超酷的人工智慧工具。這些工具已成為我日常工作的重要部分,幫助我保持井井有條、有效率並完成更多工作。 在當今快節奏的世界中,我們都希望提高生產力和效率。借助人工智慧,有大量工具可以幫助我們管理任務、簡化...
    程式設計 發佈於2024-11-07
  • 在 Go/Templ 中製作一個乾淨、友好的 Spinner
    在 Go/Templ 中製作一個乾淨、友好的 Spinner
    无用的 HTML 你们可能认为在 HTML 中制作一个一致、干净且专业的旋转框是一项简单的任务...但是,令我们失望的是,没有标准的属性来告诉输入它应该只接受整数或小数值,所有的输入过滤都必须是JS。哎呀! 我将使用 Go、a-h/Templ、Tailwind 和我心爱的 Alpi...
    程式設計 發佈於2024-11-07
  • 您可以在沒有資料庫連線的情況下轉義字串以確保資料庫安全嗎?
    您可以在沒有資料庫連線的情況下轉義字串以確保資料庫安全嗎?
    在沒有資料庫連線的情況下轉義字串以確保資料庫安全測試與資料庫互動的程式碼時,透過正確轉義使用者輸入來防止SQL注入攻擊非常重要。然而,為每個測試連接到資料庫可能效率很低。有沒有辦法在沒有活動資料庫連線的情況下轉義字串? 沒有連接轉義的限制不幸的是,在沒有資料庫連線的情況下不可能可靠地轉義字串。 my...
    程式設計 發佈於2024-11-07
  • Entropix:最大化推理效能的取樣技術
    Entropix:最大化推理效能的取樣技術
    Entropix:最大化推理效能的取樣技術 根據 Entropix README,Entropix 使用基於熵的取樣方法。本文講解了基於熵和變熵的具體採樣技術。 熵和變熵 讓我們先解釋熵和變熵,因為它們是確定採樣策略的關鍵因素。 熵 在資訊理論中...
    程式設計 發佈於2024-11-07
  • 重疊方法支援多態性
    重疊方法支援多態性
    方法涵蓋: 這不僅僅是一個命名問題,而是 Java 的一個基本特性。 它是基於動態方法調度的概念。 動態方法調度: 是在運行時而非編譯時解決對重疊方法的呼叫的機制。 允許在 Java 中實現多態性。 運作原理: 超類別引用變數可以引用子類別物件。 當透過超類別引用呼叫重寫的方法時,要執行的...
    程式設計 發佈於2024-11-07
  • 如何對 Move_uploaded_file() 函數進行故障排除?
    如何對 Move_uploaded_file() 函數進行故障排除?
    Move_uploaded_file() 函數故障排除move_uploaded_file() 函數在檔案上傳機制中扮演至關重要的角色。然而,當遇到非功能性問題時,細緻的故障排除是必不可少的。 要解決這個問題,第一步是啟動 PHP 錯誤回報。這將顯示來自 move_uploaded_file() 函...
    程式設計 發佈於2024-11-07
  • 如何解決使用 UNION 時出現的「Select 語句中的不同欄位計數」錯誤?
    如何解決使用 UNION 時出現的「Select 語句中的不同欄位計數」錯誤?
    錯誤:Select 語句中的不同列計數執行使用UNION 運算子的查詢時,必須確保涉及的所有單獨SELECT 語句都遵守兩個基本標準:匹配列數:每個SELECT 語句必須在檢索的結果集中產生相同數量的列。 資料一致型別: 不同 SELECT 語句中對應列的資料型別應對齊。 問題分析考慮提供的查詢:S...
    程式設計 發佈於2024-11-07
  • 為什麼Python專案中的相對路徑會導致檔案未找到錯誤?
    為什麼Python專案中的相對路徑會導致檔案未找到錯誤?
    在 Python 專案中使用相對路徑存取檔案在 Python 專案中操作檔案時,為了方便起見,通常會使用相對路徑。然而,它們的行為可能變得不明確,特別是在處理多層次專案結構時。 考慮以下專案佈局:project /data test.csv /package ...
    程式設計 發佈於2024-11-07
  • Spring Boot初始化後如何執行程式碼?
    Spring Boot初始化後如何執行程式碼?
    Spring Boot初始化後執行程式碼在Spring Boot應用程式中,您可能會遇到需要在應用程式初始化後執行特定功能的情況。一旦應用程式功能齊全,這對於監視任務或執行其他操作通常是必要的。本文探討了利用 ApplicationReadyEvent 事件解決此挑戰的方法。 使用 Applicat...
    程式設計 發佈於2024-11-07
  • 如何使用 JavaScript 偵測 VPN
    如何使用 JavaScript 偵測 VPN
    在我們日益互聯的世界中,VPN(虛擬私人網路)既帶來了優勢,也帶來了挑戰。雖然它們幫助用戶維護隱私和安全,但它們也可能被用於惡意目的。 我們將深入探討如何使用 JavaScript 和 fetch API 在 Web 應用程式中實作 VPN 偵測。您可以使用任何您想要的API。 ...
    程式設計 發佈於2024-11-07
  • 如何使用Apache FOP在PDF文件中正確顯示漢字?
    如何使用Apache FOP在PDF文件中正確顯示漢字?
    Apache FOP 漢字顯示問題使用Apache FOP 列印PDF 文件時,漢字可能會顯示為“####”儘管安裝了必要的語言文件。此問題是由於預設配置中缺乏字體支援所引起的。 要解決此問題,需要三個步驟:步驟1:在FO 檔案中指定字體系列使用font-family 屬性指示所需的字體。例如:&l...
    程式設計 發佈於2024-11-07

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3