Test  Viewpoint
Menu
  • Home
  • Basic Knowledge
  • Manual Testing
  • Test Automation
  • Blog
  • About Me
  • Contact
Menu
Use Case Testing Phần 6

Black-Box Testing: Use Case Testing (Phần 6)

Posted on October 24, 2023November 27, 2023 by Test Viewpoint

Use Case Testing Là Gì?

Về mặt khái niệm, Use case testing là một cách để đảm bảo rằng chúng ta đã kiểm thử các luồng xử lý và kịch bản điển hình và đặc biệt cho hệ thống, từ quan điểm của các tác nhân khác nhau tương tác trực tiếp với hệ thống và từ quan điểm của các bên liên quan khác nhau, những người tương tác gián tiếp với hệ thống.

Nếu bảng quyết định tập trung vào các tình huống chuyển đổi, trong đó các điều kiện – đầu vào, điều kiện tiền đề, v.v.. tồn tại tại một thời điểm nhất định cho từng chuyển đổi riêng lẻ là đủ để tự xác định các hành động mà hệ thống nên thực hiện. Thì use case không hoàn toàn cứng nhắc về điểm này. Một luồng xử lý ngoại lệ xảy ra khi một luồng xử lý điển hình không xảy ra. Bản thân khái viện về “Use case” có thể khác nhau đáng kể về hình thức và cách trình bày. Ý tưởng cơ bản là chúng ta có một danh sách các bước được đánh số (hoặc ít nhất là tuần tự) mô tả cách một tác nhân tương tác với hệ thống. Các bước có thể được hiển thị dưới dạng văn bản hoặc dưới dạng một phần của sơ đồ.

Xây Dựng Bài Kiểm Thử Từ Use Case

Giả thuyết lỗi trong kiểm thử dựa vào use case là gì? Nếu với bảng quyết định, chúng ta tìm kiếm sự kết hợp các điều kiện dẫn đến hành động không đúng xảy ra. Thì với use case, chúng chi tiết hơn một chút. Ở đây, chúng ta đang tìm kiếm một tình huống trong đó hệ thống tương tác không đúng với người dùng hoặc mang lại kết quả không đúng.

Hãy cùng xem xét một ví dụ sau đây:

Ví dụ về use case không chính thức
Mua sắm trực tuyến: Luồng xử lý thông thường
1. Khách hàng đặt một hoặc nhiều mặt hàng vào giỏ hàng
2. Khách hàng chọn thanh toán
3. Hệ thống thu thập thông tin địa chỉ, thanh toán, giao hàng từ khách hàng
4. Hệ thống hiển thị đầy đủ thông tin để Người dùng xác nhận
5. Người dùng xác nhận đơn hàng với hệ thống để giao hàng
Các ngoại lệ
Khách hàng cố gắng thanh toán khi giỏ hàng trống: Hệ thống đưa ra thông báo lỗi
Khách hàng cung cấp địa chỉ, thông tin thanh toán, hoặc thông tin giao hàng không hợp lệ: Hệ thống đưa ra thông báo lỗi phù hợp
Khách hàng hủy giao dịch trước hoặc trong quá trình thanh toán: Hệ thống ghi lại nhật ký Khách hàng thoát khỏi sau 10 phút không hoạt động
Ví dụ về use case không chính thức

Bây giờ, hãy xem xét các test case cho các use case này.

No.Test StepExpected Result
1Đặt 1 sản phẩm vào giỏ hàngMặt hàng trong giỏ hàng
2Click vào thanh toánMàn hình thanh toán
3Nhập địa chỉ hợp lệ tại Mỹ, thanh toán hợp lệ bằng American Express, và thông tin phương thức giao hàng hợp lệMỗi màn hình hiểu thị chính xác và đầu vào hợp lệ được chấp nhận.
4Xác nhận thông tin đơn hàngHiển thị như đã nhập
5Xác nhận đơn hàngĐặt hàng trong hệ thống
6Lặp lại step 1-5, nhưng đặt 2 mặt hàng vào giỏ hàng và thanh toán bằng Visa và vận chuyển quốc tếNhư trình bày trong step1-5
7Lặp lại step 1-5 nhưng đặt số lượng mặt hàng tối đa vào giỏ hàng và thanh toán bằng MastercardNhư trình bày trong step1-5
8Lặp lại các bước 1-5 nhưng thanh toán bằng DiscoverNhư trình bày trong step1-5
Bảng: Các test case cho luồng xử lý hợp lệ

Như bạn có thể thấy, mỗi step trong luồng xử lý sẽ ánh xạ với một step trong quy trình kiểm tra. Bạn cũng có thể thấy rằng bài kiểm thử cũng đã thực hiện một số phân tích giá trị biên và phân vùng tương đương về số lượng mặt hàng, hình thức thanh toán và địa chỉ giao hàng. Vì tất cả các lựa chọn này đều hợp lệ nên chúng được kết hợp lại. Lưu ý cách tiếp cận tiết kiệm không gian mô tả cách lặp lại các bước cốt lõi của quy trình kiểm tra với các biến thể, thay vì trình bày lại toàn bộ quy trình kiểm tra, ở phía dưới.

