[AT-01] Giới thiệu về Agile Testing
1. Agile testing là gì?
**Các giá trị của Agile: **
Có bốn giá trị cốt lõi cho phép các nhóm đạt được hiệu suất cao (còn gọi là tuyên ngôn Agile)
– Cá nhân và sự tương tác hơn là quy trình và công cụ;
– Phần mềm chạy tốt hơn là tài liệu đầy đủ;
– Cộng tácvới khách hàng hơn là đàm phán hợp đồng;
– Phản hồi với các thay đổi hơn là bám sát kế hoạch.
**Ý nghĩa của Agile testing: **
– Kiểm thử viên trong nhóm Agile sẽ phải làm nhiều việc hơn so với một kiểm thử viên thông thường. Từ việc liên hệ với khách hàng, đưa ra gợi ý cho khách hàng và PO (Product owner – chủ sản phẩm) để họ làm rõ yêu cầu hơn và giúp nhóm phát triển hiểu được cách kiểm thử và điều hướng phát triển mã nguồn
– Kiểm thử viên trong mô hình Agile sẽ kiểm thử theo hướng business-facing và customer-facing
– Trong kiểm thử Agile, Exploratory testing (kiểm thử thăm dò) được khuyến khích.
Các Vai trò trong nhóm Agile:
Nhóm khách hàng (customer team)
– Nhóm bao gồm những người liên quan đến nghiệp vụ của một sản phẩm/dự án, như các chuyên gia thương mại, chủ sản phẩm, chuyên gia lĩnh vực, quản lý sản phẩm, phân tích nghiệp vụ, …
– Nhóm viết stories và các features; cung cấp examples cho nhóm phát triển; đồng thời giao tiếp, hợp tác và trả lời các câu hỏi từ nhóm phát triển; xem xét và nghiệm thu khi nhóm phát triển kết thúc một story.
– Kiểm thử viên là thành viên không thể thiếu trong nhóm
Nhóm phát triển (Developer team)
– Nhóm bao gồm các thành viên liên quan đến việc phát triển một sản phẩm/dự án, như lập trình viên, chuyên gia bảo mật, quản lý hệ thống, quản lý cơ sở dữ liệu, kiến trúc sư, …
– Kiểm thử viên cũng là một thành viên không thể thiếu trong nhóm; họ hỗ trợ nhóm phân phối sản phẩm với chất lượng và giá trị tốt nhất.
Tương tác giữa hai nhóm
– Hai nhóm làm việc với nhau trong toàn bộ thời gian phát triển sản phẩm/dự án
– Khách hàng đưa ra mức độ ưu tiên của các tính năng dựa vào ý kiến của nhóm phát triển.
– Nhóm phát triển sẽ quyết định có thể thực hiện được bao nhiêu việc trong một lần phân phối
– Kiểm thử viên đối với mỗi nhóm, đều có vai trò riêng biệt: Hiểu được tầm nhìn của khách hàng, cũng như hiểu được sự phức tạp của việc hoàn thành.
Nhóm truyền thống và nhóm Agile
Làm việc trong nhóm truyền thống
– Trong mô hình phát triển truyền thống, kiểm thử viên thường đóng vai trò như người “gác cổng” trong việc đảm bảo chất lượng của dự án.
Kiểm thử được diễn ra vào giai đoạn cuối của quá trình phát triển, ngay trước khi phân phối sản phẩm
– Thời gian kiểm thử thường bị ít đi, do thời gian viết mã luôn chậm hơn so với dự định.
– Xảy ra vòng lặp code-fix vào cuối dự án.
Làm việc trong nhóm Agile
– Trong mô hình Agile, chất lượng luôn là trách nhiệm của toàn bộ nhóm và sản phẩm bàn giao là sự kết hợp của cả nhóm khách hàng và nhóm phát triển.
– Kiểm thử sẽ tiến hành theo các vòng lặp nhỏ của sản phẩm
– Kiểm thử viên sẽ thực hiện kiểm thử thăm dò thủ công; và làm cặp với các lập trình viên để thực hiện kiểm thử tự động cho mỗi story.
Phương thức tiếp cận toàn nhóm
– Đây là một trong những chìa khóa quan trọng trong việc áp dụng Agile.
– Toàn bộ nhóm đều có trách nhiệm đối với chất lượng của sản phẩm/dự án.
– Luôn có một mục tiêu chung cho toàn nhóm và mọi người trong nhóm đều có thể hỏi và nhận được sự giúp đỡ từ những người khác.
2. Mười nguyên tắc cho kiểm thử viên Agile
a. Một kiểm thử viên Agile như thế nào?
Một kiểm thử viên Agile là người:
– Có thể bao quát được toàn bộ sự thay đổi
– Hợp tác tốt với nhóm phát triển và nhóm khách hàng
– Hiểu được các khái niệm kiểm thử, có thể tài liệu hóa các yêu cầu và định hướng phát triển.
– Các kiểm thử viên Agile đều phải có các kỹ năng và kỹ thuật tốt
– Biết tận dụng sức mạnh của toàn nhóm để thực hiện tự động hóa kiểm thử
– Có kinh nghiệm về kiểm thử thăm dò
– Sẵn sàng học hỏi từ khách hàng để đáp ứng yêu cầu của khách hàng.
Ai có thể đảm nhận vai trò Kiểm thử viên Agile
– Là một thành viên trong nhóm, có định hướng theo kiểm thử Agile
– Kiểm thử viên Agile có thể bắt nguồn từ các lĩnh vực khác nhau
– Kỹ năng quan trọng nhưng thái độ quan trọng hơn
– Luôn có xu hướng nhìn sự việc, sự vật dưới một bức tranh toàn cảnh.
– Luôn đứng trên quan điểm của khách hàng và hướng đến khách hàng.
b. Tư duy kiểm thử Agile
– Một dự án Agile thành công là kết quả của một nhóm cùng làm tốt một việc.
– Kiểm thử viên Agile luôn sẵn sàng thu thập, chia sẻ thông tin, làm việc với khách hàng và chủ sản phẩm để giúp họ mô tả đầy đủ yêu cầu.
– Kiểm thử viên Agile phải có các kỹ năng và tư duy cần thiết để tìm kiếm các cách thức giúp nhóm đưa ra sản phẩm tốt nhất.
– Họ luôn học hỏi những kỹ năng mới, thách thức mới, không giới hạn bản thân trong việc giải quyết các vấn đề kiểm thử.
– Có thể cung cấp thông tin giúp nhóm nhìn lại những gì mình đã làm được và những gì chưa làm được.
– Luôn sáng tạo, đưa ra ý tưởng mới, và sẵn sàng đảm nhận bất kỳ vai trò và công việc nào. Tập trung vào khách hàng, luôn có cái nhìn tổng thể.
– Một kiểm thử viên tốt luôn có khả năng hiểu được phần mềm có thể lỗi ở đâu và như thế nào, làm thế nào để theo dõi được các lỗi (failures) xảy ra.
Tư duy trong kiểm thử Agile là sự định hướng, hợp tác, mong muốn tìm hiểu, đam mê để mang lại giá trị thương mại một cách kịp thời.
c. Áp dụng các nguyên tắc và giá trị Agile
Cung cấp phản hồi liên tục
– Phản hồi là một trong những chìa khóa thành công của phát triển Agile
– Một tronng những đóng góp của kiểm thử viên Agile là giúp khách hàng và chủ sản phẩm làm rõ được yêu cầu, bằng cách thực hiện kiểm thử và đưa ra các ví dụ.
– Kiểm thử viên và các thành viên khác phải kiểm thử sớm để đưa ra các phản hồi có nghĩa. Khi nhóm gặp trở ngại, phản hồi giúp nhóm loại bỏ được các trở ngại đó.
Mang lại giá trị cho khách hàng
– Phát triển Agile mang lại giá trị cho khách hàng bằng việc phân phối sản phẩm theo từng gói/vòng lặp nhỏ, nó cung cấp chính xác chức năng mà khách hàng ưu tiên phát triển.
– Để đảm bảo giá trị đều được phân phối trong mỗi vòng lặp, nhóm cần xem xét story để xác định “critical path” hay “thin slice” cho các chức năng cần thiết. Chúng ta cần đảm bảo các chức năng có thể hoạt động.
Giao tiếp trực tiếp (face-to-face)
– Việc giao tiếp thường xuyên giúp mọi thứ trở nên minh bạch và công việc trở nên tốt hơn.
– Một buổi thảo luận, phải có đầy đủ kiểm thử viên, lập trình viên và chủ sản phẩm
– Kiểm thử viên Agile cần giúp khách hàng và lập trình viên có thể hiểu nhau và có chung một ngôn ngữ.
– Kiểm thử viên nên liên tục cộng tác và thảo luận với cả hai nhóm khách hàng và nhóm kỹ thuật.
Cam đảm
– Chúng ta phải cam đảm để trả lời 3 vấn đề:
– Chúng ta có thể hoàn thành kiểm thử cho mỗi story trong khoảng thời gian ngắn không?
– Thực hiện kiểm thử cùng với phát triển như thế nào?
– Kiểm thử như thế nào là đủ?
– Cần cam đảm để chấp nhận thất bại của chính mình, vì chúng ta có thể học hỏi được từ thất bại đó và tìm ra cách để đảm bảo nó không xảy ra nữa.
– Cần cam đảm để chấp nhận lỗi của người khác, vì nó là cách để chúng ta có thể học hỏi.
– Cần cam đảm để không ngại hỏi và yêu cầu giúp đỡ từ người khác bởi vì nhóm Agile luôn mở và chấp nhận những ý tưởng mới.
Đơn giản hóa vấn đề
– Làm những việc đơn giản nhất mà chúng ta có thể làm trước. Cần có một cách tiếp cận đơn giản để đảm bảo phần mềm đáp ứng các yêu cầu của khách hàng.
– Kiểm thử Agile sử dụng các công cụ, kỹ thuật đơn giản như một bảng tính hoặc một danh sách để xác thực chức năng đó có đảm bảo chất lượng, có đáp ứng mong muốn của khách hàng không.Thực hiện kiểm thử tự động ở mức thấp nhất có thể, thậm chí chỉ cần những trường hợp smoke đơn giản.
– Việc đơn giản hóa giúp chúng ta tập trung vào các rủi ro, ROI, giảm thiểu những khó khăn gặp phải.
Cải tiến liên tục
– Trong tư duy của kiểm thử viên Agile là không ngừng học hỏi, tìm kiếm các cách để làm cho công việc trở nên tốt hơn.
– Nhóm Agile luôn tìm kiếm các công cụ, kỹ năng và thực hành để làm tăng giá trị hơn nữa. Những vòng lặp ngắn giúp nhóm đưa ra các thử nghiệm, đánh giá kết quả sử dụng, từ đó có những quyết định đúng đắn về việc áp dụng hay từ bỏ để lựa chọn lại.
– Retrospective là một thực hành quan trọng của Agile, giúp nhóm đưa ra các vấn đề, trở ngại; từ đó tìm ra được các hướng, các cách tốt nhất để giải quyết chúng. Nó cũng là kênh quan trọng để kiểm thử viên dựa vào để cải tiến khả năng kiểm thử.
Đáp ứng với sự thay đổi
– Đây là giá trị cốt lõi của Agile, nhưng nó lại là điều khó khăn đối với kiểm thử viên. Việc thay đổi yêu cầu thường xuyên sẽ là cơn ác mộng đối với kiểm thử viên, nhưng với một kiểm thử viên Agile, thì luôn phải ‘chào đón’ và thích nghi với sự thay đổi đó.
– Với thay đổi trong Agile, chúng ta có thể tiếp nhận và sẽ thực hiện chúng ở vòng lặp tiếp theo, hoặc trong lần release tiếp theo.
Kiểm thử tự động là giải pháp tốt cho việc thích nghi với sự thay đổi.
Tự quản
– Kiểm thử viên Agile là một phần của nhóm tự quản.
– Toàn bộ thành viên của nhóm phát triển đều phải nghĩ về kiểm thử và kiểm thử tự động. Tuy nó là vấn đề khó, nhưng sẽ dễ dàng hơn nếu cả nhóm cùng nhau thực hiện. Bất kỳ bất đề nào về kiểm thử, sẽ dễ dàng hơn khi nhiều người với nhiều kỹ năng khác nhau cùng giải quyết vấn đề đó.
– Khi nhóm Agile đối mặt với các vấn đề lớn, nó không phải trách nhiệm của ai cả. Cả nhóm cùng thảo luận để đưa ra cách giải quyết và quyết định làm như thế nào và ai sẽ là người thực hiện.
Tập trung vào con người
– Giá trị và nguyên tắc của Agile được tạo ra dựa trên nền tảng con người. Mục tiêu là giúp mỗi cá nhân và toàn nhóm đạt được thành công.
– Mỗi thành viên trong nhóm Agile phải tôn trọng lẫn nhau và công nhận thành tích của mỗi cá nhân.
– Mỗi người đều có cơ hổi để học hỏi, trưởng thành và phát triển kỹ năng của họ.
Niềm vui
– Tất cả mọi người nên tìm thấy niềm vui trong công việc của họ.
– Sự đam mê trong công việc của kiểm thử viên Agile chính là phần thưởng xứng đáng.
Được biên dịch từ tài liệu “Agile Testing A Practical Guide for Testers and Agile Teams” của Addison Wesley (năm 2009)