Importance of Agile testing

Agile là một phương pháp (practice) giúp phát triển sản phẩm theo từng chu kỳ trong suốt vòng đời phát triển của dự án. Khác với test trong mô hình truyền thống waterfall, agile testing được thực hiện song song trong cả giai đoạn phát triển và kiểm thử.

Agile testing là gì?

Cốt lõi của Agile testing là về thay đổi và tạo nên sự khác biệt trong việc hiện thực hóa các yêu cầu về sản phẩm trong từng pha phát triển sản phẩm với mục tiêu “tốt dần”. Việc hiểu được điểm cốt lõi này là mấu chốt quan trọng để hiểu được phương pháp học Agile. Mục tiêu chính của Agile testing là đưa ra sản phẩm với chức năng tối thiểu có thể, chỉ có thể đạt được khi áp dụng toàn bộ quy trình phát triển Agile. Agile testing là chu trình liên tục và được thực hiện ở nhiều pha. Với mỗi phiên bản mới, các tính năng được thêm vào, chức năng được làm mượt và sản phẩm mạnh dần lên. Phương pháp này mang lại sự thỏa mãn của khách hàng cao hơn. Khi áp dụng Agile testing, việc kiểm thử không hoàn tất trong một lần mà được thực hiện trong nhiều chu kỳ. Kiểm thử càng sớm thì càng hạn chế được lỗi và lỗi tiềm ẩn trong sản phẩm cuối.

Điểm thuận lợi

Ứng dụng với chức năng tối thiểu sẽ có thể release sớm hơn, thỏa mãn khách hàng về mặt thời gian hơn. Quy trình kiểm thử trong mỗi chu kỳ phát triển sẽ đảm bảo sản phẩm thỏa mãn yên cầu trong từng chu kỳ, đó cũng là một dấu chỉ cho thấy sản phẩm đang đi đúng hướng. Quá trình kiểm thử được thực hiện bởi cả đội dự án chứ không bởi riêng đội kiểm thử. Không cần tài liệu kiểm thử phức tạp, chỉ cần tài liệu gọn nhẹ và checklisk là đủ. Các lập trình viên và kiểm thử viên chỉ chấp nhận sản phẩm hoàn thiện khi các bài test đã được thực hiện đầy đủ.

Điểm bất lợi

Cả đội kiểm thử có thể bỏ qua việc phát triển một hệ thống kiểm thử thống nhất và mạnh mẽ có thể dùng được lâu dài. Các phiên bản (release) càng được đưa ra thường xuyên thì càng nhiều lỗi tiềm ẩn. Phương pháp học agile testing đưa ra một số thách thức. Tester cần hiểu rõ các chức năng sản phẩm mà chưa được thực hiện và kiểm thử. Phương pháp Agile hứa hẹn hướng tiếp cận thiết kế phần mềm theo từng bước và từng chu kỳ lặp.

Phương pháp học Agile testing nêu ra một số thách thức. Tester cần hiểu rõ sản phẩm và các phần chức năng chưa được kiểm thử. Phương pháp Agile hứa hẹn cách tiếp cận thiết kế phần mềm bằng cách tiến từng bước một theo từng chu kỳ. Với sự hỗ trợ của Agile testing, các lỗi có thể được fix ngay cả khi sản phẩm còn đang phát triển giữa chừng. Kết thúc mỗi sprint, biên bản kiểm thử nghiệm thu với khách hàng được ký. Agile testing cho phép toàn bộ tester và lập trình viên làm việc cùng nhau và do đó tăng hiệu suất công việc. Tuy nhiên, việc này đòi hỏi sự giao tiếp chặt chẽ với lập trình viên và cùng với nhau, họ có thể phân tích toàn bộ các yêu cầu và lên kế hoạch thực hiện từng phần một trong các chu kỳ cụ thể. Các tool test tự động đóng vai trò lớn trong quá trình kiểm thử. Việc lựa chọn tool test có thể ảnh hưởng đến việc thực hiện, và nên sử dụng tool có bản quyền. Ví dụ như với tiêu chuẩn bảo mật, tool test khác nhau sẽ áp dụng mức độ bảo mật nghiêm ngặt khác nhau, đặc biệt khi truy cập các tài nguyên khác nhau.

