Chọn Automation test tools như thế nào?

Đây là một trong những câu hỏi quan trọng, ảnh hưởng lớn đến quá trình phát triển automation test của 1 công ty. Khi phỏng vấn level Senior, mình cũng hỏi câu này với các ứng viên và cũng ít có ứng viên thật sự tâm huyết khi trả lời câu hỏi này. Hôm nay, mình xin phép chia sẻ một số yếu tố ảnh hưởng đến quyết định mình sẽ chọn Automation tool(s) gì cho phù hợp. Mình cũng sẽ kể một số câu chuyện xoay quanh vấn đề này. Đây chỉ là ý kiến cá nhân, mong mọi người tham khảo.
1/ Member của bạn, trình độ và team size?
Khi mới bắt đầu Ascend Tech VN, chúng tôi, bao gồm Developer và cả QA đều khá bỡ ngỡ với khái niệm API testing. Nhu cầu cần thiết là tìm một tools có giao diện dễ hiểu để tất cả mọi người đều catch up nhanh và dễ làm. Chúng tôi chọn Jmeter làm tool cho API test
Mọi chuyện đều khá ổn thỏa khi cả công ty khoảng 20 người, và tất cả đều được training cùng nhau, từ đầu. Dù cho có 1 số accident mất code, nhưng với 1 số rule tự tạo ra đơn giản, chúng tôi hạn chế tối đa rủi ro và đạt hiệu quả cao khi sử dụng tool. Tuy nhiên, khi công ty đạt size của 40, rồi 60 người, chúng tôi cảm thấy Jmeter không còn là lựa chọn tốt nữa, vì:
- Tình trạng merge và bị mất code xảy ra rất thường xuyên, khó kiểm soát và không trace ra được nguồn gốc.
- Code không thể code review , vì Jmeter generate ra code dưới dạng XML. Git gặp rất nhiều vấn đề khi quản lý bộ code này, nó vừa nặng, vừa khó để tìm hiểu code đã sửa những gì
- Code đã viết ra khó có thể reuse , hoặc đặt hàm chung giữa 2 file Jmeter ( tức là 2 bộ test), dẫn đến việc clone code thường xuyên, maintainence phức tạp ( Khi API spec, input output change)
Sau đó, chúng tôi đã phải đi đến 1 quyết định lớn là ngưng sử dụng Jmeter cho API automation test
Từ đó rút ra, khi chọn tool cần để ý:
- Team size
- Trình độ của member
- Khả năng tương thích với Source code management tool (Thường là Git)
- Khả năng reuse
- Khả năng Code review, code approve, tra cứu code history...
2/ Có phù hợp với những loại automation test bạn muốn thực hiện?
Ngoài việc Jmeter không giúp được mình trong việc code review, sau 1 thời gian mình nhận ra rằng công ty mình đang dùng 2 tools: Jmeter và Robot Framework, 1 cho API test và 1 cho UI test. Đó là 1 sự lãng phí lớn cho việc prepare data keywords khi 2 tool, 2 team không hỗ trợ được cho nhau. Đó cũng là 1 lý do mình quyết định dùng chính RobotFramework làm API test sau này.
Robot framework không phải là best tools, tuy nhiên, ở Ascend, nó giải quyết được 1 vấn đề là cả 3 mảng: UI, API, và Mobile đều dùng Robot Framework. Nó làm cho Tech stack của công ty trở nên dễ tiếp thu hơn, và việc chia sẻ kiến thức và keywords, prepare data cũng trở nên dễ dàng hơn rất nhiều.
Ngoài ra, nghe có vẻ buồn cười, nhưng một số tool sẽ không tương thích tốt với một số browser, hoặc nó không support mobile testing chẳng hạn. Hãy chọn cho kỹ, phù hợp với những loại test mà công ty bạn thực hiện
3/ Có tích hợp tốt với CI/CD tool mà bạn định dùng hay không?
Là câu hỏi cho những công ty muốn theo đuổi CI CD
Một số câu hỏi ví dụ:
- Tool của bạn có chạy test multi threads được không?
- Tool của bạn generate ra report/log to cỡ nào? Có Ảnh hưởng đến docker không?
- Tool của bạn có chạy test được trên nền Linux không? Hay trên command line không?
- ...
4/ Kiến trúc và support của tool trong những công việc bạn cần:
Khi bạn dùng 1 tool cho riêng bạn, nó rất dễ, sức bạn ở đâu thì bạn dùng tool advance cỡ đó. Nhưng khi bạn cần chọn 1 tool không phải cho bạn, mà là cho nhiều người, đặc biệt là cho cả Developer và QA, những người có skill và background rất khác nhau cùng nhảy vào dùng, bạn sẽ rất cần để ý đến việc thiết kế kiến trúc của code. Về mặt này, những tool viết bằng ngôn ngữ tự nhiên như Selenium chiếm ưu thế hơn hẳn so với những tool còn lại.
- Tool của bạn mất bao lâu để training ?
- Kiến trúc (code structure) mà bạn và QA team làm ra, có dễ dùng cho Dev không? Cho QA team không?
- Team A mà muốn dùng keywords/function đã tạo ra của team B thì làm thế nào
- Nếu 1 ngày, code logic đổi, thì có phải sửa nhiều chỗ không?
- Report của tool bạn làm ra team có dễ đọc để trace bug không?
- Test Report của bạn lúc đem đi report cho cấp trên có dễ hiểu không?
- Nếu bạn có thêm một số nhu cầu, tool có cho phép bạn add thêm rule vào nó không?
- Bạn cần spend bao nhiêu effort cho việc customize lại tool để nó hợp ý bạn?
- ...
5/ Một số những lưu ý khác
Đây là một số câu hỏi khác có thể ảnh hưởng đến việc bạn chọn tool:
- Tool này community tốt thế nào? Trả lời thắc mắc nhiều và nhanh không?
- Họ giải quyết bug của họ nhanh hay chậm? Hay là để đó?
- Có document guideline tốt không?
- Có hay update không? Có hay "fuck cútomer" bằng cách phiên bản mới không support cách viết phiên bản cũ nữa không?
- Thị trường tuyển dụng, những người ngoài kia có dễ kiếm được 1 người có Tech Stack này không? ( đây là mảng mình nghĩ chưa thành công khi chọn Robot)
Tổng kết
Mình hy vọng đã giúp các bạn có thêm một số góc nhìn khi chọn tool sửa dụng cho công ty. Như kinh nghiệm của mình, không có lựa chọn nào là hoàn hảo, và cũng sẽ không có lựa chọn nào là đúng với tất cả/ Bạn cần làm việc kỹ càng với team, với công ty để chọn ra 1 list tool tốt nhất. Chúc các bạn thành công!
Nguồn: Nguyễn Dương Hải, QA Manager