Tất cả bài viết

6 phút đọcRead in English

Review test design cùng Tokay

Review test case trong VibeQA: sửa tay, comment gắn @Tokay để nhận đề xuất, bấm "Đúng rồi" cho từng case, và những gì được kiểm tra trước khi duyệt.

Tokay vừa soạn xong test design cho luồng checkout của Storefront: vài yêu cầu, ô số điện thoại được chia thành các giá trị hợp lệ và không hợp lệ, cùng một danh sách case. Chưa có gì chạy cả. Trước khi bất cứ phần nào trong đó được đưa vào dùng, phải có người trong team đọc, sửa chỗ sai và xác nhận từng case. Bài này đi qua quá trình review test case đó, và những gì VibeQA kiểm tra trước khi cho phép duyệt.

Review test case diễn ra trên bản nháp

Mỗi suite có tối đa một bản nháp đang mở. Phiên bản đang chạy giữ nguyên trong lúc bạn làm việc; sửa một suite đang live sẽ mở bản nháp mới chứ không đổi thứ đang chạy hôm nay.

Bạn làm việc với bản nháp trong màn hình review. Bên trái là các case, nhóm theo scenario. Ở giữa là case đang mở, đọc theo dạng Given, When, Then. Bên phải là phần thảo luận của case đó. Một dải phía trên cho biết đã có bao nhiêu case được xác nhận là đúng.

Màn hình review suite Thanh toán, 6 trên 16 case đã ổn; TC-1.2 mở dạng Given/When/Then với +84 912 345 678 và địa chỉ Đà Nẵng
Case đang mở hiện dữ liệu test được tô sáng, các lớp nó bao phủ, cùng nút đánh dấu đã review hoặc nhờ Tokay sửa.

Review không chỉ dành cho người viết test. Một viewer, chẳng hạn product manager, có thể comment và xác nhận case mà không có quyền sửa design.

Một case có thể thay đổi theo ba cách.

Tự sửa

Bấm vào một giá trị được tô sáng trong dữ liệu test để sửa, thêm case vào một scenario, hoặc xoá một case. Thay đổi của bạn có hiệu lực ngay. Mỗi lần sửa là một patch nhỏ áp lên một revision có đánh số của bản nháp, nên nếu hai reviewer cùng sửa một giá trị cùng lúc, người thứ hai sẽ được báo là có người vừa sửa bản nháp, thay vì âm thầm ghi đè.

Nhờ Tokay trong comment

Viết comment trên case và nhắc đến Tokay:

@Tokay case này nên thử thêm số có khoảng trắng, ví dụ 090 123 4567.

Tokay không sửa bản nháp. Nó trả lời trong thread bằng một đề xuất: thay đổi cụ thể, và coverage sẽ trông thế nào sau thay đổi đó. Bạn chấp nhận, từ chối, hoặc sửa đề xuất rồi mới nhận.

TC-3.1 ở trạng thái Yêu cầu sửa: comment nhờ @Tokay phủ giới hạn địa chỉ 255 ký tự; Tokay đề xuất 2 thay đổi
Tokay trả lời trong thread bằng một lớp mới (256 ký tự) và một dòng mới TC-3.2; bản nháp chỉ đổi khi có người chấp nhận.

Chấp nhận thì thay đổi được áp dụng và thread được đóng. Từ chối thì thread vẫn mở cho tới khi có người đánh dấu xong. Nếu bản nháp đã thay đổi và đề xuất không còn áp dụng được, nó bị đánh dấu là cũ; "Nhờ Tokay làm lại" sẽ yêu cầu một đề xuất mới dựa trên bản nháp hiện tại.

Comment không có @Tokay là ghi chú cho các reviewer khác. Tokay chỉ đọc khi bạn nhắc đến nó.

Trả lời câu hỏi của Tokay

Tokay cũng hỏi lại. Nếu ticket SHOP-388 chỉ ghi "số điện thoại hợp lệ", Tokay được dặn phải hỏi xem số bắt đầu bằng +84 có được chấp nhận không, chứ không tự đoán. Câu hỏi giữ trạng thái mở cho tới khi có người đánh dấu đã chốt và ghi lại điều đã thống nhất.

