Kịch bản kiểm thử là gì? Cách viết kịch bản kiểm thử kèm ví dụ.

⚡ Tóm tắt thông minh

Trong kiểm thử phần mềm, kịch bản kiểm thử là một tập hợp các dòng lệnh có thể thực thi, điều khiển ứng dụng và kiểm tra từng bước. Hướng dẫn này bao gồm ba phương pháp xây dựng, một mẫu có thể tái sử dụng và một kịch bản hoạt động thực tế. Selenium thí dụ.

  • 📝 Định nghĩa cốt lõi: Một đoạn mã kịch bản mô tả từng giao dịch cần thực hiện, dữ liệu đầu vào chính xác cần nhập và kết quả mong đợi của mỗi bước.
  • 🎛️ Ba phương pháp xây dựng: Ghi âm và phát lại, lập trình dựa trên từ khóa hoặc dữ liệu, và viết mã trực tiếp bằng ngôn ngữ lập trình.
  • 🧱 Tự do ngôn ngữ: Ngôn ngữ kịch bản không nhất thiết phải trùng khớp với ngôn ngữ ứng dụng, vì vậy Java sản phẩm có thể được kiểm tra bằng JavaKịch bản hoặc Python.
  • 📋 Nguyên tắc mẫu: Mẫu chuẩn cố định các trường ID, điều kiện tiên quyết, dữ liệu kiểm thử, các bước, kết quả mong đợi và trạng thái.
  • ⚖️ Kịch bản so với trường hợp thực tế: Trường hợp thử nghiệm là một quy trình thực hiện từng bước thủ công, trong khi kịch bản thử nghiệm được thực thi tự động bởi một công cụ.
  • Nguyên tắc chất lượng: Hãy giữ cho mỗi kịch bản rõ ràng, giới hạn mỗi bước chỉ gồm một hành động và thiết kế các đường dẫn từ góc nhìn của người dùng thực tế.

Test Script là gì

Tập lệnh kiểm thử trong kiểm thử phần mềm là gì?

A kịch bản thử nghiệm Đây là bản mô tả từng dòng các giao dịch hệ thống cần thực hiện để xác thực ứng dụng đang được kiểm thử. Nó liệt kê mọi bước cần thực hiện cùng với kết quả dự kiến ​​của mỗi bước.

Vì có thể thực thi được, cùng một kịch bản có thể được chạy lại một cách có hệ thống trên nhiều thiết bị và phiên bản khác nhau. Một kịch bản hữu ích luôn ghi lại cả dữ liệu đầu vào thực tế và kết quả đầu ra dự kiến.

Cách viết một kịch bản kiểm thử

Kịch bản thử nghiệm
Kịch bản thử nghiệm

Có ba cách khác nhau để tạo tập lệnh thử nghiệm:

Ghi và phát lại

Với phương pháp này, người kiểm thử không cần viết bất kỳ đoạn mã nào, chỉ cần ghi lại các thao tác của người dùng. Việc lập trình vẫn cần thiết sau này để sửa chữa bất kỳ lỗi nào hoặc để tinh chỉnh hành vi tự động hóa.

Phương pháp này dễ dàng hơn việc viết một kịch bản kiểm thử hoàn chỉnh từ đầu vì bạn đã có mã hoàn chỉnh. Nó chủ yếu được sử dụng trong ngôn ngữ lập trình đơn giản hóa như VBScript.

Lập trình dựa trên từ khóa hoặc dữ liệu

Trong phương pháp này, có sự tách biệt rõ ràng giữa người thử nghiệm và nhà phát triển. Trong tập lệnh hướng dữ liệu, người kiểm tra xác định thử nghiệm bằng cách sử dụng từ khóa mà không cần biết về mã cơ bản.

Ở đây, công việc của nhà phát triển là triển khai mã script thử nghiệm cho các từ khóa và cập nhật mã này khi cần. Vì vậy, trong phương pháp này, người kiểm thử không cần phải lo lắng về hệ thống. Tuy nhiên, họ sẽ phụ thuộc rất nhiều vào tài nguyên phát triển cho bất kỳ chức năng mới nào mà bạn muốn kiểm tra tự động.

Viết mã trong ngôn ngữ lập trình

Nếu bạn chọn phương pháp này, thông thường bạn vẫn có thể ghi âm và phát lại để tạo bản nháp đầu tiên của kịch bản.

Tuy nhiên, sớm muộn gì thì người kiểm thử cũng cần phải vượt ra khỏi việc ghi âm và phát lại để học cách tự viết các kịch bản đơn giản. Điều quan trọng là phải hiểu rằng bạn có thể lựa chọn cách thức của mình. Ngôn ngữ lập trình ngay cả khi ứng dụng của bạn được viết bằng Java.

