12/08/2018, 14:43

Khi nào cần thực hiện Automation testing

I. Manual testing 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 ...

I. Manual testing

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

1. Load and performance test tools

  • Loadruner: Một công cụ kiểm thử tự động thực hiện việc kiểm tra hiệu năng của phần mềm. Tối cũng đã có bài hướng dẫn về loadruner ở đây https://viblo.asia/NguyenThiHue/posts/mPjxMeoDv4YL
  • 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ả.
0