Menu

Cách chọn quốc gia cho dữ liệu thử: ba trục chính

Chọn quốc gia cho dữ liệu thử không phải là bốc đại vài cái tên quen thuộc. Bài này trình bày ba trục chọn lọc, vai trò của mẫu biên và cách đánh phiên bản cho tập quốc gia.

Đăng ngày

  • dữ liệu thử
  • quốc gia
  • kiểm thử

Chuyện chọn quốc gia cho dữ liệu thử hiếm khi được xem là một quyết định thiết kế, nhưng nó chi phối gần như mọi khẳng định trong bộ kiểm thử. Một tập quốc gia được gom qua loa sẽ khiến các bài kiểm thử đều xanh trong khi lỗi vẫn nằm nguyên ở những nơi ít người chạm tới. Bài này nói về cách chọn có lý do, và vì sao tập quốc gia xứng đáng được đối xử như một tài sản có phiên bản.

Vì sao nên chọn quốc gia cho dữ liệu thử theo tiêu chí?

Một tập quốc gia được gom theo cảm hứng thường nghiêng về những nơi mà người viết kiểm thử quen thuộc nhất. Hệ quả là các bài kiểm thử chỉ chứng minh được điều ai cũng đã biết: luồng chính chạy được. Những nơi có cách viết địa chỉ khác lạ, dùng bảng chữ cái khác, hoặc thiếu hẳn một trường mà nơi khác bắt buộc, mới là nơi sinh ra lỗi thật.

Tiêu chí hoá việc chọn lọc không nhằm làm cho danh sách trông nghiêm túc hơn. Nó để trả lời được câu hỏi mà người kiểm tra sẽ hỏi khi một bài kiểm thử đỏ: mục này được đưa vào để bắt lỗi gì. Nếu không trả lời được, khả năng cao là nó chỉ đang chiếm chỗ và làm chậm cả bộ kiểm thử.

Cách làm thực dụng là ghi lý do ngay cạnh từng mục trong tập dữ liệu. Một dòng lý do ngắn cũng đủ để người tiếp nhận sau này biết khi nào thì được phép bỏ nó đi mà không làm mất độ phủ.

Ba trục chọn lọc: khả năng tiếp cận, độ khó dữ liệu, giá trị biên

Ba trục dưới đây không loại trừ nhau. Một quốc gia tốt thường chạm vào hai trục cùng lúc, và đó cũng là dấu hiệu cho thấy nó đáng được giữ lại.

Trục Câu hỏi cần trả lời Vì sao đáng đưa vào tập
Khả năng tiếp cận Người dùng nơi đó có thật sự đi qua luồng này không? Bắt lỗi ở phần nghiệp vụ: phương thức thanh toán, phạm vi giao hàng, ngôn ngữ của thông báo
Độ khó dữ liệu Dữ liệu nhập vào có khác biệt về hình dạng không? Bắt lỗi ở phần hiển thị và nhập liệu: độ dài, dấu, chiều viết, ký tự ngoài bảng chữ cái Latinh
Giá trị biên Đây có phải trường hợp cực đoan về kích thước hay cấu trúc không? Bắt lỗi ở phần cắt bớt, kiểm tra độ dài và những giả định ngầm

Trục khả năng tiếp cận là trục dễ bị bỏ quên nhất, vì nó không nằm trong dữ liệu mà nằm trong nghiệp vụ. Một nơi có thể có định dạng địa chỉ hoàn toàn bình thường nhưng lại dùng phương thức thanh toán mà hệ thống chưa từng gặp. Loại lỗi này không bao giờ lộ ra nếu tập dữ liệu chỉ chứa những nơi có cùng cách trả tiền.

Trục độ khó dữ liệu nói về hình dạng của giá trị, không nói về việc giá trị đó đúng hay sai. Điều cần đo là liệu dữ liệu của nơi đó có buộc giao diện phải xử lý một tình huống mới hay không. Khi đã xác định được điều đó, bạn biết mình đang kiểm thử phần nhập liệu và hiển thị, chứ không phải phần nghiệp vụ.

Trục giá trị biên bổ sung cho hai trục trên đúng ở chỗ mà chúng dễ bỏ sót. Các giá trị dài nhất và ngắn nhất không phải là chuyện hiếm gặp trong thực tế, nhưng chúng hầu như không bao giờ xuất hiện trong tập dữ liệu do người viết tự nghĩ ra.

Mẫu biên dùng để làm gì

Một mẫu biên không tồn tại để gây ấn tượng. Nó tồn tại để đẩy các phép kiểm tra độ dài và các đoạn cắt bớt tới đúng giới hạn của chúng. Nếu bộ dữ liệu thử chỉ chứa những giá trị có độ dài trung bình, bạn sẽ không bao giờ biết được chỗ nào bắt đầu cắt chữ, chỗ nào tràn khỏi khung, và chỗ nào âm thầm bỏ qua phần dư.

Có ba dạng cực đoan thường đáng có mặt. Thứ nhất là những giá trị dài nhất mà hệ thống phải nhận, ví dụ một dòng địa chỉ hoặc một tên riêng dài bất thường. Thứ hai là những giá trị ngắn nhất, kể cả trường hợp trống hoàn toàn. Thứ ba là những giá trị có cấu trúc khác hẳn, ví dụ dữ liệu viết bằng bảng chữ cái không phải Latinh.

Điều quan trọng là phải phân biệt mẫu biên với dữ liệu rác. Mẫu biên vẫn là dữ liệu hợp lệ theo đúng quy tắc của nơi đó, chỉ khác ở chỗ nó nằm ở rìa. Dữ liệu rác thì vi phạm quy tắc, và nó thuộc về một nhóm khẳng định khác hẳn.

