Kiểm thử tự động
Kiểm thử tự động (Automation testing) là gì? Nên được áp dụng khi nào? Lựa chọn công cụ kiểm thử tự động như thể nào để đạt được kết quả tốt nhất? Bài viết này sẽ giải đáp những câu hỏi đó.
1. Kiểm thử tự động (Automation testing) là gì?
Kiểm thử tự động (Automation testing) là khi tester viết kịch bản và sử dụng những công cụ hỗ trợ để kiểm thử phần mềm. Quá trình này là chuỗi tự động hóa quá trình kiểm thử thủ công. Kiểm thử tự động được sử dụng để chạy lại các kịch bản kiểm thử đã được kiểm thử thủ công, nhanh chóng, lặp lại nhiều lần.
Ngoài kiểm thử hồi quy, kiểm thử tự động cũng được sử dụng để kiểm tra ứng dụng từ load, performance, và stress. Nó tăng thêm độ bao phủ, cải thiện độ chính xác ,tiết kiệm thời gian và tiền bạc so với kiểm thử thủ công
2. Tại sao cần kiểm thử tự động?
Kiểm thử tự động rất quan trọng vì những lý do sau:
Bài viết này được đăng tại [free tuts .net]
- Kiểm thử thủ công tất cả các kịch bản nhiều lần sẽ gây tốn thời gian và tiền bạc
- Rất khó để kiểm thử thủ công các trang web hay phần mềm đa ngôn ngữ
- Kiểm thử tự động hóa không cần sự can thiệp của con người. Có thể chạy kiểm thử tự động qua đêm mà không cần giám sát.
- Kiểm thử tự động hóa làm tăng tốc độ thực hiện kiểm thử
- Kiểm thử tự động hóa giúp tăng phạm vi kiểm thử
- Kiểm thử thủ công có thể trở nên nhàm chán, do đó dễ bỏ sót lỗi.
3. Tự động hóa cái gì?
Không phải tự động hóa lúc nào cũng khả thi với mọi phần mềm. Các lĩnh vực như người dùng có thể thực hiện giao dịch cũng như form đăng nhập hoặc form đăng ký, bất kỳ lĩnh vưc nào có số lượng người dùng lớn có thể truy cập đồng thời vào phần mềm thì nên được tự động hóa.
Hơn nữa, tất cả các mục GUI (Giao diện người dùng), kết nối với CSDL, xác thực các trường,... có thể được kiểm thử hiệu quả bằng cách tự động hóa quá trình kiểm thử thủ công.
4. Tự động hóa khi nào?
Kiểm thử tự động nên được sử dụng theo những phương diện sau:
- Các dự án lớn và trọng điểm.
- Những dự án yêu cầu kiểm thử thường xuyên trong cùng một lĩnh vực.
- Những yêu cầu không thường xuyên thay đổi.
- Truy cập ứng dụng để kiểm tra tải và hiệu suất với nhiều người dùng ảo.
- Kiểm tra tính ổn định của phần mềm trên quan điểm của kiểm thử thủ công.
- Tính khả dụng của thời gian
Những test cases sau đây có thể kiểm thử để tự động hóa:
- Có thể áp dụng kiểm thử tự động hóa nếu tăng ROI (Return of Investment - tỷ lệ lợi nhuận thu được so với chi phí đầu tư)
- Rủi ro cao - Các test cases quan trọng
- Các test cases được thực hiện nhiều lần
- Các test cases khó thực hiện thủ công
- Các test cases tốn thời gian
Những test cases sau đây không phù hợp với tự động hóa:
- Các test cases được thiết kế mới và chưa được thực hiện thủ công ít nhất một lần
- Các test cases có các yêu cầu thường xuyên thay đổi
- Các test cases được thực hiện trên cơ sở ad-hoc.
5. Tự động hóa như thế nào?
Tự động hóa được thực hiện bằng cách sử dụng một ngôn ngữ máy tính được hỗ trợ như VB và ứng dụng phần mềm tự động. Có rất nhiều công cụ có sẵn có thể được sử dụng để viết những đoạn kịch bản tự động. Trước khi nhắc đến các công cụ đó, hãy xác định kế hoạch để tự động hóa quá trình kiểm thử:
- Xác định các lĩnh vực trong phần mềm để tự động hoá.
- Lựa chọn những công cụ thích hợp cho kiểm thử tự động hóa.
- Viết mã tự động hóa (test scripts).
- Phát triển các bộ kiểm tra (test suits).
- Thực thi các đoạn mã.
- Tạo các báo cáo kết quả kiểm thu.
- Phát hiện các lỗi tiềm ẩn hoặc vấn đề hiệu suất.
6. Quy trình kiểm thử tự động
Các bước sau được thực hiện trong Quy trình kiểm thử tự động hóa:
Lựa chọn công cụ kiểm thử
Lựa chọn Công cụ kiểm thử phần lớn phụ thuộc vào công nghệ mà Ứng dụng Kiểm thử được xây dựng. Chẳng hạn, QTP không hỗ trợ Informatica. Vì vậy, QTP không thể được sử dụng để kiểm thử các ứng dụng của Informatica.
Xác định phạm vi tự động
Phạm vi tự động là phạm vi Ứng dụng được Kiểm thử tự động hóa. Các điểm sau giúp xác định phạm vi tự động:
- Các tính năng quan trọng
- Kịch bản có lượng dữ liệu lớn
- Các chức năng chung trên ứng dụng
- Tính khả thi về mặt kỹ thuật
- Mức độ các thành phần được sử dụng lại
- Độ phức tạp của test cases
- Khả năng sử dụng các test cases tương tự để kiểm thử trên nhiều trình duyệt
Lập kế hoạch, thiết kế và phát triển
Tester tạo một chiến lược & kế hoạch kiểm thử tự động, chi tiết như sau:
- Công cụ kiểm thử tự động được chọn
- Thiết kế Framework và các tính năng của Framework
- Các mục trong phạm vi và ngoài phạm vi tự động hóa
- Chuẩn bị kiểm thử tự động hóa
- Lịch trình và mốc thời gian thực thi kịch bản kiểm thử
- Bàn giao sản phẩm được kiểm thử tự động
Thực thi kiểm thử
Kịch bản kiểm thử tự động hóa được thực thi trong giai đoạn này. Các Scripts cần dữ liệu kiểm thử đầu vào trước khi được thiết lập để chạy. Sau khi thực hiện sẽ trả về các báo cáo kiểm thử chi tiết.
Việc thực thi có thể được thực hiện bằng cách sử dụng công cụ tự động trực tiếp hoặc thông qua công cụ Quản lý kiểm thử sẽ gọi công cụ tự động hóa.
Bảo trì
Khi các chức năng mới được thêm vào Hệ thống được kiểm thử với các chu kỳ liên tiếp, Scripts tự động hóa cũng cần được thêm, xem xét và bảo trì cho mỗi chu kỳ phát hành. Bảo trì trở nên cần thiết để cải thiện hiệu quả của Scripts trong kiểm thử tự động hóa.
7. Framework tự động hóa
Một Framework tự động sẽ giúp:
- Duy trì tính nhất quán của kiểm thử
- Cải thiện cấu trúc kiểm thử
- Sử dụng code tối thiểu
- Ít bảo trì code
- Cải thiện khả năng sử dụng lại
- Tester không có kỹ thuật có thể tham gia
- Thời gian training sử dụng công cụ có thể được giảm
Có bốn loại frameworks được sử dụng trong kiểm thử tự động hóa:
- Data Driven Automation Framework
- Keyword Driven Automation Framework
- Modular Automation Framework
- Hybrid Automation Framework
8. Sử dụng công cụ tự động hóa để đạt hiệu quả tốt nhất
Để có được ROI (tỷ lệ lợi nhuận thu được so với chi phí đầu tư) tối đa, hãy tuân thủ các điều sau:
- Phạm vi của kiểm thử tự động hóa cần được xác định chi tiết trước khi bắt đầu dự án.
- Chọn công cụ kiểm thử tự động hóa phù hợp: Không nên chọn công cụ dựa trên mức độ phổ biến của công cụ đó, mà phải phù hợp với yêu cầu tự động hóa.
- Chọn một framework thích hợp
- Các tiêu chuẩn về kịch bản phải được tuân theo trong khi viết các kịch bản cho kiểm thử tự động hóa. Một số trong số đó là:
- Tạo scripts thống nhất, nhận xét và thụt đầu dòng đoạn code
- Xử lý đầy đủ những trường hợp ngoại lệ - Cách xử lý lỗi đối với lỗi hệ thống hoặc hành vi không mong muốn trong ứng dụng.
- Thông báo do người dùng xác định phải được mã hóa hoặc tiêu chuẩn hóa để ghi nhật ký lỗi để tester hiểu.
- Đo lường số liệu - Thành công của kiểm thử tự động hóa không thể được xác định bằng cách so sánh effort của kiểm thử thủ công với effort của kiểm thử tự động, mà có thể nắm bắt dựa vào các số liệu sau.
- Phần trăm lỗi được tìm thấy
- Thời gian cần thiết để kiểm thử tự động hóa cho mỗi chu kỳ phát hành
- Thời gian tối thiểu được thực hiện để phát hành
- Sự hài lòng của khách hàng
- Nâng cao năng suất
9. Lợi ích của kiểm thử tự động
Sau đây là những lợi ích của kiểm thử tự động:
- Nhanh hơn 70% so với kiểm thử thủ công
- Phạm vi kiểm thử rộng hơn
- Kết quả đáng tin cậy
- Đảm bảo tính nhất quán
- Tiết kiệm thời gian và chi phí
- Cải thiện độ chính xác
- Không cần sự can thiệp của con người trong khi thực hiện
- Tăng hiệu quả
- Tốc độ tốt hơn trong việc thực hiện kiểm thử thủ công
- Kịch bản kiểm thử có thể sử dụng lại
- Có thể Kiểm thử thường xuyên và kỹ lưỡng
- Nhiều chu kỳ thực hiện có thể đạt được thông qua tự động hóa
- Sớm được bàn giao sản phẩm
10. Các loại kiểm thử phần mềm có thể được sử dụng trong kiểm thử tự động hóa
- Smoke Testing
- Unit Testing
- Integration Testing
- Functional Testing
- Keyword Testing
- Regression Testing
- Data Driven Testing
- Black Box Testing
11. Làm thế nào để lựa chọn một công cụ kiểm thử tự động hóa?
Chọn đúng công cụ là một nhiệm vụ khó khăn. Tiêu chí sau đây sẽ giúp bạn chọn công cụ tốt nhất đáp ứng được yêu cầu:
- Môi trường có thể hỗ trợ
- Dễ sử dụng
- Kiểm thử cơ sở dữ liệu
- Kiểm thử hình ảnh
- Kiểm thử phục hồi lỗi
- Ngôn ngữ kịch bản được sử dụng
- Hỗ trợ các loại kiểm thử khác nhau - bao gồm functional, test management, mobile, v.v ...
- Hỗ trợ nhiều Frameworks
- Dễ dàng gỡ lỗi trong các kịch bản
- Khả năng xác định đối tượng trong mọi môi trường
- Báo cáo kiểm thử và kết quả
- Giảm thiểu chi phí training các công cụ được chọn
Lựa chọn công cụ là một trong những thách thức lớn nhất cần được giải quyết trước khi kiểm thử tự động. Đầu tiên, Xác định các yêu cầu, khám phá các công cụ khác nhau và khả năng của từng công cụ, đặt mong đợi từ mỗi công cụ và tìm kiếm những vấn đề liên quan đến công cụ đó (Proof Of Concept).
12. Công cụ kiểm thử tự động hóa
Có rất nhiều Công cụ Kiểm thử Chức năng (Functional testing) và Hồi quy (Regression Testing) có sẵn trên thị trường. Dưới đây là 7 công cụ tốt nhất được chứng nhận bởi các chuyên gia:
1. Tricentis
Tricentis là nền tảng Kiểm thử tự động số 1 của ngành công nghiệp phần mềm. Tricentis là nhà cung cấp duy nhất đạt được thành tựu với trạng thái là “leader” trong ba báo cáo phân tích hàng đầu.
- Kiểm thử dựa trên rủi ro
- Tự động kiểm thử end-to-end không cần kịch bản
- Hỗ trợ API, BI, Mobile, Cross Browser, RPA và các loại kiểm thử tự động khác
- Được hỗ trợ kỹ thuật rộng rãi nhất trong ngành công nghiệp phần mềm
2. mabl
mabl tự động kiểm thử từ đầu đến cuối mà không cần kịch bản.
- Easy test automation: Tự động kiểm thử chức năng cho ứng dụng web mà không cần kịch bản
- Auto-healing tests: Tự động cập nhật kiểm tra khi UI của bạn thay đổi
- Regression testing: Nhanh chóng xác định các vấn đề về độ trễ, lỗi javascript, khác biệt trực quan, liên kết bị hỏng…
3. Selenium
Selenium là một công cụ kiểm thử phần mềm được sử dụng để kiểm thử hồi quy. Đây là một công cụ kiểm thử mã nguồn mở cung cấp cơ sở để chạy và ghi lại các kịch bản. Selenium IDE chỉ hỗ trợ trình duyệt web Mozilla Firefox.
- Cung cấp điều kiện để xuất scripts được ghi bằng các ngôn ngữ khác như Java, Ruby, RSpec, Python, C #, v.v.
- Có thể được sử dụng với các frameworks như JUnit và TestNG
- Có thể thực hiện nhiều test scripts cùng một lúc
- Tự động hoàn tất cho các lệnh Selenium chung
- Xác định thành phần bằng Id, Name, X-path, v.v.
- Lưu trữ các test script dưới dạng Ruby Script, HTML và bất kỳ định dạng nào khác
- Hỗ trợ tập tin selenium user-extend.js
- Cho phép chèn comments vào giữa script để hiểu rõ hơn và gỡ lỗi nếu có
4. QTP (MicroF Focus UFT)
QTP được sử dụng rộng rãi để kiểm thử chức năng và hồi quy. Để đơn giản hóa việc kiểm thử từ khi phát triển ứng dụng đến bảo trì, QTP cho phép tester xây dựng các test cases trực tiếp từ ứng dụng.
- Người dùng không biết kỹ thuật cũng có thể dễ dàng thích nghi và tạo được các test case
- QTP sửa lỗi nhanh hơn bằng cách ghi các lỗi và mô phỏng cho developer
- Tham số hóa dễ dàng hơn WinRunner
- QTP hỗ trợ môi trường phát triển .NET
- Có thể cải thiện các QTP script hiện có mà không cần có phần mềm
5. Rational Functional Tester
Rational Functional Tester là một công cụ kiểm thử chức năng tự động, hướng đối tượng, có khả năng thực hiện chức năng tự động, hồi quy, kiểm thử data-driven và kiểm thử GUI. Các tính năng chính của công cụ này là
- Hỗ trợ một loạt các giao thức và ứng dụng như Java, HTML, NET, Windows, SAP, Visual Basic, v.v.
- Có thể ghi lại và chạy lại các action theo yêu cầu
- Tích hợp với các công cụ quản lý kiểm soát source như Rational Clear Case và Rational Team Concert
- Cho phép các developer tạo từ khóa liên quan đến scripts để có thể được sử dụng lại
- Trình soạn thảo Eclipse Java Developer Toolkit thuận tiện cho nhóm viết kịch bản kiểm thử trong Java với Eclipse.
- Hỗ trợ kiểm soát những tùy chỉnh thông qua proxy SDK (Java / .Net)
Download Rational Functional Tester
6. Witir
WATIR là một tool kiểm thử mã nguồn mở dùng để kiểm thử hồi quy. Watir chỉ hỗ trợ trình duyệt internet explorer trên windows trong khi Watir webdriver hỗ trợ Chrome, Firefox, IE, Opera, v.v.
- Hỗ trợ nhiều trình duyệt trên các nền tảng khác nhau
- Sử dụng đầy đủ tính năng mới của ngôn ngữ kịch bản Ruby
- Hỗ trợ các ứng dụng web
7. SilkTest
Silk Test được thiết kế để thực hiện kiểm thử chức năng và hồi quy. Đối với ứng dụng về kinh doanh điện tử (e-business), Silk Test là tool kiểm thử chức năng được ưu tiên lựa chọn. Silk Test là sản phẩm của Segue Software, tiếp quản bởi Borland vào năm 2006. Đây là một ngôn ngữ hướng đối tượng giống như C ++, sử dụng khái niệm đối tượng, các lớp và sự kế thừa. Tính năng chính của nó bao gồm:
- Gồm tất cả các tập tin nguồn
- Chuyển đổi các lệnh script thành các lệnh GUI. Trên cùng một máy, các lệnh có thể được chạy trên máy chủ hoặc trên máy chủ từ xa (remote).
- Có thể sử dụng cả phương thức playback và record
13. Kết luận
Lựa chọn đúng công cụ kiểm thử tự động, quy trình kiểm thử, nhóm kiểm thử là những công việc quan trọng để kiểm thử tự động thành công. Phương pháp kiểm thử thủ công và kiểm thử tự động luôn không thể tách rời để kiểm thử đạt được kết quả cao nhất.