How To Become An Agile Tester

1. Giá trị Agile

"Agile" thì mọi người vẫn nghe thường ngày, nhưng để hiểu đầy đủ ý nghĩa có nó thì có nhiều trường hợp. Một cách định nghĩa mô hình phát triển agile là thông qua "Tuyên ngôn agile". Biết những giá trị của bảng tuyên ngôn này cho ta hiểu được cách thức của mô hình agile:

2. Vậy "Agile testing" nghĩa là gì?

Chúng ta phải chú ý rằng chúng ta sử dụng từ "tester" để mô tả một người làm việc kiểm tra và giám sát chất lượng sản phẩm (QA). Bạn cũng thấy chúng ta thường dùng từ "lập trình viên" (programmer) để nói đến mà hoạt động chính của họ là viết ra các sản phẩm phần mềm. Lập trình viên sẽ chịu trách nhiệm chuyển đổi yêu cầu của khách hàng thành sản phẩm thực tế. Chúng ta không gọi họ là "nhà phát triển" (developer) bởi vì mọi người tham gia vào quá trình phát triển phần mềm thì đều gọi là nhà phát triển. Tester thì chịu trách nhiệm chủ yếu là các "testing tasks". Mỗi thành viên trong agile team đều tập trung vào vấn đề cho ra cung cấp sản phẩm chất lượng cao để nâng cao giá trị của team. Agile tester làm công việc chắc chắn rằng sản phẩm do team tạo ra đã đạt yêu cầu mà khách hàng cần hay không. Có nhiều "practices" được sử dụng cho kiểm thử agile. Lập trình viên có thể sử dụng "lập trình theo hướng kiểm thử" (Test-driven development - TDD), để nâng cao chất lượng code.

Quy trình phát triển agile khuyến khích ta giải quyết các vấn đề của team. PO, lập trình viên, tester cũng nhau nâng cao chất lượng sản phẩm của họ. Trên tất cả, tester, chúng ta làm việc với mọi người trong team và phải đảm bảo chất lượng tuyệt nhất cả thể.

3. Vai trò và hoạt động của các thành viên trong team agile

Ta đang nói đến hai vai trò đó là team khách hàng và team phát triển. Điểm khách nhau giữa họ là kỹ năng mà họ mang đến trong quá trình phát triển sản phẩm.

Team khách hàng

Bao gồm chuyên gia nghiệp vụ, PO (product owner), quản lý sản phẩm, nhà phân tích nghiệp vụ,... mọi người liên quan đến phần nghiệp vụ của sản phẩm. Team khách hàng viên lên những "câu chuyện" (stories) hoặc tập những tính năng mà team phát triển dựa vào đó để làm ra sản phẩm. Họ liên lạc cùng với team trong mỗi chu kỳ, trả lời các câu hỏi, đưa ra các ví dụ về sản phẩm,...

Tester cũng là một thành viên cầu nối của team này, chịu trách nhiệm làm rõ yêu cầu và ví dụ và giúp khách hàng diễn đạt yêu cầu của họ thành các testcase.

Team phát triển

Người chịu trách nhiệm chính trong team này là nhà phát triển. Nguyên tắc của agile khuyến khích các thành viên trong team để tham gia nhiều hoạt động trong team, trau dồi nhiều nhất các kỹ năng của các thành viên khác nếu có thể.

Tester cũng ở trong eam phát triển, bởi vì kiểm thử là thành phần chính của quy trình phát triển agile. Tester vừa đóng một nữa vai trò của khách hàng và tham gia vào team phát triển để cho ra sản phẩm có chất lượng cao nhất.

4. Kiểm thử agile có gì khác?

Bây giờ chúng sẽ tìm hiểu vậy liệu kiểm thử agile có gì khác với quá trình kiểm thử truyền thống.

Làm việc với team truyền thống

Thông thường chúng ta thường sẽ bắt đầu nhận yêu cầu, phân tích, phát triển và cuối cùng là kiểm thử sản phẩm đã hoàn thành trong một chu kỳ phát triển phần mềm. Trong thực tế, chúng ta thường đóng vai trò, nói với người quản lý nghiệp vụ rằng: "Xin lỗi, yêu cầu phải cố định và chúng ta chỉ có thể thêm chức năng mới và release tiếp theo".