Tiếp theo là các test case mô tả luồng ngoại lệ. Bạn có thể thấy rằng, ở đây phân vùng tương đương được sử dụng ở những điểm mà tại đó khách hàng có thể từ bỏ giao dịch. Đây là một điểm tốt để đưa ra một sự khác biệt quan trọng, đó là giữa các test case hợp lý và cụ thể.

No.Test StepExpected Result
1Không đặt bất kỳ mặt hàng nào vào giỏ hàngGiỏ hàng trống
2Click vào thanh toánThông báo lỗi
3Đặt mặt hàng vào giỏ hàng, nhấp vào thanh toán, nhập địa chỉ không hợp lệ, sau đó nhập thông tin thanh toán không hợp lệ, sau đó nhập thông tin giao hàng không hợp lệThông báo lỗi, không thể chuyển sang màn hình tiếp theo cho đến khi thông tin nhập chính xác
4Xác nhận thông tin đơn hàngHiển thị như đã nhập
5Xác nhận đơn hàngĐặt hàng trong hệ thống
6Lặp lại step 1-3 nhưng dừng hoạt động và hủy giao dịch sau khi đặt sản phẩm vàoNgười dùng đăng xuất sau đúng 10 phút tính từ lần hoạt động cuối cùng
7Lặp lại step 1-3 nhưng dừng hoạt động và hủy giao dịch trên mỗi màn hìnhNhư trình bày trong step 6
8Lặp lại step 1-4; không xác nhận đơn hàngNhư trình bày trong step 6
Bảng: Các test case cho luồng xử lý ngoại lệ

Thiết Kế Một Use Case Chính Thức

Một use case chính thức gồm những gì? Thông thường, use case chính thức chứa nhiều thông tin hơn trường hợp không chính thức. Dưới đây là một số yếu tố điển hình của một use case chính thức:

  • ID: Định danh use case
  • Name: Tên viết tắt. Ví dụ: Mua sắm trực tuyến
  • Actor: Tác nhân. Ví dụ: Khách hàng
  • Description: Đoạn văn ngắn mô tả về use case
  • Priority: Mức độ ưu tiên, từ quan điểm thực hiện
  • Frequency of use: Tần suất sử dụng
  • Preconditions: Điều kiện tiền đề. Điều gì phải đúng để bắt đầu use case thông thường
  • Typical workflow: Luồng xử lý bình thường. Thường giống như use case không chính thức, nhưng đôi khi được chia thành hai cột, một cột dành cho hành động của tác nhân và một cột dành cho phản hồi của hệ thống
  • Exception workflows: Luồng xử lý ngoại lệ. Mỗi luồng xử lý ngoại lệ thường có các cột hành động của tác nhân và phản hồi của hệ thống
  • Postconditions: Hậu điều kiện. Điều gì sẽ đúng về trạng thái của hệ thống sau khi use case hoàn thành bình thường
ID02.001
NameMua sắm trực tuyến
ActorKhách hàng
DescriptionCho phép khách hàng hoàn tất giao dịch bằng cách mua (các) mặt hàng trong giỏ hàng của mình
PriorityRất cao
Frequency of use25% khách hàng, tối đa 1.000 khách hàng mỗi ngày
Preconditions1. Một hoặc nhiều mặt hàng trong giỏ hàng
2. Khách hàng đã đăng nhập
3. Khách hàng đã click vào thanh toán
Typical workflow1. Hệ thống thu thập thông tin địa chỉ, thanh toán, giao dịch từ khách hàng
2. Hệ thống hiển thị đầy đủ thông tin cho người dùng xác nhận
3. Người dùng xác nhận đơn hàng với hệ thống giao hàng
Exception 1Khách hàng cố gắng thanh toán khi giỏ hàng trống: Hệ thống đưa ra thông báo lỗi
Exception 2Khách hàng cung cấp thông tin địa chỉ, thanh toán hoặc giao hàng không hợp lệ: Hệ thống đưa ra thống báo lỗi thích hợp
Exception 3Khách hàng hủy giao dịch trước hoặc trong quá trình thanh toán: Hệ thống ghi lại nhật ký Khách hàng thoát khỏi sau 10 phút không hoạt động
PostconditionsĐơn hàng đang hoạt động trên hệ thống
Bảng: Ví dụ về Use Case chính thức

Khả Năng Áp Dụng

