Good Practices: Test skills, Whole Team Approach và Independence Test

⏱︎

Read time:

4–6 minutes

Một tester giỏi không chỉ biết viết test case và tìm bug. Hiệu quả kiểm thử còn phụ thuộc vào kỹ năng cá nhân, khả năng cộng tác theo Whole Team Approach và lựa chọn mức độ độc lập phù hợp.

1. Các kỹ năng cần có của 1 tester giỏi

Bao gồm 6 nhóm kỹ năng đặc biệt quan trọng đối với tester:

Testing knowledge (kiến thức kiểm thử)

Kiến thức về test process, test levels, test types và test techniques giúp tester lựa chọn cách kiểm thử hiệu quả thay vì chỉ dựa vào kinh nghiệm cảm tính.

Cẩn thận, tò mò và chú ý tiểu tiết

Tính tỉ mỉ, phương pháp làm việc có hệ thống và thói quen đặt câu hỏi giúp phát hiện những defect khó thấy hoặc chỉ xuất hiện trong điều kiện đặc biệt. Đây là lý do tại sao ngày xưa tester thường ưu tiên chị em phụ nữ hơn 🥲

Giao tiếp và làm việc nhóm

Tester cần giao tiếp rõ ràng, lắng nghe chủ động và phối hợp tốt với các bên.

Tư duy phân tích, phản biện và sáng tạo

Tư duy phân tích giúp chia nhỏ hệ thống; tư duy phản biện giúp luôn nghi ngờ mọi thứ; sự sáng tạo giúp nghĩ ra dữ liệu và tình huống mà tài liệu chưa mô tả.

Technical knowledge (kiến thức kỹ thuật)

Kiến thức kỹ thuật giúp tester sử dụng công cụ phù hợp, đọc log, kiểm tra API, truy vấn database hoặc tự động hóa những công việc lặp lại để tăng hiệu suất. Là nền tảng để phát triểu Automation Test về sau

Domain knowledge (Kiến thức nghiệp vụ)

Hiểu nghiệp vụ giúp tester nhận biết đâu là hành vi thực sự có giá trị với người dùng, đánh giá đúng rủi ro và giao tiếp hiệu quả với business representative.

Ví dụ để nhảy vào dự án Banking, người ta luôn ưu tiên bạn đã có kiến thức về domain ngân hàng…

2. Whole Team Approach (“Cả team test chung”)

Trong Whole Team Approach, bất kỳ thành viên nào có đủ kiến thức và kỹ năng đều có thể thực hiện một nhiệm vụ, đồng thời mọi người cùng chịu trách nhiệm về chất lượng. Quality không phải là việc được giao riêng cho tester ở cuối quy trình.

Nghe thì rất hay, nhưng để vận dụng được cái này thì khá “trầy da tróc vẩy” 🤣

Tester cộng tác với ai?

  • Business representative: làm rõ requirement, acceptance criteria và xây dựng acceptance test phù hợp.
  • Developer: thống nhất test strategy, testability và cách tiếp cận test automation.
  • Cả team: chia sẻ testing knowledge, thảo luận risk và đưa chất lượng vào quyết định phát triển sản phẩm.

Ví dụ trong một Sprint

Thay vì đợi developer hoàn thành rồi mới chuyển ticket cho tester, BA, developer và tester cùng ngồi họp refinement user story. Tester đặt câu hỏi về edge case; developer đề xuất log và API hỗ trợ kiểm thử; BA hoàn thiện acceptance criteria. Lỗi được phòng ngừa trước khi code bắt đầu. Nó liên hệ mật thiết với nguyên lý Early testing (kiểm thử sớm)

3. Independence of Testing (Kiểm thử độc lập)

Một mức độ độc lập nhất định giúp tìm defect hiệu quả hơn vì dev và tester thường có kinh nghiệm, góc nhìn khác nhau. Dev giỏi code còn tester thì giỏi test (đương nhiên).

Note: Độc lập càng cao, độ khách quan càng cao, nhưng chưa chắc chất lượng đã đi theo tương tứng 😊

Mức độ độc lậpNgười thực hiệnVí dụ
Không độc lậpTự mình self-testDeveloper tự unit test code của mình
Độc lập 1 phầnĐồng nghiệp, teammate trong cùng teamPeer review hoặc tester trong Scrum team
Độc lập caoTester ngoài team nhưng cùng công ty1 team QC riêng thực hiện system testing
Độc lập rất caoTeam kiểm thử ngoài công tyThuê hẳn dịch vụ test bên ngoài để test

Lợi ích của test independence

  • Nhận ra các loại failure và defect khác với tác giả nhờ góc nhìn khách quan

Rủi ro khi quá tách biệt

  • Tester bị cô lập khỏi development team, dẫn đến thiếu thông tin và giao tiếp kém.
  • Hình thành quan hệ đối đầu giữa developer và tester (không nên chút nào 🥲)
  • Developer không có mindset về quality, code bừa vì đã có team test lo hộ rồi haha 🤦‍♂️
  • Test team là chốt chặn duy nhất, sẽ luôn “đứng mũi chịu sào” nếu có issue xảy ra 😒

Nên chọn Whole Team hay Independent Testing?

Nên kết hợp cả 2:

  • Developer thực hiện unit testing, self test phần code mình làm ra bằng QA checklist
  • Tester hoặc test team thực hiện system testing và regression testing
  • PO, BA hoặc người dùng thực hiện acceptance testing.

Cách kết hợp này vừa giữ được feedback nhanh và trách nhiệm chung về chất lượng, vừa bổ sung các góc nhìn đủ độc lập ở những test level quan trọng.

Kết luận

Good practices trong testing không chỉ nằm ở kỹ thuật. Tester cần phát triển đồng thời kiến thức, tư duy, giao tiếp, kỹ năng technical và hiểu biết nghiệp vụ; cộng tác chặt chẽ với toàn team; đồng thời duy trì mức độ độc lập phù hợp với rủi ro và bối cảnh dự án bạn nhé!