Làm thế nào để lựa chọn chính xác được những TCs cho Kiểm thử tự động (để đạt được một Positive Automation ROI )

Hiện nay đang là thời đại của kiểm thử tự động. Hầu hết các dự án kiểm thử đều đang cố gắng chuyển các Test case (TC) thủ công sang tự động nhằm nâng cao năng suất và độ bao phủ. Một trong những bước quan trọng để bắt đầu kiểm thử tự động là lựa chọn các TC thích hợp và xác định ROI (Return of Investment - tỷ lệ lợi nhuận thu được so với chi phí đầu tư).

Bài viết này sẽ đề cập tới vài điểm quan trọng trong những thách thức trong quá trình chuyển từ Kiểm thử thủ công sang Kiểm thử tự động - giúp bạn chọn đúng ứng cử viên (TCs, người thực hiện ...) của test tự động và các yếu tố khác mang lại kết quả và lợi ích tốt hơn.

Why Automated Testing? - Tại sao lại kiểm thử tự động

Mặc dù kiểm thử tự động không thể thay thế hoàn toàn cho kiểm thử thủ công nhưng nó có 1 số ưu điểm rất đáng khen ngợi. Nếu biết vận dụng thích hợp thì nó sẽ mang lại giá trị vô cùng lớn cho công việc kiểm thử (tiết kiệm nhân lực, thời gian, độ chính xác và bao phủ cao ....). Để triển khai kiểm thử tự động, chúng ta cần phải có chiến lược, kế hoạch, giám sát và kiểm soát hợp lý.

Một số ngữ cảnh nên sử dụng kiểm thử tự động:

  • Hữu ích khi cần thực hiện kiểm thử smoke và kiểm thử hồi quy Đây là những trường hợp kiểm thử với một số lượng TC lớn, cần thực hiện trong một thời gian ngắn. Ưu điểm lớn nhất của kiểm thử tự động là thay thế con người lặp đi lặp lại các bước kiểm thử nhàm chán và làm việc không biết mệt mỏi, tránh hao phí về mặt thời gian (Đương nhiên rồi, bạn cần 5 phút để thực hiện 1 testcase thủ công thì có thể chưa đầy 30s nếu thực hiện tự động , bạn chỉ việc "Run" rồi ngồi chờ kết quả thôi)

  • Hữu ích trong việc chuẩn bị dữ liệu test.

  • Giúp thực hiện các TC liên quan đến nghiệp vụ có logic phức tạp.

  • Tốt khi cần thực hiện các TC ở nhiều nền tảng khác nhau (nhiều hệ điều hành, trình duyệt... khác nhau)

  • Ở những TC không thể hoặc rất khó để thực hiện bằng tay (ví dụ như test API không có giao diện ...)

  • Khi không thể xác định được số lần lặp lại của việc chạy TC

  • Khi muốn thực thi performance test hoặc load test, kiểm thử tự động gần như là lựa chọn duy nhất

Kiểm thử tự động đóng vai trò như một công cụ hỗ trợ cho kiểm thử thủ công; là cách tốt nhất để tăng hiệu suất và độ bao phủ của việc test. Nó không những tiết kiệm thời gian mà còn cải thiện độ chính xác nhất là trong các công việc lặp đi lặp lại, cái mà dễ xảy ra lỗi khi thao tác hoặc tốn thời gian ở kiểm thử thủ công.

  • Nhưng nên nhớ kiểm thử tự động không thể áp dụng 100% , bởi vậy cho nên với nhiều trường hợp test không yêu cầu hồi quy, đặc điểm kĩ thuật luôn thay đổi thì kiểm thử tự động không mang lại hiệu quả mà còn phản tác dụng .

Các sai lầm cơ bản cần tránh khi kiểm thử tự động để chọn ra được những ứng cử viên (TC) chính xác nhất:

Một trong những sai lầm cơ bản nhất mà tester mắc phải là không lựa chọn được chính xác các TC cần thiết.

