Automation testing và manual testing: Điểm mạnh và điểm yếu từng loại

Automation testing và manual testing: Điểm mạnh và điểm yếu từng loại

Xem nhanh

Trong những năm gần đây, automation testing phát triển mạnh mẽ. Các frameworks hỗ trợ cho việc phát triển automation testing như WebdriverIO, Cypress, TestCafe, Codeceptjs… đua nhau ra đời. Điều này có thể thấy rằng thị trường automation testing thật sự mở rộng. Nhiều dự án, nhiều công ty đầu tư một cách nghiêm túc cho automation testing. Điều này đặt ra một câu hỏi mà nhiều người quan tâm: liệu rằng automation testing có thực sự thay thế được manual testing hay không?

Trong quá trình làm việc với dự án automation testing tại Cybozu, chúng tôi đã nhận ra thế mạnh, giá trị mà automation testing đem lại. Để trả lời cho câu hỏi trên, trong bài viết 9 tư duy quan trọng để xây dự án test automation chúng tôi cũng bày tỏ quan điểm rõ ràng rằng “automation testing không thể thay thế hoàn toàn manual testing”. Bởi bên cạnh những điểm mạnh thì bản thân automation testing cũng vẫn còn những điểm yếu. Ngoài ra manual testing cũng có những thế mạnh không thể thay thế. Bài viết này chúng ta sẽ cùng đi phân tích những thế mạnh, điểm yếu của cả automation testing và manual testing để tận dụng, sử dụng từng giải pháp phù hợp với từng dự án khác nhau.

Kiểm thử thủ công(Manual testing)

Tại Cybozu Việt Nam hiện nay bộ phận QA chiếm số lượng khá lớn nhân sự của cả công ty. Và hằng năm chúng tôi vẫn tiếp tục tuyển dụng cho bộ phận này. Điều này cho thấy công việc manual testing do QA đảm nhận có vai trò quan trọng trong quá trình phát triển sản phẩm của công ty. Nhìn rộng hơn, khi truy cập tới một trang tuyển dụng về IT bất kì, ví dụ như itviec chẳng hạn, bạn sẽ thấy những tuyển dụng QA, QC rất phổ biến với mức lương phong phú. Rõ ràng rằng manual testing hiện nay vẫn có vai trò hết sức quan trọng trong ngành phát triển phần mềm.

Trước khi đi phân tích thế mạnh, điểm yếu của manual testing, chúng ta xem lại một chút khái niệm về manual testing:

Manual testing: là việc tiến hành kiểm thử phần mềm mà các test case được thực hiện thủ công bởi người kiểm thử (QA/QC/Tester) mà không sử dụng bất kì công cụ tự động nào hỗ trợ.

Điểm mạnh

  1. Những lỗi về giao diện được phát hiện nhanh, phản hồi sớm về cho bộ phận phát triển
  2. Những thay đổi nhỏ của cấu trúc website như id, class sẽ không ảnh hưởng đến quá trình kiểm thử
  3. Thực hiện automation testing sẽ tốn nhiều chi phí cho việc chọn lựa công cụ và hiện thực test script. Do đó, đối với những dự án nhỏ, thời gian hiện thực ngắn thì nên sử dụng manual testing để giúp release nhanh chóng hơn.
  4. Không yêu cầu người kiểm thử phải có các kỹ năng về lập trình
  5. Việc thực thi test case mô phỏng đúng với hành vi người dùng cuối
  6. Người kiểm thử có thể thực hiện adhoc test một cách linh động

Điểm yếu

  1. Tốn nhiều nhân lực và thời gian test
  2. Có những bộ test case regression test sẽ phải thực hiện lặp đi lặp lại mỗi lần release. Điều này có thể dẫn đến việc release gặp trở ngại nếu bộ test case có số lượng quá lớn.
  3. Human error, ví dụ: quên thực hiện một thao tác nào đó trong kịch bản test, điều này có thể xảy ra dẫn đến một số kết quả kiểm thử không chính xác

Khi nào sử dụng manual testing?

Dựa vào những thông tin về thế mạnh và điểm yếu bên trên chúng ta có thể quyết định sử dụng manual testing sao cho phù hợp. Tại Cybozu hiện nay vẫn thực hiện manual testing song song với automation testing. Manual testing sẽ được sử dụng khi:

  • Triển khai tính năng mới của sản phẩm. Rất khó để hoàn thành cả việc hiện thực cho sản phẩm và viết test script tự động để test tính tăng mới. Để thời gian release được đảm bảo, manual testing vẫn được ưu tiên sử dụng hơn trong trường hợp này.

  • Cần thực hiện Exploratory testing. Khi manual testing QA có kinh nghiệm trên sản phẩm có thể thực hiện những test case “khám phá“ và phát hiện được những bất thường của sản phẩm.

  • Đối với những dự án ngắn hạn và không nhiều kinh phí, không nên đầu tư vào automation testing. Manual testing là sự lựa chọn phù hợp cho trường hợp này.

  • Đối với những dự án tần suất thực hiện test thấp, khoảng 2-3 lần/năm, thì không nên đầu tư vào việc automation testing.

    Ví dụ: dự án bảo trì phần mềm, bản patch, dự án có kế hoạch release ko thường xuyên.