Tuy nhiên, điều đó không có nghĩa là bạn cần viết kịch bản kiểm thử của mình bằng Java, có thể khó học. Thay vào đó, bạn có thể viết tập lệnh kiểm tra của mình bằng ngôn ngữ dễ dàng hơn như JavaScript hoặc Ruby (hoặc bất kỳ ngôn ngữ nào dễ sử dụng hơn mà bạn muốn sử dụng).

Ví dụ về tập lệnh kiểm tra

Ví dụ, để kiểm tra chức năng đăng nhập trên một trang web, tập lệnh thử nghiệm của bạn có thể thực hiện như sau:

  • Chỉ định cách công cụ tự động hóa có thể định vị các trường “Tên người dùng” và “Mật khẩu” trong màn hình đăng nhập. Giả sử, bằng ID phần tử CSS của họ.
  • Tải trang chủ của trang web, sau đó nhấp vào liên kết “đăng nhập”. Xác minh rằng màn hình Đăng nhập xuất hiện và các trường “Tên người dùng” và “Mật khẩu” hiển thị.
  • Nhập tên người dùng “Charles” và mật khẩu “123456”, sau đó tìm nút “Xác nhận” và nhấp vào đó.
  • Họ cần chỉ định cách người dùng có thể định vị tiêu đề của màn hình Chào mừng xuất hiện sau khi đăng nhập - chẳng hạn bằng ID thành phần CSS của nó.
  • Xác minh rằng tiêu đề của màn hình Chào mừng có thể nhìn thấy được.
  • Đọc tiêu đề của màn hình chào mừng.
  • Khẳng định rằng văn bản tiêu đề bằng với "Chào mừng Charles".
  • Nếu kết quả phù hợp với kỳ vọng, hãy ghi nhận bài kiểm tra là đạt. Nếu không, hãy ghi nhận là không đạt.

Ví dụ kịch bản kiểm thử trong Selenium với Java

Danh sách gạch đầu dòng ở trên mô tả một bài kiểm tra đăng nhập bằng ngôn ngữ dễ hiểu. Dưới đây là bài kiểm tra tương tự được viết dưới dạng một kịch bản thực thi, sử dụng Selenium WebDriver và JUnitMỗi gạch đầu dòng tương ứng với một hoặc hai dòng mã.

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();
    }
}

Có ba chi tiết tạo nên sự khác biệt giữa một kịch bản thật và một kịch bản đã được ghi âm:

  • Các bộ định vị được chỉ định rõ ràng. Các phần tử được tìm thấy bằng ID chứ không phải bằng vị trí trên màn hình, do đó đoạn mã vẫn hoạt động bình thường ngay cả khi bố cục thay đổi.
  • Lời khẳng định chính là phép thử. Nếu không có assertEquals, đoạn mã chỉ đơn thuần thực hiện thao tác nhấp chuột; chính điều kiện kiểm tra mới quyết định thành công hay thất bại.
  • Quá trình dọn dẹp luôn diễn ra. Phương thức `driver.quit()` sẽ giải phóng trình duyệt, nếu không, quá trình chạy thất bại sẽ để lại các tiến trình con.

Cấu trúc tương tự áp dụng cho mọi ngôn ngữ. Trong Python với Selenium các lệnh gọi trở thành driver.find_element(By.ID, “email”) và khẳng định actual == “Welcome Charles”.

Mẹo tạo Test Script

Dưới đây là một số mẹo quan trọng để tạo tập lệnh thử nghiệm:

Giữ nó rõ ràng

Kịch bản kiểm thử của bạn cần đủ rõ ràng để có thể chạy mà không cần trợ giúp. Nếu người kiểm thử phải liên tục hỏi chủ dự án về chi tiết ứng dụng, thời gian và nguồn lực sẽ bị lãng phí.

Để tránh điều này, hãy đảm bảo rằng mỗi bước trong kịch bản kiểm thử đều rõ ràng, ngắn gọn và mạch lạc. Điều này giúp quá trình kiểm thử diễn ra suôn sẻ.

Giữ cho nó đơn giản

Bạn nên tạo một tập lệnh thử nghiệm chỉ chứa một hành động cụ thể để người thử nghiệm thực hiện. Điều này đảm bảo rằng mỗi chức năng đều được kiểm tra chính xác và người kiểm tra không bỏ lỡ các bước trong quy trình kiểm thử phần mềm.

Hãy nghĩ thật thông suốt