Nếu vai trò là leader của team tester, chúng ta cũng không thể điều chỉnh những đoạn code đã được viết, hoặc nếu bất kỳ lập trình viên kiểm tra đoạn code của họ. Chúng ta chỉ có thể hoàn thành test phase sau khi code đã hoàn thành. Quá trình phát triển thì rất lâu. Một team truyền thống thì họ tập trung chắc chắng rằng tất cả yêu cầu của dự án phải được đưa ra cho một sản phẩm cuối cùng. Nếu mọi thứ khong sẵn sàng, release có thể sẽ bị trì trệ. Team phát triển không thường thêm yêu cầu mới vào trong release. Tester xem tài liệu yêu cầu và lập kế hoạch test của họ, và tiếp theo họ chờ công việc của lập trình viên xong để đến lượt test.

Làm việc trong agile team

Chuyển qua một chu kỳ phát triển ngắn nhanh của dự án agile sẽ giúp giảm "shock" cho các thành viên trong team. Chúng ta có thể định nghĩa yêu cầu và tiếp theo test và sẵn sàng đưa ra sản phẩm trong một, hai hoặc bốn tuần?

Agile team làm việc với yêu cầu và có những hiểu biết chi tiết về yêu cầu của hệ thống. Họ tập trung và giá trị và họ tạo ra, và họ đưa ra các đánh giá để đánh độ ưu tiên của các chức năng. Tester không ngồi và chờ việc, họ sẵn sàng và chờ thành viên qua mỗi chu kỳ phát triển.

Truyền thống vs Agile

Agile là các vòng lặp và phát triển. Nghĩa là tester test mỗi phần mới được phát triển và kết thúc nó. Một vòng lặp phải đủ ngắn cỡ một tuần hoặc quá dài tầm một tháng. Team phát triển và kiểm thử những phần nhỏ trong code, chắc rằng chúng hoạt động đúng, và chuyển phần đó qua trang thái "build". Lập trình viên không bao giờ đi trước tester, bởi vì story không "done" cho đến khi nó đã được kiểm tra.

Mỗi dự án, mỗi team, và mỗi chu kỳ là khác nhau. Vậy làm thế nào team của bạn giải quyết vấn đề dựa vào loại vấn đề, con người, và công cụ mà bạn có thể sử dụng. Như một thành viên agile team, bạn sẽ cần thích nghi nếu team cần.

Tạo ra testcase từ tài liệu yêu cầu thường được tạo bởi nhà phân tích nghiệp vụ trước cả khi mọi người bắt đầu viết một dòng code, mội ai đó sẽ viết testcase cho yêu cầu cho mỗi story mỗi khi việc code bắt đầu. Điều này thường là việc đóng góp công thức giữa team nghiệp vụ và tester hoặc với team phát triển. Những testcase cụ thể cho từng chức năng, dựa trên những ví dụ được cung cấp bởi chuyên gia nghiệp vụ đưa ra các yêu cầu của họ. Tester sẽ dựa trên các yêu cầu và tìm ra các bug quan trọng và định nghĩa các testcase để chắc rằng nó không bị bỏ qua. Tester phải cặp với một lập trình viên khác để viết các testcase kiểm thử tự động kho mỗi story chạy. Testcase kiểm thử tự động được thêm vào các tập testcase. Khi testcase của một chức năng đã hoàn thành, team có thể nhận ra rằng chức năng đó đã hoàn thành.

Như một tester trong agile team, bạn là mắt xích trong việc chuyển code sang thành phẩm. Bạn phải chạy các mã hoặc kiểm thử thủ công để chắc rằng tất cả các thành phần trong release là ok. Cả team tham gia trong buổi họp tổng kết và nâng cao kỹ năng cũng như hạn chế các nhược điểm trong quá trình phát triển trong mỗi chu kỳ phát triển.

Điểm khác nhau quan trọng nhất của kiểm thử truyền thống và agile chính là tester trong dự án agile nhanh chóng phản hồi từ quá trình test. Nó điều chỉnh dự án đi tới và không có các vấn đề làm dừng quá trình phát triển dự án.

5. Tổng Kết

Hiểu hoạt động của tester trong agile team giúp bạn thấy được team của bạn với giá trị mà một tester mang lại. Học các kỹ năng của kiểm thử agile sẽ giúp team của bạn sẵn sàng đưa ra các sản phẩm chất lượng đến khách hàng.

Trong phần này. chúng ta được giải thích khi nào chúng ta dùng "kiểm thử agile".

  • Chúng ta thấy tuyên ngôn agile quan hệ với kiểm thử.
  • Vai trò của mỗi người như "tester", "lập trình viên" và "khách hàng".
  • Giải thích thế nào là kiểm thử agile, cùng với tập trung vào giá trị nghiệp vụ và chuyển tải yêu cầu chất lượng từ khách hàng.
  • Khác biệt giữa kiểm thử truyền thống và agile.

Nguồn Tham Khảo:

All Rights Reserved