Mỗi mẫu biên nên đi kèm một khẳng định cụ thể. Nếu không, nó chỉ là một dòng dữ liệu đẹp mắt trong báo cáo và sẽ bị người sau xoá đi khi cần dọn dẹp.

Quốc gia không có mã bưu chính hoặc không có cấp tỉnh thì kiểm thử thế nào?

Không phải hệ thống dữ liệu nào cũng có đủ mọi trường mà biểu mẫu của bạn đang có. Có nơi không tồn tại cấp hành chính trung gian, có nơi không có hệ thống mã bưu chính. Đây không phải là dữ liệu thiếu, mà là trường hợp trường đó không áp dụng.

Sự khác biệt này quan trọng vì nó quyết định khẳng định nào là đúng. Nếu bạn coi mọi trường đều bắt buộc, bạn sẽ viết ra những bài kiểm thử biến dữ liệu hợp lệ thành lỗi. Ngược lại, nếu bạn nới lỏng tất cả, bạn sẽ không còn phát hiện được trường hợp dữ liệu thật sự bị thiếu.

Cách xử lý là đưa những nơi như vậy vào tập dữ liệu với tư cách ca hợp lệ, chứ không phải ca lỗi. Khi đó biểu mẫu phải cho phép bỏ trống đúng trường đó, và nghiệp vụ phải chấp nhận bản ghi đi tiếp mà không có nó.

Cần lưu ý rằng chi tiết định dạng của từng nơi, ví dụ mã bưu chính được viết thế nào, không thuộc phạm vi bài này. Những điểm đó đã được trình bày ở bài mã quốc gia và đơn vị hành chính trong cùng chuyên mục địa chỉ.

Một tập quốc gia mặc định gồm những gì

Một tập mặc định dùng được thường có ba phần, và cả ba đều có việc để làm.

  • Nhóm nơi hệ thống vận hành chính: đây là những nơi có người dùng thật, và là nơi mọi thay đổi sẽ được cảm nhận trước tiên.
  • Nhóm thị trường chính: ít mục hơn nhóm đầu, nhưng đại diện cho những cách viết và cách thanh toán khác biệt.
  • Nhóm giá trị biên: rất ít mục, thường chỉ vài ba nơi, nhưng chuyên bắt các lỗi về độ dài, cắt bớt và trường không áp dụng.

Ba nhóm này cần được đặt cạnh nhau trong cùng một tập, chứ không nên tách thành nhiều bộ dữ liệu rời. Khi chúng nằm chung, bạn sẽ thấy ngay mâu thuẫn giữa một bên là giả định bắt buộc và một bên là trường hợp không áp dụng.

Muốn đối chiếu nhanh cách từng nơi được trình bày, bạn có thể mở danh mục quốc gia và vùng lãnh thổ của trang này rồi chọn vài mục để so sánh. Đó cũng là chỗ thuận tiện để kiểm tra xem tập quốc gia của bạn có bỏ sót khu vực nào mà người dùng đang nhắc tới hay không.

Mọi tên tập, tên nhóm và giá trị minh hoạ trong bài chỉ là ví dụ để giải thích cách làm. Tập quốc gia ở đây không đại diện cho bất kỳ danh sách quốc gia hay phạm vi phủ sóng thật nào, cũng không tương ứng với bất kỳ tổ chức hay cá nhân cụ thể nào, và không được dùng làm căn cứ cho hồ sơ thật.

Phần dành cho nhà phát triển: coi tập quốc gia là tài sản có phiên bản

Khi tập quốc gia thay đổi mà không có phiên bản, ý nghĩa của các khẳng định cũ cũng thay đổi theo. Kết quả chạy hôm qua và hôm nay sẽ không còn so sánh được với nhau, và người đọc báo cáo sẽ không biết chênh lệch đến từ mã hay từ dữ liệu.

Vài điểm nên chốt sớm:

  • Đặt tên và số phiên bản cho tập quốc gia, rồi ghi phiên bản đó vào báo cáo kiểm thử.
  • Lưu lý do cho từng mục, kể cả lý do của những mục đã bị loại bỏ.
  • Giữ dữ liệu của tập tách khỏi mã kiểm thử, để thêm một nơi mới không phải sửa mã.
  • Không dùng thông tin của người thật để lấp chỗ trống trong tập, kể cả khi chỉ chạy thử ở máy cá nhân.
  • Kiểm tra lại các khẳng định về trường bắt buộc mỗi lần thêm một nơi mới.

Cách đánh phiên bản cũng nên phản ánh mức thay đổi. Thêm một nơi vào nhóm giá trị biên là thay đổi lớn hơn nhiều so với việc chỉnh sửa một dòng chú thích. Phân biệt hai loại này sẽ giúp bạn quyết định khi nào cần chạy lại toàn bộ và khi nào chỉ cần chạy phần liên quan.

Bước tiếp theo

Hãy mở tập quốc gia hiện tại của bạn và thử viết lý do cho từng mục. Những mục không có lý do chính là ứng viên đầu tiên để thay bằng một nơi có giá trị biên rõ ràng hơn. Sau đó, bài danh sách độ phủ dữ liệu theo quốc gia sẽ giúp bạn đo xem tập mới phủ được những gì, còn bài độ mới của dữ liệu quốc gia nói về việc giữ tập đó không bị cũ đi theo thời gian.

Đọc tiếp

Bài viết về Định dạng địa chỉ và danh tính theo quốc gia