Hình thức test phổ biến từ trước đến nay đó là manual test. Một tester sẽ nhập tay các dữ liệu username, password, click button… và sau đó sẽ xem kết quả đăng nhập có thành công hay không. Đúng với ý nghĩa test thủ công, tester sẽ thực hiện tất cả hành động test bằng tay, một cách thủ công. Mọi công việc Tester làm bằng tay: viết test case, thực hiện test, thao tác test…
II. Automation testing
QA hay tester sẽ viết script dùng để chạy tự động thay thế các thao tác kiểm thử bằng tay
Thử tưởng tưởng bài toán đơn giản sau: Một dự án bạn làm được yêu cầu test tất cả 10.000 dữ liệu xem đầu vào và đầu ra có đúng hết hay chưa. Bạn thử tưởng tượng việc nhập bằng tay và check số liệu đầu ra sẽ tốn rất nhiều thời gian, sức người như thế nào? => Một ngày bạn có test được 100 row dữ liệu thì cũng tốn mất 100 ngày để test. Nói ra con số này với khách hàng bạn có thể tưởng tượng được cảm nhận của khách hàng chứ?
Vậy trong trường hợp này bạn nên nghĩ tới automation testing. Bạn chỉ cần viết script để chạy tất cả các bước bao gồm: nhập thông tin, click, kiểm tra so sánh kết quả thực tế và kết quả mong muốn. Khi viết xong script thì bạn có thể để script tự động chạy, trong thời gian đó bạn có thể làm những việc khác, hoặc có thể chỉ ngồi nhìn nó tự nhập dữ liệu, tự click, tự so sánh kết quả…
III. Điểm mạnh và điểm yếu của 2 loại
Manual testing
Điểm mạnh
Thích hợp việc test chức năng phức tạp
Phù hợp với việc kiểm tra sản phẩm khi phát triển trong thời gian ngắn, data ít
Test case không lặp lại quá nhiều
Giảm chi phí ngắn hạn
Điểm yếu
Tốn thời gian, sức người, sức của
Có thể gặp lỗi do chính con người tạo ra
Không thể test toàn bộ khối dữ liệu lớn
Mất thời gian đối với sự thay đổi dù là nhỏ
=> Đối với một dự án manual testing, các yếu tố phát sinh bao gồm: con người, tool quản lý, môi trường,..
Automation testing Điểm mạnh
Chạy theo các bước định sẵn trong script, ngăn được lỗi do con người
Rất có lợi trong trường hợp khi gặp tình huống các bước lặp lại nhiều lần
Có thể test hết toàn bộ dữ liệu mà không thấy nhàm chán và mệt mỏi
Có thể tái sử dụng script ở các version của dự án, giảm chi phí test
Đối với các dự án cần test data nhiều thì có tính kinh tế cao
Điểm yếu
Sử dụng tool, mà nhiều tool tốt chi phí lại rất cao
Đòi hỏi có kỹ năng viết code, script
Nếu không có kỹ năng tốt thì tốn nhiều thời gian hơn là manual test
Cần thời gian chuẩn bị cài đặt trước khi test
Không phù hợp với việc test chức năng phức tạp
Quy trình của dự án automation test phức tạp ngay cả với dự án đơn giản
=> Đối với một dự án automation thì vẫn bao gồm chi phí: con người, tool quản lý, môi trường, thêm cả automation tool, quản lý test tool, thiết lập, cài đặt tool, viết script
IV. Khi nào thì nên áp dụng automation test
Trường hợp kiểm thử cần thực hiện nhiều lần, thường xuyên phải thực hiện regression test, một số lượng test data lớn cần hoàn thành trong một thời gian ngắn.
Kiểm thử cần thực hiện ở môi trường khác nhau
Áp dụng với những project ổn định, đặc điểm kĩ thuật được xác định trước, chức năng không thay đổi trong tương lai
Kiểm thử hoạt động cơ bản mà phải thực hiện lặp lại với lượng test data lớn
Kiểm tra nhiều màn hình trong thời gian ngắn, liên tục
Thực thi test performance test hoặc load test thì kiểm thử tự động gần như là lựa chọn duy nhất
Kết luận : => Hiện nay thì manual test vẫn phổ biến và cần thiết với số đông các dự án, và dự án nào cũng có thể thực hiện được bằng manual test. Còn với automation test thì thực sự phải kén chọn dự án phù hợp với nó hơn.
=> Để viết được những dòng code sciprt thực hiện auto test thì vẫn cần sức người. Chỉ khi dự án thật sự cần thì mới cần đến automation test, và đảm bảo có chi phí để trả cho việc thực hiện, bảo trì automation test thì lúc đó bạn mới thực sự thấy automation test có hiệu quả.
V. Một số test automation tool
Nếu dự án của bạn phù hợp với điều kiện automation test thì dưới đây tôi sẽ giới thiệu một vài tool mà có thể bạn sẽ cần, phù hợp với nhu cầu của bạn
WebPerformance Load tester: Là tool cung cấp chức năng test performance như: xử lý dược bao nhiêu user, bị phá vỡ dưới điều kiện nào, …
Jmeter: Jmeter là công cụ để đo độ tải và performance của đối tượng, có thể sử dụng để test performance trên cả nguồn tĩnh và nguồn động, có thể kiểm tra độ tải và hiệu năng trên nhiều loại server khác nhau như: Web – HTTP, HTTPS, SOAP, Database via JDBC, LDAP, JMS, Mail – SMTP(S), POP3(S) and IMAP(S)… Ở đây chúng tôi có bài viết khá kỹ về jmeter https://viblo.asia/lai.le.le.linh/posts/aKYMNBn4M83E
2. Java test tool
TestNG: Là công cụ kiểm thử cho phép tạo testcase kiểm thử cho các danh mục test: Test function, intergration test. Và cũng là một trong những công cụ kiển thử tự động được sử dụng phổ biến hiện nay
Junit: là framework đơn giản dùng cho việc tạo các unit testing tự động, dễ dàng tổ chức và chạy các test script
3. Link Checking tool
Link checker pro: Thực hiện phân tích website, phát hiện link lỗi và kiểm tra các vấn đề có thể xảy ra với links
W3c: là web link validator kiểm tra tính toàn vẹn của website, hợp lệ của các cú pháp và tự động báo cáo công việc
4. Web functional
Selenium IDE: đáp ứng tốt việc test web chức năng đăng ký, hay tạo dữ liệu hay chức năng có các bước đơn giản. Và việc tạo script cũng cực kì đơn giản, bạn chỉ cần thực hiện trên web một lần và lưu lại script là bạn đã có thể dùng script đó cho những lần kiểm thử sau.
Selenium webdrive: hỗ trợ ở mức cao hơn, nhưng đồng nghĩa với việc là bạn phải tự tay viết ra dòng code để thực hiện các sự kiện như: click, input,…
QuickTesst pro: là phần mềm dùng để kiểm tra chức năng (functional test) và cho phép thực hiện kiểm tra hồi qui (regression test) một cách tự động. Đây cũng là công cụ cho phép kĩ thuật viên bổ sung test case bằng cách tạo file mô tả cho nó mà không cần chỉnh sửa hay bổ sung bất cứ script nào cả.