Những hướng dẫn quan trọng cho test tự động trong Agile

Backlog cho test tự động

Backlog giúp giữ sự nhất quán và hiệu quả trong suốt quá trình kiểm thử. Nó giúp cho cái nhìn tổng quát về các cải tiến đã được xác định và đánh dấu các task tự động. Khi các mục trong backlog được xác định và hoàn thiện, chúng sẽ tạo nên nền tảng cho một bộ test hồi quy. Với một số task, lập trình viên có thể cần xem lại code, hoặc cần product-owner tham gia cùng. Dù sao thì, khi toàn bộ đội dự án cam kết chất lượng sản phẩm và liệt kê toàn bộ trong backlog một các rõ ràng, product-owner và lập trình viên sẽ có ràng buộc chặt chẽ hơn.

Sử dụng tool cần thiết

Mặc dù các framework và công cụ kiểm thử hiệu quả đã phát triển rất nhiều, chúng không phải là mục đích của quá trình test. Mục đích chính là hỗ trợ quy trình phát triển và thiết kế bằng cách phản hồi nhanh kết quả. Quá trình này là bước kiểm tra phạm vi dự án có được thực hiện đúng không, và theo đúng mong đợi không. Nó cũng cho phép stakeholder ra quyết định về dự án. Do đó, quan trọng là kết quả chứ không phải là tool test. Ngoài ra, cũng nên đảm bảo quá trình test và dữ liệu test có độ độc lập nhất định. Cụ thể là, các tool test tự động cần giao tiếp với quy trình ở mức tối thiểu, cho phép cài đặt dễ dàng và code có thể maintain. Nó cũng cho phép dự án thay đổi tool test giữa chừng, điều mà không thể thực hiện được nếu dữ liệu test liên kết quá chặt chẽ với công các công cụ test.

Không giới hạn môi trường

Khi thiết kế các bài test tự động cho dự án, cần nhớ rằng máy tính cá nhân không phải nơi duy nhất có thể thực hiện test. Toàn bộ đội dự án cần có quyền truy cập và thực hiện test chỉ bằng cách bấm nút. Lý tưởng nhất là đặt tại một server có kết nối, để nó có thể là một phần của môi trường tích hợp liên tục (CI). Các bài test cũng nên được thực hiện thường xuyên và định kỳ thông báo kết quả cuối cùng cho tất cả đội dự án.

Thời gian thực hiện

Thời gian chạy test cũng là vấn đề quan trọng cần quan tâm. Khi thời gian này dài hơn nhiều so với mong muốn, nó sẽ không đem lại giá trị vì các feedback thành phần cũng bị ảnh hưởng và tốn thời gian. Dần dần, đội dự án sẽ ngừng sử dụng nó. Có một số phương pháp giúp đảm bảo tốc độ thực hiện test và đưa ra chu kỳ phản hồi nhanh. Testcase có thể được dán nhãn và chạy có chọn lọc, cài đặt theo chức năng đang phát triển. Khả năng chạy từng phần sẽ tiết kiệm được phần lớn thời gian, nhất là khi không cần thiết phải chạy toàn bộ bài test.

Báo cáo chính xác

Báo cáo hiệu quả thì tốn thời gian nhưng đem lại lợi ích vô cùng lớn. Các lỗi trong quá trình test được báo cáo một cách rõ ràng chắc chắn sẽ được xử lý nhanh hơn. Thiết kế giao diện báo cáo trực quan cũng giúp hiểu tình huống rõ ràng hơn. Mặc dù vậy, điểm cốt yếu là báo cáo phải đơn giản, dễ nắm bắt và giúp xử lý lỗi hiệu quả hơn.

Tài liệu tham khảo