Mindset test trong Agile và vài trò của Agile tester
Phát triển phần mềm linh hoạt (agile software development – gọi tắt là Agile) là một triết lí cùng với nhóm các phương pháp và phương pháp luận phát triển phần mềm dựa trên các nguyên tắc phát triển phân đoạn lặp (iterative) và tăng trưởng (incremental), theo đó nhu cầu và giải pháp tiến hóa thông ...
Phát triển phần mềm linh hoạt (agile software development – gọi tắt là Agile) là một triết lí cùng với nhóm các phương pháp và phương pháp luận phát triển phần mềm dựa trên các nguyên tắc phát triển phân đoạn lặp (iterative) và tăng trưởng (incremental), theo đó nhu cầu và giải pháp tiến hóa thông qua sự hợp tác giữa các nhóm tự quản và liên chức năng. Agile thường sử dụng cách lập kế hoạch thích ứng (adaptive planning), việc phát triển và chuyển giao theo hướng tiến hóa; sử dụng các khung thời gian ngắn và linh hoạt để dễ dàng phản hồi lại với các thay đổi trong quá trình phát triển. Ngày nay, triết lí Agile đã vượt xa khỏi khu vực truyền thống của mình là phát triển phần mềm để đóng góp sự thay đổi trong cách thức làm việc, quản lí, sản xuất ở các ngành khác như sản xuất (manufacturing), dịch vụ, sales, marketing, giáo dục v.v. Đối với nghề kiểm thử thì trong một team Agile, các kiểm thử viên cần phải có sự hợp tác chặt chẽ với các thành viên khác trong team và các bên liên quan. Điều này khá hữu ích và cần thiết cho một kiểm thử viên.
Các Mindset testing trong Agile
Agile mindset là "Không có thất bại, chỉ có thông tin phản hồi." Đó là về việc tham gia tất cả mọi thứ như những bài học, điều chỉnh hành động theo những thông tin phản hồi, và hướng đến kết quả mong muốn, kết quả là cải tiến liên tục.
Lý tưởng cho mọi người là những gì mà team quyết định đó là thuộc về Agile mindset và tất cả bắt đầu từ các cá nhân. Tôi đã làm việc với nhiều người, những người mà áp dụng mindset này. Họ làm việc với thái độ tích cự, có thể sáng suốt đưa ra được các gợi ý trong những hoàn cảnh khó khăn. Họ đưa ra các câu hỏi để hiểu lợi ích tốt nhất cho doanh nghiệp, có những giải pháp sáng tạo dựa vào các cuộc thử nghiệm. Họ có thái độ thực tế và thiết thực tập trung vào việc giúp cho sự thành công của team.
Các kiểm thử viên Agile cần phải rũ bỏ các nguyên tắc và phương thức làm việc theo mô hình phát triển truyền thống. Để thành công với vai trò một kiểm thử viên Agile, thì trước tiên chúng ta phải có một mindset đúng đắn.
Mindset test trong Agile, có thể được tóm tắt trong 12 nguyên tắc dưới đây:
- Hỗ trợ chất lượng hơn là đảm bảo chất lượng
- Thực hiện test liên tục hơn là test ở giai đoạn cuối.
- Trách nhiệm thuộc về các thành viên trong team hơn là trách nhiệm của cá nhân (kiểm thử viên)
- Toàn bộ thành viên trong team cùng tiếp cận hơn là test từng phần, test độc lập
- Kiểm tra tự động hơn là thực hiện test hồi quy thủ công
- Thực hiện test kỹ thuật và API hơn là chỉ test giao diện
- Test thăm dò hơn là test theo kịch bản
- Sử dụng User stories và yêu cầu của Khách hàng hơn là đặc tả yêu cầu
- Xây dựng một sản phẩm phần mềm tốt hơn là Làm hỏng sản phẩm phần mềm đó
- Tham gia ngay từ sớm hơn là tham gia vào giai đoạn muộn
- Có vòng lặp phản hồi sớm hơn là phản hồi bị chậm chễ
- Ngăn chặn lỗi hơn là chăm chăm đi tìm lỗi
Skill cần phải có ở một Agile tester
Ngoài các kỹ năng cần thiết cho một kiểm thử viên trong mô hình dự án truyền thống Waterfall, thì một kiểm thử viên trong team Agile nên khả năng test tự động, có hiểu biết kỹ thuật TDD ( test-driven development là quy trình test trước khi dev), Acceptance test driven development, test dựa vào kinh nghiệm.
Phương pháp Agile phụ thuộc rất nhiều vào sự hợp tác, giao tiếp và tương tác giữa các thành viên trong nhóm cũng như các bên liên quan bên ngoài đội, xét nghiệm trong một nhóm Agile cần phải có kỹ năng giao tiếp tốt. Các kiểm thử viên trong đội Agile nên:
- Hãy tích cực và giải pháp định hướng với các thành viên và các bên liên quan
- Phát hiện ra những hiển thị quan trọng, chất lượng theo định hướng, nghi ngờ về sản phẩm
- Có các thông tin tích cực từ các bên liên quan (chứ không phải hoàn toàn dựa vào thông số kỹ thuật bằng văn bản)
- Đánh giá chính xác và báo cáo kết quả kiểm tra, tiến độ kiểm tra, và chất lượng sản phẩm
- Làm việc hiệu quả để xác định những user story có thể test được, đặc biệt là acceptance criteria (là những điều kiện test mà sản phẩm có thể đáp ứng được) với đại diện khách hàng và các bên liên quan
- Phối hợp trong nhóm, làm việc với các lập trình viên và các thành viên khác
- Ứng phó với thay đổi nhanh chóng, bao gồm cả thay đổi, thêm hoặc cải thiện testcase
- Lập kế hoạch và sắp xếp công việc của mình
Vai trò của test trong team Agile
Vai trò kiểm thử viên trong một team Agile bao gồm các hoạt động tạo ra và cung cấp thông tin phản hồi không chỉ về tình trạng kiểm tra, tiến độ kiểm tra, và chất lượng sản phẩm, mà còn về chất lượng quy trình. Những hoạt động này bao gồm:
- Hiểu, thực hiện và cập nhật các chiến lược thử nghiệm Agile
- Làm việc với Product Owners để xác định Acceptance Criteria và định nghĩa công đoạn hoàn thành
- Đo lường và báo cáo kết quả các trường hợp test bao phủ trên toàn bộ khối lượng test có thể áp dụng
- Đảm bảo sử dụng đúng công cụ kiểm tra (tool test)
- Cấu hình, sử dụng và quản lý môi trường kiểm tra và dữ liệu kiểm tra ( test data)
- Viết test scripts và thực hiện kiểm tra tự động, sau quá trình test thì báo cáo trở lại kết quả
- Báo cáo lỗi và làm việc với team để giải quyết
- Điều phối các team khác có liên quan
- Đảm bảo các nhiệm vụ kiểm tra phù hợp được lên kế hoạch trong phát hành và lập kế hoạch
- Tích cực hợp tác với các nhà phát triển và các bên liên quan kinh doanh để làm rõ các yêu cầu, đặc biệt là về khả năng kiểm thử, tính nhất quán và đầy đủ
- Tham gia tích cực vào các cuộc họp standup meeting hàng ngày, buổi họp Story grooming, buổi retrospectives, đề xuất & triển khai thực hiện cải tiến
Trong 1 team Agile, mỗi team member phải chịu trách nhiệm cho chất lượng sản phẩm của mình và thực hiện vai trò trong khi thực hiện test liên quan.
Tổ chức Agile có thể gặp một số rủi ro như:
- Các kiểm thử viên làm việc rất thân thiết với dev do vậy mà họ mất đi mindset test thích hợp
- Các kiểm thử viên trở nên khoan dung hoặc im lặng về những yếu kém về mặt chất lượng hay kỹ thuật của team members
- Các kiểm thử viên không thể bắt kịp những thay đổi trong một thời gian ngắn