12/08/2018, 13:22

Kiểm thử hướng chức năng - Làm sao quyết định phần nào cần tự động hóa?

Khi chúng ta làm việc trong một dự án chuyển giao phần mềm, chúng ta sẽ phải đối mặt với vấn đề quyết định xem có nên tự động hóa việc kiểm thử cho một trường hợp nào đó. Câu hỏi “tự động hóa hay không?” sẽ là chủ đề chính để chúng ta thảo luận trong bài viết này. Vì sao tự động hóa ...

Khi chúng ta làm việc trong một dự án chuyển giao phần mềm, chúng ta sẽ phải đối mặt với vấn đề quyết định xem có nên tự động hóa việc kiểm thử cho một trường hợp nào đó. Câu hỏi “tự động hóa hay không?” sẽ là chủ đề chính để chúng ta thảo luận trong bài viết này.

Vì sao tự động hóa

Thông thường, tự động hóa công việc giúp ta tránh khỏi lặp lại công việc, nhận phản hồi nhanh hơn, tiết kiệm thời gian chạy kiểm thử hết lần này tới lần khác và đảm bảo cho chúng ta luôn thực hiện các bước kiểm thử phù hợp với điều kiện đề ra và theo đúng kì vọng.

Lặp lại các công đoạn kiểm thử thủ công là một điều vô cùng nhàm chán. Ngoài ra, con người thực hiện hàng loạt kiểm thử thủ công mang tới kết quả mỗi lần một khác. Các nhân tố như xác nhận sai lệch và lỗi con người cũng ảnh hưởng tới kết quả. Ở một vài thời điểm, một người có thể thực hiện kiểm thử thủ công và bỏ sót một bước quan trọng dẫn tới không xác định được một lỗi trong ứng dụng đang kiểm thử.

howtodecidewhattoautomateornot_c1bb6b6cc9b9af8cf99323976d69db8d.jpg

Phản hồi nhanh chóng là điều quan trọng đối với bất kì chiến lược tích hợp liên tục nào, và cũng quan trọng tương tự khi bạn tiến tới giai đoạn chuyển giao liên tục. Nó cho phép bạn xác định xem có bất kì sự suy thoái chất lượng nào trong quá trình hoàn thiện mã nguồn hay không, qua đó cho phép đội ngũ của bạn khắc phục các vấn đề sớm nhất có thể trước khi trình bày sản phẩm. Phản hồi nhanh còn cho phép chúng ta tái tạo ra các kịch bản thử nghiệm bất cứ khi nào chúng ta cần chạy lại các kịch bản đó. Đội ngũ cũng sẽ dựa vào đó để thực hiện các thay đổi hoặc tái cấu trúc mã nguồn.

Cho dù với tất cả các lợi thế trên, tự động hóa cũng không thay thế hoàn toàn các quy trình kiểm thử có tính khám phá trong ứng dụng tại một số thời điểm nhất định.

Tự động hóa phần công việc nào?

Khi quyết định công đoạn kiểm thử nào sẽ được tự động hóa, điều đầu tiên chúng ta cần chú ý tới là tháp kiểm thử Mike Cohn. Về bản chất, tháp kiểm thử này quy định rằng kiểm thử đơn vị sẽ có nhiều hơn so với kiểm thử tích hợp ở cấp cao, kiểm thử dịch vụ và kiểm thử giao diện tự động.

Bản năng tự nhiên của một người mới tiếp xúc tự động hóa kiểm thử là cố gắng gộp hết mọi tình huống mà họ có thể kiểm thủ thủ công. Tích hợp liên tục yêu cầu kiểm thử tự động bởi vì đối với mỗi thay đổi nhỏ, chúng ta có thể tái thực hiện tất cả các kiểm thử và chắc chắn rằng chúng ta không phá hỏng bất cứ điều gì.

Tuy nhiên, kiểm thử chức năng vô tình có thể tạo ra một tập hợp lớn các test case, dẫn tới nhiều bất tiện. Ngay cả khi với mỗi tình huống mới, chúng ta thêm một tập hợp nhỏ các kiểm thử chức năng sau một số lần lặp lại, bộ hồi qui của chúng ta sẽ mất nhiều thời gian để chạy. Một bộ kiểm tra hồi quy chạy trong thời gian dài nhanh chóng trở thành một nút thắt cổ chai khi commit thay đổi. Như một hệ quả, các lập trình viên sẽ commit ít hơn nhưng nội dung commit sẽ nhiều hơn.

Là những người phát triển ứng dụng, chúng ta không chỉ đơn giản là muốn duy trì một tập hợp các trường hợp kiểm thử có thể tăng mãi. Chúng ta muốn có một tập các kiểm thử đảm bảo rằng các tính năng mới và cả tính năng cũ đang làm việc như mong đợi. Một cách tiếp cận hiệu quả hơn sẽ bao gồm các lĩnh vực quan trọng hơn theo góc độ kinh doanh, hoặc được biết đến là không ổn định và có một xác suất cao hơn để tìm ra các nhược điểm.

Chúng ta nên đặt mục tiêu tạo ra một bộ kiểm thử có giá trị cao, trong đó tập trung vào các lĩnh vực kinh doanh quan trọng của sản phẩm. Để đạt được mục tiêu này, chúng ta cần phải thực hiện cả hai quan điểm vào một danh sách bằng cách kết hợp hai khái niệm với mỗi câu chuyện: phù hợp kinh doanh và tỷ lệ lỗi của từng tính năng. Bằng cách này, chúng ta có thể xây dựng một ma trận để xác định các tính năng có tác động nhiều hơn và cần phải thử nghiệm thêm.

Ví dụ

Screenshot from 2016-04-22 17:11:53.png

Như chúng ta biết, những thay đổi liên quan tới kinh doanh phù hợp theo thời gian và khả năng sẽ có lỗi trong một phép kiểm thử cho dù nó đã từng hợp lệ trong một thời gian dài, mặc dù khả năng này khá nhỏ. Kết quả thử nghiệm nên được kiểm tra liên tục để xác định xem có nên giữ lại một phép kiểm thử nào đó trong tập hợp các phép kiểm thử của chúng ta hay không. Do đó bạn nên đánh giá các phép kiểm thử của bạn với mỗi lần lặp.

Tổng kết

Khi thực hiện tích hợp liên tục, có một bộ các phép kiểm thử tự động có thể thực thi nhanh và cũng cấp cho sản phẩm của bạn sự tự tin là điều rất quan trọng.Việc có thể mang lại giá trị kinh tế nhanh hơn đối thủ cạnh tranh của bạn đang trở nên rất quan trọng trong một thị trường kỹ thuật số. Một chiến lược kiểm thử tự động hóa tốt có thể đảm bảo chất lượng phần mềm nhanh hơn, gíup bạn đi trước một bước so với đối thủ cạnh tranh. Nhưng khi nói tới chiến lược kiểm thử, chúng ta không thể có một chiến lược cố định nào cho mọi dự án. Nó sẽ luôn luôn phụ thuộc vào các dự án và các loại kiểm thử mà chúng ta cần phải tập trung vào để đạt được các mục tiêu dự án.

Link bài viết gốc: https://www.thoughtworks.com/insights/blog/functional-tests-how-decide-what-automate

0