Không nên chỉ chọn bất kỳ một test suite nào đó. Hãy phân tích các TC cẩn thận, kỹ lưỡng và chọn ra những ứng cử viên (TC) phù hợp nhất đem lại ROI cao (ROI - Lợi tức đầu tư - Đó là tính toán lợi ích về tiết kiệm chi phí, hiệu quả và chất lượng tăng lên)

Không có quy trình chuẩn nào cho việc xác định chính xác các TC để đưa vào trong kiểm thử tự động. Việc lựa chọn TC này phụ thuộc vào ứng dụng mà bạn đang kiểm thử.

Bạn có thể tìm hiểu chi tiết về cách chuyển từ kiểm thử thủ công sang kiểm thử tự động tại đây : http://www.softwaretestinghelp.com/how-to-translate-manual-test-cases-into-automation-scripts/

Làm thế nào để lựa chọn chính xác được những TCs cho Kiểm thử tự động

Duới đây là các bước để giúp bạn lựa chọn TC cho Kiểm thử tự động

Bước 1:

Xác định các tham số (nhóm yếu tố) mà bạn sẽ dựa vào để xác định ra các TC cho việc kiểm thử, các tham số này phụ thuộc vào ứng dụng đang được kiểm thử. Ví dụ:

  • TC được thực hiện với các bộ dữ liệu khác nhau
  • TC được thực hiện với các trình duyệt khác nhau
  • TC được thực hiện với các môi trường khác nhau (Linux, Windows ...)
  • TC được thực hiện với các logic nghiệp vụ phức tạp
  • TC được thực hiện với nhiều tài khoản người dùng khác nhau
  • TC liên quan tới số lượng lớn data
  • TC có sự phụ thuộc (ví dụ TC kiểm tra sự thay đổi của giá trị A sẽ làm ảnh hưởng tới kết quả của B, C... nào đó)
  • TC yêu cầu dữ liệu đặc biệt

Bước 2:

Chia nhỏ ứng dụng thành các module. Với mỗi 1 module, dựa vào các tham số kể trên, cố gắng xác định ra các TC nào nên được thực hiện tự động. Ví dụ có bảng lựa chọn sau đây:

Y - Yes N - No

Tương tự cho tất cả các module, list trên có thể được sử dụng để xác định ra các TC ứng cử viên cho kiểm thử tự động.

Bước 3:

Hợp nhất và nhóm số lượng TCs cho mỗi module như dưới đây:

Bảng trên là để định lượng các chi tiết và đưa ra ước lượng để hoàn thành việc kiểm thử bằng tay.

Bước 4:

Khi đã xác định được tất cả các yếu tố ở mức độ chi tiết như trên, bạn có thể trình bày chúng theo cách dưới đây (để tính ROI):

Chúng ta cũng nên tính đến các yếu tố là cơ sở ảnh hưởng tới ROI :

  • Chi phí mua và cấp phép (bản quyền) của tool
  • Thời gian để phát triển các script
  • Thời gian để duy trì các script
  • Thời gian để phân tích kết quả theo cách thủ công và tự động
  • Thời gian và chi phí để đào tạo các nguồn lực (nhân sự ...)
  • Chi phí quản lý

Ví dụ về tính ROI của kiểm thử tự động

Trong hầu hết các trường hợp thì ROI được tính cho 5 năm, nhưng không phải là bắt buộc. Dưới đây là 1 ví dụ về cách tính ROI trong vòng 5 năm:

*ROI = (Cumulative saving [Tiết kiêm tích lũy] / Investment through automation [Khoản đầu tư])100

Những thách thức trong quá trình chuyển từ Kiểm thử thủ công sang Kiểm thử tự động

1. Nhu cầu tự động hóa: Mặc dù mỗi đội kiểm thử có một nhu cầu tự động hóa riêng, không thể phát triển 1 chuẩn sửa chữa nhưng có thể thiết kế 1 tiêu chuẩn phù hợp với nhu cầu của công ty. Vì vậy, tự động hóa đòi hỏi phải có sự hỗ trợ tốt từ ban lãnh đạo cũng như từ đội phát triển.