Kiểm thử tự động(Automation testing)

Trong một dự án automation testing tại Cybozu được thực hiện cách đây khoảng 4 năm và đã đưa vào chạy daily trên hệ thống CI của công ty. Hãy cùng xem sơ đồ so sánh thời gian chạy giữa manual và automation testing dưới đây:

manual and automation comparing

Đây là một ví dụ cho thấy automation testing thực sự giúp giảm thời gian test khá nhiều. Bên cạnh đó automation testing còn có những thế mạnh khác, cũng như những điểm yếu cần xem xét. Hãy cùng nhau tìm hiểu chi tiết hơn tại phần này.

Xem qua định nghĩa về automation testing:

Automation testing: là quá trình kiểm thử phần mềm thông qua việc sử dụng các công cụ tự động để chạy các test script.

Điểm mạnh

  1. Thời gian thực hiện việc kiểm thử ngắn
  2. Tiết kiệm nguồn nhân lực
  3. Có khả năng tái sử dụng đối với những test case cần test nhiều lần
  4. Test report tự động được tạo ra sau khi test script thực thi xong
  5. QA có thời gian để research công nghệ mới, đầu tư vào chất lượng sản phẩm hơn.

Điểm yếu

  1. Đòi hỏi người kiểm thử có kiến thức về lập trình
  2. Chi phí cho việc chọn công cụ tự động và viết test script cao
  3. Tốn chi phí maintain, debug khi có test script failed vì nhiều nguyên nhân khác nhau, ví dụ như: mã nguồn sản phẩm thay đổi, network không ổn định (Đối với e2e), hiệu suất môi trường test không ổn định…

Khi nào sử dụng automation testing?

Nên có chiến lược rõ ràng trong việc chọn bộ test case để thực hiện automation testing. Vì chúng ta không đủ thời gian (đã phân tích tại 4. Không đủ cost để chúng ta làm tất cả do đó phải cân nhắc chọn lựa khi bắt đầu, tại 9 tư duy quan trọng để xây dự án test automation), nhân lực để đưa toàn bộ các test case manual testing thành tự động hóa.
Tại Cybozu, chúng tôi đánh giá và lựa chọn các test case cần và nên được chuyển sang automation testing để hỗ trợ tốt nhất cho bộ phận QA.

Những trường hợp nên sử dụng automation testing là:

  • Test case thường xuyên được yêu cầu thực hiện như: acceptance testing, regression testing chẳng hạn. Việc thực hiện automation testing cho các test case này giúp giảm chi phí của QA cho những test case lặp đi lặp lại, giúp họ có thời gian đầu tư nghiên cứu yêu cầu của phần mềm và thực hiện các test case khác
  • Test case cần thực hiện trên nhiều môi trường khác nhau: trên nhiều browser khác nhau chẳng hạn
  • Phù hợp với dự án lớn, liên tục phát triển trong thời gian dài hạn.

Những khác biệt chính giữa Manual testing và Automation testing

Bài viết đã trình bày về thế mạnh và điểm yếu của từng loại testing. Bảng so sánh những điểm khác biệt chính giữa manual testing và automation testing giúp chúng ta nắm lại một cách vắn tắt đặc điểm của 2 cách thực hiện test này.

Yếu tố Manual testing Automation testing
Chi phí thời gian Tốn thời gian để thực hiện kiểm thử Thời gian kiểm thử rút ngắn. Đặc biệt có thể chạy daily tự động trên CI, không cần người khởi chạy.
Giao diện thay đổi Thay đổi nhỏ về class, id… không ảnh hưởng đến kịch bản test Dễ bị ảnh hưởng bởi source code sản phẩm
Kiến thức về lập trình Không đòi hỏi người kiểm thử có kiến thức về lập trình Người kiểm thử cần có kiến thức về lập trình để hiện thực test script
Kiểm thử khám phá Dễ dàng triển khai Exploratory testing Không thể thực hiện Exploratory testing
Thực thi song song Khi cần kiểm thử trên nhiều môi trường cần tăng nguồn lực QA lên để thực hiện Dễ dàng thực thi song song trên nhiều môi trường nhờ vào sự hỗ trợ của các công cụ tự động
Khi nào áp dụng? Dự án nhỏ, thời gian thực hiện ngắn hay các test case chỉ đòi hỏi chạy ít lần Dự án lớn hay các test case đòi hỏi chạy đi chạy lại nhiều lần

Tài liệu tham khảo

https://www.guru99.com/difference-automated-vs-manual-testing.html

Môt số thuật ngữ trong bài viết

class, id: trong bài này dùng với ngữ nghĩa là các thuộc tính của HTML element

patch: bản vá lỗi phần mềm, giúp sửa chữa lỗi nhất định nào đó của chương trình phần mềm

release: phát hành phần mềm, thông thường tiến hành khi hoàn thành chức năng mới.

Các bài viết cùng chủ đề