Use case testing thường được áp dụng trong kiểm thử hệ thống và kiểm thử chấp nhận. Nó cũng có thể được sử dụng trong thử kiểm thử tích hợp nếu hành vi của các thành phần hoặc hệ thống được chỉ định theo các trường hợp sử dụng. Các trường hợp sử dụng cũng thường là cơ sở để kiểm tra hiệu năng vì chúng mô tả cách sử dụng thực tế của hệ thống. Các hành vi được mô tả trong các trường hợp sử dụng có thể được chỉ định cho người dùng ảo để tạo tải thực tế trên hệ thống (miễn là các yêu cầu về tải và hiệu suất được chỉ định trong họ hoặc cho họ).

Hạn Chế/ Khó Khăn

Để có hiệu lực, các use case phải truyền tải các giao dịch thực tế của người dùng. Đặc tả use case là một dạng thiết kế hệ thống. Các yêu cầu về những gì người dùng cần thực hiện phải đến từ người dùng hoặc đại diện người dùng và cần được kiểm tra dựa trên các yêu cầu của tổ chức trước khi thiết kế các trường hợp sử dụng tương ứng. Giá trị của use case sẽ giảm nếu nó không phản ánh các yêu cầu thực sự của người dùng và tổ chức hoặc cản trở thay vì hỗ trợ hoàn thành các nhiệm vụ của người dùng. Một định nghĩa chính xác về các hành vi ngoại lệ, thay thế và xử lý lỗi là rất quan trọng để bao phủ được toàn diện. Các trường hợp sử dụng nên được coi là hướng dẫn chứ không phải là định nghĩa đầy đủ về những gì cần được kiểm tra vì chúng có thể không cung cấp định nghĩa rõ ràng về toàn bộ yêu cầu. Cũng có thể có ích khi tạo các mô hình khác, chẳng hạn như sơ đồ và/hoặc bảng quyết định, từ tường thuật use case để cải thiện độ chính xác của kiểm thử và để xác minh chính use case đó. Giống như các dạng đặc tả khác, điều này có thể bộc lộ những điểm bất thường về mặt logic trong đặc tả use case, nếu chúng tồn tại.

Mức Độ Bao Phủ

Mức độ bao phủ tối thiểu có thể chấp nhận được của một use case là phải có một test case cho hành vi cơ bản và đủ các test case bổ sung để bao quát từng hành vi xử lý lỗi và thay thế. Nếu cần một bộ kiểm thử tối thiểu, nhiều hành vi thay thế có thể được tích hợp vào test case miễn là chúng tương thích lẫn nhau. Nếu cần có khả năng phán đoán tốt hơn (ví dụ: để hỗ trợ cách ly các lỗi), một test case bổ sung cho mỗi hành vi thay thế có thể được thiết kế, mặc dù các hành vi thay thế lồng nhau vẫn sẽ yêu cầu một số hành vi đó được hợp nhất thành một test case duy nhất (ví dụ: chấm dứt so với các hành vi thay thế không chấm dứt trong hành vi ngoại lệ “thử lại”).

Loại Lỗi Phát Hiện

Các khiếm khuyết bao gồm xử lý sai các hành vi đã xác định, bỏ sót các hành vi thay thế, xử lý không chính xác các điều kiện được trình bày và các thông báo lỗi được triển khai kém hoặc không chính xác.

Related

Category: Basic KnowledgeManual Testing

Archives

  • June 2025
  • May 2025
  • April 2025
  • January 2025
  • December 2024
  • November 2024
  • October 2024
  • September 2024
  • August 2024
  • April 2024
  • March 2024
  • February 2024
  • January 2024
  • December 2023
  • November 2023
  • October 2023
  • September 2023
  • August 2023
  • July 2023
  • June 2023
  • May 2023
  • April 2023
  • March 2023

Categories

  • Basic Knowledge
  • Manual Testing
  • Test Automation

About Me

Xin chào các bạn. Mình là một kỹ sư kiểm thử phần mềm. Ngành công nghệ thông tin nói chung và công việc kiểm thử phần mềm nói riêng luôn luôn đổi mới đòi hỏi phải học hỏi mỗi ngày. Với mình chia sẻ những gì học được là cách tốt nhất để mình học những điều mới. Hãy cùng mình tìm hiểu thông qua blog này nhé!

Newsletter

Nhận thông báo về bài viết mới nhất qua email

Popular Posts

About Me

Xin chào các bạn. Mình là một kỹ sư kiểm thử phần mềm. Ngành công nghệ thông tin nói chung và công việc kiểm thử phần mềm nói riêng luôn luôn đổi mới đòi hỏi phải học hỏi mỗi ngày. Với mình chia sẻ những gì học được là cách tốt nhất để mình học những điều mới. Hãy cùng mình tìm hiểu thông qua blog này nhé!

  • Facebook
  • Instagram
  • YouTube

Recent Posts

Newsletter

Nhận thông báo về bài viết mới nhất qua email

©2025 Test Viewpoint