2. Tự động hóa 1 ứng dụng hoàn chỉnh: Thực hiện kiểm thử tự động 100% trong ứng dụng là một nhiệm vụ lớn. Không phải là không thể, nhưng đòi hỏi phải lập kế hoạch và theo dõi đúng đắn, thỉnh thoảng lại phải kiểm tra. Có rất nhiều hoán vị và kết hợp dữ liệu, n số môi trường với n số chứng thực và các thuộc tính ủy quyền cần được xác nhận và do đó đòi hỏi một chiến lược để tự động hóa.

3. Kết hợp kiểm thử thủ công và kiểm thử tự động: Các chức năng (nghiệp vụ) quan trọng ngoài thực hiện bằng kiểm thử tự động thì nên kiểm thử cả bằng tay. Cần phải có một tiêu chuẩn để quyết định những TC nào là quan trọng. Các tiêu chí này có thể dựa trên nhiều yếu tố như : logic nghiệp vụ phức tạp, các lĩnh vực khách hàng quan tâm nhiều hơn, khu vực dễ xảy ra rủi ro ....

4. Chọn framework: Việc thiết kế framework là khía cạnh quan trọng nhất của tự động hóa. Nên dành thời gian nhiều hơn để thiết kế framework hơn là chăm chăm vào xây dựng kịch bản. Bất cứ khi nào phát triển kế hoạch kiểm thử tự động thì thiết kế framework cần được tập trung chính. Trong PLAN để thiết kế framework, hãy tạo 1 checklist các mục sẽ tạo thành framework. Nếu có 1 framework tốt thì việc lên kịch bản và duy trì nó trở lên dễ dàng.

5. Kiến thức của team: Bất cứ khi nào nghĩ đến kiểm thử tự động là ngay lập tức nhảy đến việc học ngôn ngữ lập trình hoặc ngôn ngữ viết kịch bản. Việc này chắc chắn là có ích nhưng cần quan tâm hơn tới việc xây dựng và phát triển logic. Kiểm thử tự động không phải chỉ là trách nhiệm của cá nhân , thay vì đó toàn bộ team nên đóng góp cho nó. Điều này không chỉ giúp nâng cao kỹ năng của các thành viên trong team mà còn là nguồn động viên tạo động lực phát triển.

6. Báo cáo: Mỗi 1 tool đều có một chuẩn để báo cáo kết quả kiểm tra. Để tùy chỉnh báo cáo này là một việc không phải dễ. Báo cáo các kết quả kiểm tra cũng đòi hỏi sự phối hợp và bảo trì, do đó sẽ làm tăng chi phí.

7. Tính tin cậy: Trên lý thuyết thì chúng ta nên tin tưởng vào các tool kiểm thử tự động. Nhưng thực tế cũng có trường hợp mất thời gian đầu tư hàng giờ để xây dựng một bộ (suite) TC tự động nhưng cuối cùng vẫn không tin tưởng được vào kết quả kiểm tra. Cần nỗ lực để duy trì các kịch bản. Các nhóm đang thực hiện kiểm thử thủ công nên tham gia để cùng kiểm thử tự động để tránh trường hợp kiểm thử tự động được thực hiện bởi nhóm thứ 3, nhóm này không hiểu rõ app nên không nhận thức được hết các kịch bản test và cuối cùng kết thúc bằng việc chạy các TC bằng tay.

Lời kết

Với những bộ hồi quy (regression suite) lớn, bạn có thể chia nhỏ thành các bộ hồi quy con và chạy bột hcish hợp theo yêu cầu release.

Thay vì tự động hoá toàn bộ bộ phần mềm, bạn có thể lựa chọn tự động hóa từng bước. Nói cách khác, bạn có thể làm theo mô hình nguyên mẫu để phát triển bộ tự động hóa. Tạo ra một cấu trúc hoặc khuôn khổ với việc thực hiện ít số các trường hợp thử nghiệm và bắt đầu sử dụng nó và dần dần nâng cao nó bằng cách thêm nhiều trường hợp thử nghiệm với nó.

Link tham khảo: http://www.softwaretestinghelp.com/manual-to-automation-testing-process-challenges/#How_to_Select_Correct_Test_Cases_for_Automation_Testing