Để xây dựng một hệ thống automation test ngày nay có rất nhiều framework, tool hỗ trợ. Và việc tận dụng một framework sẵn có là một điều tất yếu thay vì đi xây dựng mọi thứ từ sơ khai. Vậy nên, một trong những việc quan trọng và khó khăn nhất khi bắt đầu một dự án automation test là lựa chọn những framework, công cụ phù hợp và hiệu quả nhất đối với tổ chức, sản phẩm đang phát triển. Một sự lựa chọn không phù hợp có thể làm tốn rất nhiều chi phí cho sự thay đổi về sau. Như vậy câu hỏi được đặt ra là lựa chọn framework như thế nào là phù hợp nhất? Bạn hãy thử áp dụng theo trình tự những bước sau đây:
Xác định những yêu cầu của hệ thống automation test
Chính vì trên thế giới ngày nay tồn tại rất nhiều công cụ để hỗ trợ cho automation test, vậy nên để dễ dàng hơn trong việc lựa chọn, việc đầu tiên là xác định những yêu cầu của automation test mà tổ chức đang hướng tới.
Dưới đây là một vài ví dụ, ngoài ra, bạn có thể thống nhất trong tổ chức để tìm hiểu và liệt kê thêm một số yếu tố khác:
- Sản phẩm mà bạn sẽ thực hiện automation test thuộc lĩnh vực gì? ví dụ: Web application, Mobile application, IOT, Telecom, …
- Nếu sản phẩm thuộc lĩnh vực Web application thì sẽ thực hiện test trên những loại trình duyệt nào? (Chrome, Firefox, Microsoft Edge, IE, … ). Thực hiện test trên hệ điều hành nào? (Windows, Linux, macOS, …)
- Nếu sản phẩm cần test trên Mobile web thì sẽ thực hiện test trên những loại trình duyệt nào? (Chrome, Firefox, Safari, Opera, …) Hệ điều hành nào? (Android, iOS, VOS, BlackBerry OS, …)
- Nếu sản phẩm thuộc lĩnh vực mobile application thì sẽ thực hiện test trên những hệ điều hành nào? (Android, iOS, VOS, BlackBerry OS, …)
- Bạn muốn thực hiện những loại test nào? (API, UI, test chức năng, performance, security, …)
- Chi phí mà tổ chức của bạn dự định đầu tư cho automation test là bao nhiêu? Chỉ hướng tới các công cụ miễn phí (open source framework) hay chấp nhận trả tiền? Nếu chấp nhận sử dụng các công cụ trả phí thì mức đầu tư khoảng bao nhiêu tiền? Điều này giúp chúng ta có dữ liệu chi tiết hơn để lựa chọn framework. Giả sử tổ chức chấp nhận đầu tư tối đa 100 triệu/năm vào việc sử dụng framework, thì chúng ta có thể dựa vào đó để so sánh mức giá của các framework, và đưa ra đề xuất phù hợp.
Xác định ngôn ngữ lập trình
Một hệ thống automation test phần lớn đều sử dụng một ngôn ngữ lập trình nào đó. Vậy nên bước tiếp theo là xem xét những đặc điểm về kỹ năng lập trình của người, tổ chức sẽ sử dụng, triển khai hệ thống automation test để tìm ra một ngôn ngữ lập trình phù hợp nhất.
Chắc hẳn trong một tổ chức luôn có sự đa dạng về nền tảng cũng như ngôn ngữ lập trình của các developer như Java, C#, PHP, Javascript, Python… Vậy nên chúng ta nên xem xét và lựa chọn một ngôn ngữ lập trình mà sẽ là ưu thế cho tổ chức, người phát triển, bảo trì sau này. Để từ đó, các công cụ tiềm năng cho quá trình lựa chọn cũng sẽ tuần theo tiêu chí ngôn ngữ lập trình này.
Ai sẽ là người phát triển hệ thống automation test? là những bạn có thế mạnh về lập trình hay không? Giả sử nếu tổ chức đang mong muốn hướng đến một nền tảng automation test không cần quá nhiều kiến thức lập trình, thì có thể xem xét các công cụ sử dụng cơ chế “record and playback”, như selenium IDE, Ranorex, … hoặc các framework ra đời hướng tới các bạn tester như Taiko.
Ví dụ: Nếu các thành viên trong công ty bạn có thế mạnh về lập trình PHP và người phát triển automation test là những người có khả năng lập trình ở mức tương đối thì có thể chọn Php-webdriver library.
Đề cử một số frameworks
Sau khi xem xét qua hai bước đầu tiên, chúng ta có thể đề cử một số frameworks gần như đã đáp ứng tương đối được nhu cầu của dự án. Ví dụ, tổ chức cần phát triển automation test cho sản phẩm là:
- Ứng dụng web
- Cần test trên môi trường Windows OS
- Browser Chrome
- Cần thực hiện test chức năng của sản phẩm
- Ngôn ngữ: JavaScript
Một số đề cử automated test frameworks: WebdriverIO, Taiko, CodeceptJS, Cypress, …
Ở ví dụ trên, có nhiều hơn hai kết quả được đề xuất, vậy chúng ta phải làm gì để chọn ra một công cụ phù hợp nhất? Có lẽ bây giờ là thời điểm cần đi sâu hơn nữa vào những tính năng đang có ở mỗi công cụ để phân tích những ưu nhược điểm của chúng và có kết luận cuối cùng một cách chính cách nhất.
Liệt kê các tiêu chí và đánh giá các tính năng của framework
Để đánh giá được một công cụ có phù hợp với tổ chức của mình hay không, lại một lần nữa chúng ta hãy phân tích xem mình đang cần gì? Việc này thông qua việc đưa ra các tiêu chí dựa vào các yêu cầu bên trong các test case cần test. Có thể chia ra thành hai loại yêu cầu là tính năng (functional) và phi tính năng (non-functional).
Hơn nữa việc đánh giá chi tiết hơn một công cụ có thể cho bạn một sự am hiểu nhất định và tự tin hơn về kết quả sẽ được lựa chọn vì tính khả thi khi triển khai.
Các yêu cầu về tính năng
Nếu ở một sản phẩm web application ngoài những tính năng phổ biến và mặc định của nó như input, click, download, ... Chúng ta cần xem xét framework có hỗ trợ các tính năng đặc thù của web application cần test hay không chẳng hạn như:
- Drag and Drop
- Download
- Multi windows
Các yêu cầu phi tính năng:
- Tài liệu rõ ràng, cộng đồng hỗ trợ tốt
Không chỉ riêng về những frameworks về automation test mà với bất kì một framework nào, việc có tài liệu đầy đủ và cộng đồng hỗ trợ lớn sẽ là một thế mạnh cực kì lớn cho các developer để giải quyết được các vấn đề kĩ thuật trong quá trình phát triển. - Khả năng bảo trì test
Giả xử khi có một thay đổi trong html element thì sẽ ảnh hưởng tới việc xác định locator, dẫn đến tốn thời gian để bảo trì test. Vậy nên những framework sử dụng locator không bị ảnh hưởng khi kiến trúc web thay đổi sẽ được đánh giá cao. - Độ tin cậy
Tính ổn định trong quá trình chạy test khi sử dụng framework này. Flaky test là một vấn đề khá nan giải đối với hầu hết các dự án automation. Chính vì vậy các công cụ ra đời gần đây thường xử lý vấn đề này khá tốt. - Hiệu suất
Xem xét thời gian để thực hiện một test case trong cùng môi trường của mỗi framework. Hầu hết các hệ thống automation test thường được thiết kế để thực hiện test song song để tiết kiệm thời gian test. Vậy nên hiệu năng của framework cũng là một điểm đáng cân nhắc để đáp ứng cho việc chạy nhiều test case đồng thời những vẫn đảm bảo được thời gian test. - Khả năng tương thích với các framework khác
Một hệ thống automation thường sẽ được liên kết bởi rất nhiều công cụ, thư viện, framework để giải quyết nhiều vấn đề mà một framework không thể đáp ứng được. Ví dụ: webdriverio có thể kết hợp với Mocha, Jasmine hoặc Cucumber để làm test runner. Vậy nên việc tương thích chúng lại với là một điểm rất quan trọng. - Khả năng điều tra lỗi, đọc kết quả
Một framework đáp ứng được tiêu chí này tốt sẽ đảm bảo cho developer tiết kiệm được thời gian để điều tra và nhận diện lỗi sau khi chạy test. Một số chức năng phổ biến như: log, chụp màn hình trong khi chạy test, Highlight element trong lúc tương tác, video recording, Step by step playback, ...
Sau khi có danh sách các tiêu chí cần đánh giá thì việc khó khăn nhất là phải dựa vào tài liệu của mỗi framework để liệt kê, xem xét độ tương thích của chúng. Ngoài ra cũng nên tham khảo thêm thông tin từ một số cộng đồng (chat, forum, group trên mạng xã hội, …) của mỗi framework.
Trải nghiệm thực tế trên mỗi framework đã đề cử
Nếu chỉ dựa trên những kết quả được phân tích dựa trên lý thuyết cũng như ý kiến từ cộng đồng thì việc kiểm chứng lại chúng bằng một bài thực hành cũng là một điểm đáng cân nhắc. Điều này giúp bạn có những trải nghiệm thực tế về những tính năng của framework, để có những ý kiến chủ quan liệu framework này có thực sự như tài liệu mô tả.
Chúng ta nên chọn những test case có những bước cần phải thực hiện nhiều tính năng của framework đang tìm hiểu nhất có thể, để tạo cơ hội trải nghiệm tốt hơn. Và quan trọng là trả lời được câu hỏi, với test case thực tế trong dự án này thì sử dụng framework nào sẽ dễ thực hiện nhất?
Quyết định để chọn một framework
Sau khi nghiên cứu khá kỹ về những frameworks, chắc hẳn bạn cũng đã có những thông tin cần thiết về ưu nhược điểm, xếp hạng, đánh giá cho những mỗi loại, thì cuối cùng là thời điểm tổng kết và đưa ra quyết định cuối cùng.
Tất cả các bên liên quan đến quá trình phát triển sản phẩm nên được tham gia vào giai đoạn này, như technical lead, product owner, developer, … Mục đích là để có cái nhìn đa dạng từ nhiều góc độ và quan trọng là sự đồng thuận của tất cả mọi người trong tổ chức, vì nó quyết định đến sự thành công của việc test tự động hóa sau này.