Những điều làm nên một Agile tester tốt

Đây là bài dịch được lấy từ bài báo trong link sau: http://www.testingexcellence.com/what-makes-good-agile-tester/

Kiểm thử trong mô hình agile có rất nhiều sự khác biệt với những phương thức kiểm thử trong các mô hình truyền thống như waterfall (thác nước). Agile là một mô hình delivery liên tục, đòi hỏi sự phối hợp giữa các thành viên trong team để có thể đưa ra phản hồi nhanh chóng và thể hiện khả năng tự quản lý công việc.

Những thách thức khá thường xuyên trong quá trình kiểm thử với mô hình agile là sự thiếu hụt tài liệu, thay đổi thứ tự ưu tiên, thời gian kiểm thử hạn chế… Tuy nhiên, với tư duy và thái độ đúng, các kiểm thử viên trong một team agile có thể thể hiện khả năng một cách tốt nhất, qua đó giúp team bàn giao những sản phẩm chất lượng tốt liên tục.

Vậy hãy cùng xem, điều gì tạo nên một kiểm thử viên tốt trong team agile?

1. Sự khác biệt giữa kiểm thử và đảm bảo chất lượng

Một kiểm thử viên tốt trong mô hình agile phải hiểu được rằng công việc của họ không chỉ giới hạn trong việc thực hiện test script, báo cáo lỗi và ký vào biên bản bàn giao. Kiểm thử chỉ là một phần nhỏ trong một chuỗi các practice đảm bảo chất lượng rộng lớn hơn.

Kiểm thử không chỉ là một giai đoạn trong quá trình bàn giao phần mềm trong mô hình agile. Nó là một hoạt động diễn ra liên tục trước, trong và sau mỗi sprint. Trong agile team, tất cả các thành viên đều phải có trách nhiệm với chất lượng sản phẩm và chất lượng phải được đặt lên hàng đầu, ngay từ thời điểm bắt đầu chứ không phải sau khi làm xong.

Nếu như bất kể một stakeholder nào, BAs, Developer hoặc cả những kiểm thử viên khác trong team không chú trọng vào chất lượng, thì công việc của kiểm thử viên lúc này là nhắc nhở team về hậu quả của việc bỏ qua các practice để xây dựng một sản phẩm tốt.

2. Kiến thức kỹ thuật và kiểm thử tự động

Kiểm thử tự động là nhân tố sống còn cho thành công của một dự án triển khai theo mô hình agile. Bởi vì kiểm thử tự động có thể cung cấp những phản hồi nhanh chóng và thực tiễn cho đội phát triển. Kiểm thử tự động có thể được thực hiện ở các mức khác nhau tùy vào những mục đích khác nhau.

Một kiểm thử viên có kiến thức kỹ thuật tốt thường có các đặc điểm sau:

  • Có khả năng phát hiện và chỉ ra những kiểm thử nào nên tự động hóa
  • Chọn được đúng công cụ hỗ trợ quá trình kiểm thử
  • Giúp cho developer viết kịch bản kiểm thử và phân tích kết quả kiểm thử tự động.
  • Tạo ra các automation test suite khác nhau như smoke, full regression, end-to- end...
  • Giảm thiểu thời gian thực hiện kiểm thử tự động để thu về những phản hồi nhanh nhất
  • Thực hiện kiểm thử liên tục
  • Cung cấp các metrics có giá trị kinh tế
  • Sử dụng các phương diện của những công cụ kiểm thử khác nhau để hỗ trợ quá trình kiểm thử bằng tay

Kiểm thử viên agile cần biết mặc dù kiểm thử tự động rất hiệu quả nhưng kiểm thử thăm dò vẫn là một phần bắt buộc để bổ sung cho kiểm thử tự động, bởi vì không phải tất cả các bug đều có thể tìm thấy bởi kiểm thử tự động. Và để có thể áp dụng kiểm thử tự động một cách hiệu quả nhất, kiểm thử viên cần có những practice thật thích hợp.

3. Đưa ra phản hồi liên tục

Một trong những lợi ích chính của mô hình agile chính là khả năng đưa ra các giải pháp làm việc nhanh chóng. Trong yêu cầu phát triển nhanh, chúng ta cần phải lấy được phải hồi nhanh nhất từ mỗi version của code.

Chúng ta cần phải biết, trong một thời gian ngắn, bất kỳ đoạn code mới hoặc được update có thể là nguyên nhân của regression bug. Do đó, một trong những mục tiêu của kiểm thử trong mô hình agile là cung cấp những thông tin xác đáng về tình trạng của ứng dụng một cách nhanh nhất.

Khi vấn đề được thông báo sớm, chúng ta có thể sửa chữa chúng ngay lập tức và đi tiếp. Nếu như phản hồi bị trì hoãn, team không thể tiếp tục công việc và việc tìm hiểu nguyên nhân gốc rễ của vấn đề sẽ trở nên rất khó khăn và tốn thời gian.

Như Kniberg và Skarin đã nói:

Thay đổi gì đó -> Tìm hiểu cách nó vận hành -> Học từ đó -> Tiếp tục thay đổi

Nói cách khác thì bạn cần có một nhận xét ngắn đến mức tối đa để có thể vận hành quy trình của mình ngay lập tức.

Phản hồi có thể được đưa ra dưới nhiều hình thức như sau:

  • Pair Programming
  • Code Reviews
  • Unit Tests
  • Automated Integration Tests
  • Automated Acceptance Tests
  • Automated Regression Tests
  • Exploratory Testing

Đương nhiên, kiểm thử viên trong mô hình agile phải chắc chắn rằng kịch bản kiểm thử là thích hợp và hiệu quả, hơn nữa cũng phải được viết và thực thi ở nhiều cấp độ khác nhau.

4. Triển khai tốt mô hình agile

Một kiểm thử tốt phải đọc và hiểu agile manifesto và triển khai nguyên lý của nó trong các task hàng ngày. Kiểm thử viên trong mô hình agile phải biết được rằng họ là một phần của delivery team và không có sự phân biệt nào giữa giai đoạn kiểm thử và giai đoạn phát triển, đúng hơn là kiểm thử là một hoạt động liên tục được thực hiện như một phần của quá trình phát triển.

Một kiểm thử viên giỏi phải biết rằng thay đổi là điều chắc chắn sẽ xảy ra và sự thay đổi thứ tự ưu tiên là việc sẽ xảy ra hàng ngày. Điều đó có nghĩa là những production bug được fix ở những phút cuối cùng phải được kiểm thử tốt giống như khi kiểm thử một chức năng hoặc một tính năng mới.

Các kiểm thử viên phải hiểu rõ được những thuật ngữ riêng của agile và cách chúng hoạt động.

Những cuốn sách nên tham khảo là Agile Testing của Lisa Crispin, User Stories Applied của Mike Cohn, Specifications By Example của Gojko Adzic.

5. Kiến thức về domain

Trong yêu cầu kiểm thử tính hiệu quả của những thiết kế hướng đến mục tiêu phát hiện bug và thực thi thành công kiểm thử thăm dò, kiểm thử viên trong mô hình agile cần phải hiểu và có kiến thức tốt về domain ứng dụng.

Một kiểm thử viên khôn ngoan trong mô hình agile sẽ dành thời gian để học những thuật ngữ chuyên ngành về những domain đặc thù, hiểu về sơ đồ cấu trúc và đưa ra những trường hợp có giá trị kinh tế.

6. Tổng thể quá trình kiểm thử agile

Mặc dù hiểu biết về domain là yếu tố không thể thiếu trong quá trình kiểm thử với mô hình agile, nhưng vì thời gian ngắn và khối lượng công việc khổng lồ, kiểm thử viên trong mô hình agile phải là những người chuyên nghiệp trong kiểm thử, họ có thể thiết kế ít kịch bản test nhưng có độ bao phủ cao và thoải mái khi sử dụng các công nghệ như pairwise để thiết kế kịch bản kiểm thử

Họ có thể thu thập kiến thức về domain bằng việc nói chuyện với BAs và developer hoặc làm việc với ứng dụng hay đọc tài liệu mô tả.

7. Hăng hái học tập và hoàn thiện bản thân

Các thành viên trong một team agile nên có mọi kỹ năng cần thiết để xây dựng và đưa ra những giải pháp tốt, bao gồm cả những kỹ năng kỹ thuật và kinh tế.

Những thành viên trong team agile nên có nhiều kỹ năng. Các developer cần biết tầm quan trọng của kiểm thử (hoặc ít nhất họ nên biết) và viết kiểm thử tự động thích hợp.

Cũng như vậy, một kiểm thử viên tốt trong mô hình agile cần phải theo kịp những thay đổi về công nghệ, học những kỹ năng mới như coding/ Programming, HTTP, cơ sở dữ liệu, kiểm thử API, kiểm thử kỹ thuật để cùng làm việc với developer và giữ cho tiến độ dự án được thực hiện nhanh chóng.

Tuy nhiên, nói vậy không có nghĩa là sẽ không có chỗ cho một kiểm thử viên không biết code trong team agile. Một kiểm thử viên có kỹ năng tốt sẽ đưa đến giá trị lớn cho agile team, tuy nhiên nếu như có thêm kiến thức kỹ thuật sẽ giúp họ phát triển sự nghiệp hơn nữa và đáp ứng được nhiều yêu cầu hơn.

8. Kết luận

Chìa khóa thành công của một agile team là thái độ cá nhân của từng thành viên trong team, họ phải cùng nhau chia sẻ mục tiêu và thước đo thành công của team. Điều đó đảm bảo rằng team và những thành viên trong team được lèo lái và thúc đẩy bằng tư tưởng: “Mọi người vì một người, một người vì mọi người”. Chúng ta mong muốn mọi người làm việc với thái độ “Tôi có thể làm gì để giúp đỡ ở đây?” hơn là thái độ “ Đó không phải vấn đề của tôi”.