Các công việc (tasks) thường gặp khi bạn tham gia dự án automation testing bao gồm: hiện thực test case, xây dựng hệ thống CI, bảo trì hệ thống, fix bugs, v.v. Bên cạnh đó, các công việc về nghiên cứu (research tasks) đặc biệt hơn nhưng cũng đóng vai trò quan trọng không kém trong dự án automation testing. Research tasks ở đây có thể là việc nghiên cứu các công nghệ, kỹ thuật hay framework mới trong automation testing.
Trong bài viết này chúng ta hãy cũng tìm hiểu về những giá trị của research tasks mang lại cũng như làm sao để thực hiện chúng hiệu quả, đem lại nhiều giá trị tích cực cho dự án.
Research tasks mang lại giá trị gì cho dự án?
Công nghệ trong thế giới lập trình nói chung và công nghệ trong automation testing nói riêng đều phát triển theo thời gian. Các automation testing framework ngày càng nhiều như: WebdriverIO, Cypress, Gauge, v.v. Các framework mới có nhiều cải tiến mới hỗ trợ việc thực hiện automation nhanh chóng và ổn định hơn. Ngoài ra, ngay khi bạn sử dụng một framework thì các version mới cũng có những cải tiến nhất định so với version cũ.
Chính vì vậy, việc thực hiện research tasks có vai trò quan trọng cho sự phát triển của dự án. Hãy cùng điểm qua những giá trị mà research tasks đem lại trong dự án automation testing:
Cập nhật xu hướng
Selenium được biết đến như một framework tiên phong trong lĩnh vực automation testing. Nếu bạn đã sử dụng Selenium, bạn hẳn đã từng trải qua các bước để setup môi trường phức tạp: cài đặt selenium hub, node, driver cho các loại browser, v.v.
Về sau, các framework khác ra đời như WebdriverIO, Cypress, họ dần hướng tới đơn giản hóa công việc set up hơn. Xu hướng hiện nay của các framework mới là “all in one“, tất cả những gì bạn cần để chạy test sẽ đầy đủ sau một câu lệnh install duy nhất.
Đó là một ví dụ để chúng ta thấy rằng xu hướng của công nghệ thay đổi theo thời gian, mang lại nhiều điểm tích cực. Việc chúng ta dành thời gian research sẽ giúp cập nhật trong mindset những điểm tích cực này và xem xét tận dụng chúng cho dự án hiện tại.
Cải thiện hạn chế
Tại Cybozu, chúng tôi thực hiện automation testing cho end to end testing. Khi hiện thực gặp phải khá nhiều Flaky test do việc tương tác với UI gây ra. Sau đó, một thành viên trong team dành thời gian research, và anh tìm ra phương án để cải thiện hạn chế này bằng cách sử dụng UI Less. Đối với việc chuẩn bị data, clean data, hay chung quy là những phần không liên quan đến kịch bản chính của test case, sẽ sử dụng UI Less để hạn chế việc phải tương tác với UI. Bạn có thể đọc thêm về giải pháp UI Less tại bài viết này. Nhờ đó, chương trình test giảm ngắn được thời gian run test cũng như tăng độ ổn định.
Tăng cường kiến thức
Dự án automation testing mà tôi đang thực hiện sử dụng framework WebdriverIO. Có một giời gian team chúng tôi tìm hiểu về một số các framework khác như Cypress, Gauge, CodeceptJS, TestCafe để xem xét liệu có nên thay đổi sang một trong số các framework mới này hay không.
Đến cuối cùng vì nhiều lý do, chúng tôi vẫn tiếp tục giữ lại việc sử dụng WebdriverIO. Song quá trình tìm hiểu về các framework mới thật sự bổ ích và đem lại cho tôi cũng như các thành viên khác trong team những kiến thức mới về thế giới automation. Mỗi framework đều có những điểm mạnh riêng:
- TestCafe hướng tới sự đơn giản hóa trong set up môi trường
- Cypress cung cấp khả năng debug mạnh mẽ, tốc độ chạy nhanh
- Gauge sử dụng Markdown syntax trong cách viết hỗ trợ tốt đọc hiểu và maintain
- CodeceptJS cung cấp UI để viết, sửa, chạy test code
Qua việc research, các thành viên trong team được tăng cường kiến thức, học tập được những điểm hay từ các framework khác: cách bố trí source code, cách xác định locator, v.v. Từ đó có thể xem xét để áp dụng vào dự án hiện tại hoặc trong tương lai.
Vì thế, trong bài viết 9 tư duy quan trọng để xây dự án test automation, chúng tôi cũng từng đề cập đến việc không ngừng nỗ lực học hỏi là một trong 9 mindset quan trọng:
- Để đạt mức chuyên gia trong kiểm thử tự động chúng ta cần nỗ lực nhiều
Nghiên cứu công nghệ mới, research giải pháp cho chúng ta nhiều cảm hứng để triển khai kiểm thử tự động hay hơn, hiệu quả hơn.
Làm thế nào để thực hiện research tasks hiệu quả?
Thông thường có hai tình huống research:
- Research để cập nhật kiến thức mới
- Research để giải quyết một số hạn chế của dự án
Phần này chúng ta hãy cũng tìm hiểu cách để thực hiện hai loại research này một cách hiệu quả.
Research để cập nhật kiến thức mới
Tại Cybozu Việt Nam, chúng tôi làm việc theo hình thức là một Scrum team. Mỗi sprint, chúng tôi dành ra 10% cost cho công việc research.
Đặc điểm của loại công việc này:
-
Ai là người thực hiện?
Bất kỳ thành viên nào trong team đều có thể tự chủ động thực hiện -
Thời gian bao nhiêu?
10% cost của họ trong sprint -
Làm gì?
Tự chọn một topic để research. Nó có thể liên quan đến dự án, hay bất kỳ chủ đề nào mà người research quan tâm. Mục đích cuối cùng là cập nhật kiến thức cho người research. -
Giá trị mang lại?
- Về mặt cá nhân: tăng cường kiến thức của bản thân
- Về mặt team: sau khi research, người thực hiện có thể tổ chức để chia sẻ lại cho các thành viên khác những kiến thức mà họ tìm hiểu được. Qua đó, các thành viên khác cũng có cơ hội biết thêm về những kiến thưc này.
- Về mặt dự án: đối với những phần cảm thấy có thể áp dụng vào source code hiện tại thì người thực hiện có thể làm demo, trình bày với team để xem xét sử dụng. Trước đây team chúng tôi cũng đã từng có những trường hợp như vậy: thành viên trong team đề nghị thay đổi các tổ chức folder, hay sử dụng UI Less sau khi research.
Đối với hình thức research này, team không đặt ra một mong đợi rằng sau khi thực hiện cần đem lại giá trị nhất định cho dự án. Mà đơn thuần đây là thời gian để các thành viên có thể tự trau dồi kiến thức của bản thân. Vì vậy, để sử dụng quỹ thời gian này hiệu quả phụ thuộc vào ý thức của người thực hiện research.
Research để giải quyết một số hạn chế của dự án
Một số hạn chế của dự án cần thực hiện research để tìm hiểu xem có cách nào cải thiện được hay không. Đối với trường hợp này để research hiệu quả, bạn cần làm một số bước như sau:
-
Xác định hạn chế nào của dự án cần giải quyết
Cần xác định mục tiêu cho research task, giải quyết vấn đề gì, ví dụ như:- Framework hiện tại hỗ trợ chưa tốt?
- Structure hiện tại phức tạp?
- Thời gian chạy test quá lâu?
-
Thực hiện khoanh vùng công nghệ, kỹ thuật để research
Từ một số hạn chế đã xác định, chúng ta có thể xác định được mình mong muốn điều gì và có hướng để tìm hiểu.
Có thể dựa vào một số gợi ý từ cộng đồng người sử dụng để lựa chọn ra một một số công nghệ, kỹ thuật thích hợp, và tiến hành nghiên cứu. -
Thực hiện research trong timebox quy định
Không kéo dài việc research, thực hiện đúng trong timebox đã xác định ban đầu. Vì task chỉ dừng ở mức độ điều tra, nên không đòi hỏi phải có một giải pháp trọn vẹn cho vấn đề. -
Tổng hợp, đánh giá
Tổng hợp lại tất cả kết quả có được. Dựa trên các thông tin đó, team sẽ xem xét, đánh giá kết quả để quyết định hành động tiếp theo. Nếu kết quả research đưa ra được giải pháp khả thi, team sẽ tạo ra task để hiện thực. Nếu trường hợp chưa đưa ra được giải pháp: team cần cân nhắc để kết thúc research vì không thể có giải pháp hoặc tạo task research tiếp theo dựa trên kết quả hiện có.
Lời kết
Research tasks đặc biệt hơn các tasks thông thường khác vì đôi khi sẽ không thấy được sự đóng góp một cách trực tiếp từ nó đem lại cho dự án. Bạn sẽ không thấy bug được fix, không thấy thêm test case mới nào được thêm vào. Nhưng không vì thế mà research tasks mất đi tầm quan trọng. Qua bài viết hi vọng các bạn thấy được những giá trị mà nó đem lại, và biết thêm một số cách giúp bạn research hiệu quả.