Vai trò test lead trong dự án Agile là gì?
Trong thế giới phần mềm ngày nay, phương pháp agile đã không còn quá xa lạ, mà đã trở thành công cụ được sử dụng bởi nhiều công ty, nhưng nhiều tester sẽ tự hỏi, vậy con đường sự nghiệp đối với tester truyền thống sẽ như thế nào. Nhiều người trong chúng ta mặc định coi mục đích trong nghề làm test ...
Trong thế giới phần mềm ngày nay, phương pháp agile đã không còn quá xa lạ, mà đã trở thành công cụ được sử dụng bởi nhiều công ty, nhưng nhiều tester sẽ tự hỏi, vậy con đường sự nghiệp đối với tester truyền thống sẽ như thế nào. Nhiều người trong chúng ta mặc định coi mục đích trong nghề làm test là phải lên làm quản lý, nhưng với agile ra đời thì mục tiêu đó phần nào lu mờ đi chút ít. Theo nguyên lý Scrum, tất cả các thành viên đều phải chịu trách nhiệm chung về chất lượng và role mà chúng ta làm trong các dự án này đều là team member cả thôi. Vậy câu hỏi đặt ra là: test leader có cần thiết trong agile không? Nếu cần thì, test lead có vai trò gì trong dự án agile? Trong bài này ta sẽ hiểu được tại sao test lead vẫn quan trọng trong dự án agile như thường, miễn là hoàn thành task, không quan trọng cách ta gọi role đó là như thế nào.
Trong 1 team test, thì ai là người lead?
Thử tưởng tượng công ty chúng ta chỉ có 1 team DUY NHẤT sử dụng Scrum. Chúng ta phát triển sản phẩm qua nhiều sprint, team thì có Product Owner, Scrum Master, và các team member. Product Owner giải thích mục đích của sản phẩm, Scrum Master bảo đảm là team member sẽ bám theo qui trình. Team sẽ tự chọn task trên bảng Scrum và thực hiện theo những gì cần làm trong sprint. Mô tả đơn giản thì là vậy.
Công việc của tester sẽ là chúng ta xem giấy dán (sticky note) viết gì thì test các chức năng chúng ta chịu trách nhiệm. Khi nào xong, ta sẽ dán sticky note đó vào cột kế tiếp trong bảng Scrum (phương pháp kanban). Toàn bộ qui trình khá nuột nà, ngay cả khi không có test lead nào. Tester chúng ta làm gì? Chúng ta chọn sticky note từ bảng Scrum hoàn toàn ngẫu hứng và cứ việc test theo đó? Hẳn là không rồi. Ngay cả khi ta quyết định test phần này phần kia thì ta cũng phải nghĩ xem test phần này trong sprint này sẽ tốn bao nhiêu thời gian, regression test mất bao lâu, thực hiện test như nào để hiệu quả và thông minh nhất có thể.
Thường thì các tester sẽ cùng nhau làm các công việc đó. Rồi còn phải quyết định xem chiến thuật test như thế nào, và phải báo cáo kết quả ở cuộc họp daily scrum bằng việc di chuyển sticky note trên bảng kanban. Bất kể chúng ta nhìn nhận như thế nào, thì đó là các task được assign cho test leader. Điều này có thể được xem là chúng ta tự lên kế hoạch cho công việc của chính chúng ta, và chúng ta tự mỗi người là 1 test lead vậy. Nếu team chúng ta trải qua nhiều sprint thành công thì sau cùng phải tạo ra 1 file test stragegy để quản lý khối lượng regression test lẫn các chức năng mới. Nói chung, chúng ta thực hiện tất cả nhiệm vụ mà 1 test manager thường làm.
Sản phẩm lớn hơn / độ phức tạp nhiều hơn? Bạn cần chạy các team song song!
Tất cả những điều kể trên diễn ra trong bối cảnh chỉ có 1 nhóm Scrum team, nhưng giả sử nếu công ty của chúng ta có nhiều nhóm song song cùng làm 1 sản phẩm - thì sao? Chúng ta cứ thế làm mà không cần 1 test lead đúng nghĩa, như khi làm chỉ với 1 Scrum team? Rốt cuộc thì mỗi team có task riêng và phải chịu trách nhiệm hoàn thành task đó. Tuy nhiên, ai sẽ chịu trách nhiệm khi tích hợp tất cả mọi thứ lại với nhau? Làm thế nào để test tất cả, và đảm bảo là mọi hoạt động test được tốt nếu không có 1 test leader? Một trong những task quan trọng nhất của test leader trong dự án phát triển kiểu truyền thống là lên test plan và test strategy. Nếu ta không đưa ra 1 chiến thuật test chung thì có khả năng cao là tất cả mọi người sẽ tự tạo test strategy của riêng họ. Điều đó sẽ dẫn tới việc 2 người sẽ làm lẫn task của nhau hoặc tệ hơn, tưởng rằng người khác đang làm task của mình do đó sẽ bỏ 1 số vùng đáng lẽ ra mình phải test. Test lead ở đây sẽ giúp ta bảo đảm được chất lượng bằng cách đưa ra chiến lược test và cách tiếp cận đúng đắn và chung nhất, ngay cả khi dự án đang làm là agile. Test lead sẽ không ngồi trong 1 team nào cả, và nên ngồi ngoài các team để tập trung vào tổng thể chung của dự án.
Hỗ trợ việc test trong và ngoài dự án
Test lead là người mà test member tìm tới. Không chỉ giúp các tester trong team thực hiện các task test của từng cá nhân, mà còn là người lên tinh thần cho team member khi mệt mỏi. Test lead còn có nhiệm vụ luôn thúc đẩy cải tiến liên tục chất lượng sản phẩm theo cái nhìn của tester.
Hơn nữa, ta cần ai đó đánh giá được cách test nào tốt nhất trong một team test to, từ quan điểm testing, và sử dụng cách test đó cho cả đội nhóm. Việc đó khá là khó cho người thường, vì không ai nhận ra được cách tiếp cận test nào là tốt hơn. Thì test lead cũng phải làm việc đó, để sao cho chất lượng test được đồng đều, bằng việc sao chép qui trình test đã làm tốt ở team này sang team kia. Song song với đó, còn phải liên tục tìm tòi các cách tiếp cận test mới để test sao cho hiệu quả hơn nữa. Một giải pháp rất hay là tổ chức 1 buổi retrospective với tất cả thành viên trong các team. Mục tiêu của buổi retro này là nhận diện những điểm được và chưa được của cách làm việc hiện tại nhằm cải tiến qui trình, đồng thời cho các nhân viên học hỏi được, đưa ra được ý kiến lẫn nhau. Trong các dự án Scrum lớn hơn, nguyên tắc “Scrum of Scrums” thường được triển khai. Trong các cuộc meeting thường ngày thì đại diện mỗi team sẽ gặp nhau để tập trung bàn về các hoạt động bị trùng lặp lên nhau và các vấn đề khi test tích hợp. Áp dụng nguyên tắc như vậy thì ta sẽ tạo ra nguyên tắc “test of tests” để tập trung vào các vấn đề liên quan tới testing. Nếu là test lead trong dự án agile thì bạn phải làm được điều này. Scrum Master có thể làm điều đó, nhưng thường họ không có kiến thức testing đủ để đưa cái cải tiến này lên một level mới. Test leader còn phải gặp các bên liên quan chẳng hạn Khách hàng, bên bộ phận IT hay ai đó chịu trách nhiệm tiền nong trong công ty. Hẳn là không có ai chịu trách nhiệm cho mấy chuyện này, nhưng nó cũng cần được quản lý. Các tester của từng team không thể nào mà chạy tới cùng 1 người để tìm trợ giúp được mà phải quản lý tập trung lại để làm việc cho hiệu quả, ở đây là test lead cầm chịch. Một lần nữa, ta đều biết Scrum Master thường không có kiến thức testing nào để có thể giải thích nhu cầu đó hoặc có thể phân tích các kết quả. Trong bất kì dự án nào, cũng phải có ai đó đảm nhận vai trò đó, và đó là test leader.
Agile test leader? Đương nhiên là cần phải có!
Luôn luôn cần 1 cá nhân nào đó làm test leader, cả trong dự án agile cũng vậy. Đó là người phân chia công việc nhóm, tổng hợp kết quả test, đưa ra chiến lược test và lên kế hoạch thứ tự test nào phải được thực hiện trước. Nếu có 1 cái tên để gọi người đó, đó hẳn phải là test leader. Test leader giữ 1 vai trò không thể thiếu bất kể phương pháp phát triển phần mềm đó là gì, nói ngắn gọn, vai trò test leader luôn cần thiết.