"Đúng rồi", từng case một

Đồng ý với một case là việc một người làm, không phải điều VibeQA tự giả định. Mỗi case có nút "Đúng rồi".

VibeQA lưu lần xác nhận đó theo hash của case ở dạng hiện tại: dữ liệu test của dòng đó và các giá trị nó cover, cộng với tiêu đề, các bước, độ ưu tiên của scenario và việc nó được tự động hoá hay không. Đổi bất kỳ thứ gì trong đó, case quay về trạng thái Cần review. Sửa một bước của scenario "Thanh toán với số điện thoại" thì mọi case trong scenario đó đều cần xem lại, vì giờ mỗi case làm một việc khác.

Cố ý chặt như vậy: dấu "Đã review" chỉ có ý nghĩa khi một người đã đọc đúng cái case sẽ chạy.

Xem độ phủ

Màn hình xem độ phủ liệt kê, theo từng yêu cầu, những giá trị cần được test, app phải chấp nhận hay từ chối mỗi giá trị, và case nào dùng giá trị đó. Giá trị chưa có case nào dùng được đánh dấu "Chưa test". Một case thử hai giá trị sai cùng lúc sẽ bị gắn cờ: nếu app chỉ báo một lỗi, case đó không chứng minh được giá trị nào. Với yêu cầu rủi ro cao, màn hình còn liệt kê các cặp giá trị hợp lệ chưa từng được dùng chung trong một case.

Từ đây bạn có thể thêm case, nhờ Tokay lấp chỗ thiếu, hoặc đánh dấu một giá trị là "Không cần ở đây" kèm lý do, để reviewer sau đọc lý do đó thay cho một test. Bản thân coverage được tính theo một quy tắc cố định mà bài trước đã giải thích; không ai tự tuyên bố là coverage đã đủ.

Từ review tới code

Khi mọi case đã được review, coverage không còn chỗ thiếu và không còn gì đang mở, bạn nhờ Tokay viết code. Nó viết một test Playwright cho mỗi case tự động hoá, đặt tên theo case, ví dụ TC-2.4. Sau đó "Chạy thử một lần" đóng băng bản nháp cùng code thành một phiên bản mới và chạy nó trong sandbox; kết quả của từng test được map ngược về case tương ứng.

Nếu design bị sửa sau khi đã có code, code đó coi như cũ: dry run và việc duyệt phải chờ Tokay viết lại code.

Những gì phải đúng trước khi duyệt

Khi bạn bấm duyệt, VibeQA kiểm tra phiên bản đó và từ chối, kèm lý do, trừ khi tất cả các điều sau đều đúng:

Điều kiệnVì sao
Code được sinh từ đúng design nàyTest được chạy chính là test bạn đã review
Coverage đã đủMỗi giá trị cần test đều có case, hoặc có lý do được ghi lại
Không còn comment hay câu hỏi nào đang mởThread đang mở là một ý kiến chưa ai trả lời
Mọi case đã được một người review ở dạng hiện tạiLần "Đúng rồi" cũ không áp dụng cho case đã bị sửa
Một dry run đã xong của phiên bản này báo kết quả cho mọi case tự động hoáMỗi case thật sự có test, và mỗi test đều thuộc về một case

Dry run phải kết thúc là pass hoặc fail. Nếu nó dừng vì lỗi phía chúng tôi, bạn chạy lại. Case fail vẫn được chấp nhận: test tái hiện một lỗi còn tồn tại thì phải fail.

Tokay không bao giờ duyệt. Nó soạn, đề xuất, viết code và chạy dry run, nhưng duyệt một phiên bản cần owner hoặc admin. Member làm được mọi việc cho tới nút duyệt.

Cái giá phải trả

Review cẩn thận tốn thời gian thật, và những lần sửa nhỏ có thể mở lại case bạn tưởng đã xong. Chúng tôi nghĩ đó là cái giá đáng trả, so với một suite xanh mà không ai dám nói là mình đã đọc.