Để viết kịch bản kiểm thử, bạn cần đặt mình vào vị trí của người dùng để quyết định đường dẫn nào cần kiểm thử. Bạn phải đủ sáng tạo để dự đoán tất cả các đường dẫn khác nhau mà người dùng sẽ sử dụng khi chạy hệ thống hoặc ứng dụng.

Khi nào nên sử dụng Phương pháp tiếp cận Test Script?

Dưới đây là những lý do nên sử dụng Test Script.

  • Kịch bản kiểm thử là cách đáng tin cậy nhất để xác nhận rằng không có bước nào bị bỏ qua và kết quả phù hợp với kế hoạch kiểm thử đã được thống nhất.
  • Một kịch bản được chuẩn bị kỹ lưỡng sẽ giảm thiểu đáng kể khả năng xảy ra lỗi trong quá trình thực thi.
  • Khi người dùng thử tự do khám phá sản phẩm, họ rất dễ bỏ sót các tính năng.
  • Người kiểm thử cũng có thể cho rằng một hàm đã tạo ra kết quả như mong đợi trong khi thực tế không phải vậy.
  • Nó đặc biệt hữu ích khi hiệu suất của người dùng là quan trọng và cụ thể.

Mẫu tập lệnh thử nghiệm là gì?

Mẫu kịch bản kiểm thử là một tài liệu được định dạng sẵn, có thể tái sử dụng, chứa các trường mà mọi kịch bản trong dự án của bạn phải điền vào. Việc chuẩn hóa mẫu này quyết định mức độ chi tiết của các bài kiểm thử và đảm bảo rằng không người đánh giá nào phải đoán xem một bước cụ thể có nghĩa là gì.

Một mẫu khả thi bao gồm các trường sau:

Phần Mục đích
Mã số kịch bản Mã định danh duy nhất được sử dụng cho trackhả năng và liên kết khuyết tật
Yêu sách Một dòng duy nhất nêu rõ nội dung mà kịch bản xác thực.
Mô-đun hoặc tính năng Khu vực ứng dụng đang được thử nghiệm
Điều kiện tiên quyết Trạng thái hệ thống phải như thế nào trước khi bước đầu tiên được thực thi?
Dữ liệu kiểm tra Thông tin đầu vào chính xác, bao gồm thông tin xác thực và giá trị giới hạn.
Các bước Các thao tác được đánh số, mỗi bước một thao tác.
Kết quả mong đợi Kết quả quan sát được của mỗi bước
Kết quả thực tế Được điền vào lúc thực thi
Trạng thái Đạt, không đạt, bị chặn hoặc không chạy
Tác giả và ngày tháng Lịch sử quyền sở hữu và phiên bản

Sự khác biệt giữa Test Case và Test Script

Dưới đây là những điểm khác biệt chính giữa trường hợp kiểm thử và kịch bản kiểm thử:

Trường hợp thử nghiệm Tập lệnh thử nghiệm
Kiểm tra trường hợp là một quy trình từng bước được sử dụng để kiểm tra một ứng dụng. Kịch bản kiểm thử là một tập hợp các hướng dẫn để kiểm thử một ứng dụng một cách tự động.
Các trường hợp thử nghiệm được sử dụng cho môi trường thử nghiệm thủ công. Test Script được sử dụng trong môi trường thử nghiệm tự động hóa.
Nó được thực hiện bằng tay. Nó được thực hiện theo định dạng kịch bản.
Mẫu trường hợp kiểm thử bao gồm ID kiểm thử, dữ liệu kiểm thử, quy trình kiểm thử, kết quả thực tế và dự kiến, v.v. Trong Test Script, chúng ta có thể sử dụng các lệnh khác nhau để phát triển tập lệnh.

Ưu điểm và nhược điểm của kịch bản kiểm thử

Viết kịch bản tự động là một khoản đầu tư. Biết được nó mang lại lợi ích ở đâu sẽ giúp bạn biết nên tự động hóa những bài kiểm thử nào trước tiên.

Ưu điểm

  • Có thể lặp lại: Các bước thực hiện giống hệt nhau trên mọi bản dựng, đó là điều làm cho kiểm thử hồi quy trở nên thiết thực.
  • Nhanh chóng trên quy mô lớn: Một bộ kiểm thử mà người kiểm thử mất cả ngày để hoàn thành có thể chạy trong vài phút, và thậm chí có thể chạy suốt đêm.
  • Thích hợp: Kịch bản không bao giờ nhàm chán, bỏ sót bước nào, hay hiểu sai kết quả.
  • Đa nền tảng: Một kịch bản duy nhất có thể được phát lại trên nhiều trình duyệt, thiết bị và hệ điều hành khác nhau.
  • Sẵn sàng cho CI: Các tập lệnh được tích hợp vào quy trình xây dựng để mọi lần commit đều được tự động xác minh.

Nhược điểm

  • Chi phí thiết lập cao: Việc viết và gỡ lỗi một kịch bản tốn nhiều thời gian hơn nhiều so với việc chạy thử nghiệm thủ công một lần.
  • Gánh nặng bảo trì: Việc thay đổi ID phần tử hoặc thiết kế lại trang gây ra lỗi khi thiết kế lại các tập lệnh, dẫn đến việc phải sửa chữa chúng.
  • Yêu cầu về kỹ năng: Ngoài khả năng ghi âm và phát lại, nhóm cần có khả năng lập trình.
  • Mù quáng trước những điều bất ngờ: Một đoạn mã chỉ kiểm tra những gì nó được yêu cầu kiểm tra, vì vậy các lỗi về hình ảnh và khả năng sử dụng có thể bị bỏ sót.
  • Sự tự tin sai lầm: Một bộ mã lệnh đơn giản, dễ nhớ có thể che giấu những lỗ hổng thực sự trong phạm vi bao phủ.

Nguyên tắc thực tiễn: hãy lập trình sẵn các quy trình ổn định, lặp đi lặp lại và có rủi ro cao, còn công việc khám phá và kiểm tra khả năng sử dụng nên được thực hiện thủ công.

Kịch bản kiểm thử: Những điểm chính cần lưu ý

  • Tập lệnh kiểm thử nghĩa là mô tả từng dòng chứa thông tin về các giao dịch hệ thống cần được thực hiện để xác thực ứng dụng hoặc hệ thống đang được kiểm thử.
  • Trường hợp kiểm thử là quy trình từng bước được sử dụng để kiểm tra ứng dụng trong khi tập lệnh kiểm thử là một tập hợp các hướng dẫn để tự động kiểm tra ứng dụng.
  • Có ba cách để tạo kịch bản kiểm thử: 1) Ghi âm/phát lại, 2) Viết kịch bản dựa trên từ khóa/dữ liệu, 3) Tự viết. Code Sử dụng ngôn ngữ lập trình.
  • Tập lệnh kiểm thử của bạn phải rõ ràng và bạn nên tạo tập lệnh kiểm thử chỉ chứa một hành động cụ thể để người kiểm tra thực hiện.
  • Kịch bản kiểm thử là cách đáng tin cậy nhất để xác nhận rằng không có bước nào bị bỏ qua và kết quả phù hợp với kế hoạch kiểm thử đã được thống nhất.
  • Mẫu tập lệnh kiểm thử là một tài liệu được định dạng có thể sử dụng lại, chứa thông tin được chọn trước quan trọng để tạo tập lệnh kiểm thử có thể sử dụng được.

Câu Hỏi Thường Gặp

Một trường hợp thử nghiệm là một quy trình từng bước thủ công được viết cho người thử nghiệm. Một kịch bản thử nghiệm là mã thực thi mà một công cụ sẽ tự động chạy. Một trường hợp thử nghiệm thường trở thành một kịch bản thử nghiệm duy nhất sau khi được tự động hóa.

Hãy bắt đầu bằng cách ghi lại và phát lại để xem cấu trúc, sau đó chỉnh sửa mã được tạo ra. Chuyển sang viết kịch bản bằng tay khi các kịch bản được ghi lại bị lỗi, vì các bộ định vị được ghi lại hiếm khi hoạt động bình thường sau khi thay đổi giao diện người dùng.

Mọi thứ chỉ chạy một lần, mọi thứ thay đổi sau mỗi sprint, và mọi thứ được đánh giá bằng mắt thường. Việc lập trình tự động cho thử nghiệm thăm dò, đánh giá khả năng sử dụng và kiểm tra một lần tốn nhiều chi phí hơn so với thực hiện thủ công.

Đúng vậy. Các công cụ AI có thể chuyển đổi các trường hợp kiểm thử đã viết thành các kịch bản có thể chạy và đề xuất các bộ định vị tự sửa lỗi khi một phần tử thay đổi. RevHãy xem xét mọi khẳng định được tạo ra, bởi vì một kịch bản không bao giờ thất bại thì không kiểm tra được gì cả.

Các công cụ hỗ trợ bởi AI phát hiện các phần tử đã thay đổi và cập nhật vị trí mà không cần sự can thiệp của con người, loại bỏ nguyên nhân phổ biến nhất gây ra lỗi kịch bản. Các nhóm vẫn xem xét lại các thay đổi trước khi tin tưởng sử dụng bộ công cụ này một lần nữa.

Tóm tắt bài viết này với: