What is Sanity Testing and How to Do It Right?

8 min read

Sanity testing là gì và tại sao nó cần thiết?

Sanity testing là một loại kiểm thử phần mềm được sử dụng để xác minh rằng một thay đổi nhỏ hoặc bản sửa lỗi trong phần mềm đang hoạt động như dự định và không gây ra bất kỳ tác dụng phụ không mong muốn nào hoặc làm hỏng bất kỳ chức năng hiện có nào.

Điều thú vị là, theo báo cáo của HackerRank , các lỗi phổ biến nhất được tìm thấy trong quá trình sản xuất là do việc triển khai code chưa được kiểm tra hoặc bị lỗi. Do đó, sanity testing là rất quan trọng để đảm bảo tất cả các khía cạnh của phần mềm đều được kiểm tra phù hợp.

Mục tiêu chính của sanity testing là xác thực các thay đổi được thực hiện đối với một hoặc một vài phần cụ thể của ứng dụng chứ không phải kiểm tra chi tiết. Đây là một cuộc kiểm tra nhanh chóng và hời hợt để đảm bảo rằng hệ thống vẫn hoạt động như mong đợi sau khi thực hiện thay đổi. Ngoài ra, sanity testing thường được sử dụng như bước sơ bộ trước khi tiến hành kiểm thử rộng hơn, chẳng hạn như kiểm thử hồi quy. Đây là một phần quan trọng của quá trình phát triển phần mềm vì nó giúp đảm bảo rằng những thay đổi đối với hệ thống không tác động tiêu cực đến tính ổn định và chức năng tổng thể của nó. Thông thường, các sanity testing được bắt nguồn từ các thử nghiệm hồi quy hiện có, nhưng, không giống như thử nghiệm hồi quy, sanity testing thường không được ghi trước.

Đôi khi thuật ngữ ‘sanity testing’ có thể được sử dụng thay thế cho ‘smoke testing’. Cả hai đều giống nhau ở chỗ chúng xác định liệu có thể và hợp lý để tiếp tục thử nghiệm thêm hay không, tuy nhiên, có một số điểm khác biệt chính giữa hai điều này.

Sự khác biệt giữa sanity testing và smoke testing

Người kiểm thử phần mềm làm việc trên máy tính xách tay

Như tên ngụ ý và như chúng tôi đã giải thích ở trên, sanity testing nhằm mục đích kiểm tra điều hiển nhiên—liệu kết quả dự định của việc thay đổi mã có hoạt động chính xác hay không. Mặt khác, Smoke testing sẽ kiểm tra xem có gì quan trọng khác bị hỏng trong quy trình hay không.

Smoke testing là một loại thử nghiệm được sử dụng để xác định xem phần mềm có đủ ổn định để tiến hành thử nghiệm thêm hay không. Nó thường được thực hiện sớm trong quá trình thử nghiệm và được thiết kế để đảm bảo rằng chức năng quan trọng nhất của phần mềm hoạt động chính xác. Đối với những người mới làm quen với kiểm thử phần mềm , có thể khó phân biệt giữa kiểm thử khói và kiểm thử tỉnh táo vì chúng tương tự nhau. Cả hai đều được sử dụng để xác minh chức năng cơ bản của ứng dụng, nhưng có ba điểm khác biệt chính:

  • Phạm vi
    Kiểm thử Sanity thường tập trung vào phạm vi hơn so với Smoke testing. Sanity testing sẽ kiểm tra chức năng cụ thể, chẳng hạn như liệu một bản sửa lỗi cụ thể có hoạt động như mong đợi hay không. Ngược lại, smoke testing có phạm vi thử nghiệm rộng hơn và kỹ lưỡng hơn để kiểm tra chức năng quan trọng nhất của ứng dụng.
  • Mức độ
    Sanity testing là kiểm tra bề ngoài đối với một hoặc một vài phần cụ thể của ứng dụng. Đây là một quy trình kiểm tra nhanh chóng và nhẹ nhàng, không được thiết kế để phát hiện các vấn đề hoặc lỗi sâu xa trong hệ thống. Để so sánh, smoke testing là một thử nghiệm kỹ lưỡng hơn, có thể phát hiện ra các vấn đề hoặc khiếm khuyết lớn trong hệ thống, vì nó kiểm tra các chức năng quan trọng độc lập với tính năng, thay đổi hoặc sửa chữa mới.
  • Mục đích
    Mục đích chính của Sanity testing là để xác nhận rằng một thay đổi nhỏ đối với hệ thống không gây ra bất kỳ tác dụng phụ ngoài ý muốn nào hoặc làm hỏng bất kỳ chức năng hiện có nào. Mặt khác, Smoke testing được sử dụng để xác minh chức năng tổng thể của hệ thống và đảm bảo rằng nó ổn định và sẵn sàng để thử nghiệm thêm.

Tóm lại, sự khác biệt chính giữa sanity testing và smoke testing là sanity testing kiểm tra một hoặc một vài phần cụ thể của ứng dụng, trong khi smoke testing kiểm tra các chức năng quan trọng độc lập với tính năng mới, thay đổi hoặc sửa lỗi. Bây giờ các đặc điểm chính của thử nghiệm độ tỉnh táo và khói đã rõ ràng, nhưng có một câu hỏi khác—nên thực hiện việc nào trước, thử nghiệm độ tỉnh táo hay thử nghiệm khói?

Khi nào nên thực hiện sanity testing?

Hãy xem quy trình phát triển phần mềm cho một ứng dụng di động làm ví dụ. Sau khi bản dựng ứng dụng di động mới được phát hành, nó thường yêu cầu smoke testing. Nếu smoke testing thành công thì sanity testing sẽ được tiến hành. Và nếu điều này cũng thành công thì thử nghiệm mở rộng hơn—thử nghiệm chức năng (functional) và/hoặc hồi quy (regression)—sẽ được thực hiện. Sanity testing thường được thực hiện sau Smoke tetsing vì Smoke testing đảm bảo rằng công trình ổn định. Xem sơ đồ bên dưới.

Quy trình phát triển phần mềm cho ứng dụng di động

Nếu smoke test không thành công, điều đó thường chỉ ra rằng có vấn đề nghiêm trọng với phần mềm. Không nên thực hiện thử nghiệm thêm cho đến khi vấn đề được giải quyết. Nếu sanity test không thành công, điều đó thường chỉ ra rằng có vấn đề với một tính năng hoặc chức năng cụ thể của phần mềm. Trong cả hai trường hợp, nhóm phát triển cần được thông báo và các vấn đề gây ra lỗi phải được giải quyết. Nếu smoke test đạt nhưng sanity test không thành công sau đó phiên bản mới của ứng dụng dành cho thiết bị di động được phát hành thì bạn nên thực hiện smoke test khi lặp lại sanity test.

Những nỗ lực thử nghiệm lặp đi lặp lại này có vẻ rất nhiều, nhưng nếu không có sanity test, nếu một chu kỳ thử nghiệm đầy đủ được bắt đầu thì những nỗ lực thử nghiệm rất có thể sẽ vô ích nếu cần có một bản phát hành mới. Ưu điểm của việc sanity test nhiều hơn nhược điểm.

Ưu và nhược điểm của Sanity tetsing

  • Nhanh. Sanity test giúp tránh lãng phí thời gian và công sức bằng cách nhanh chóng xác định xem ứng dụng có quá thiếu sót để có thể tiến hành kiểm tra nghiêm ngặt hơn hay không.
  • Có hiệu quả. Sanity test là một cách hiệu quả để xác minh rằng một thay đổi hoặc sửa đổi nhỏ đối với hệ thống không gây ra bất kỳ tác dụng phụ ngoài ý muốn nào hoặc làm hỏng bất kỳ chức năng hiện có nào.
  • Phạm vi tập trung. Vì đây là thử nghiệm tập trung hơn nên sanity test cho phép người thử nghiệm tập trung vào một hoặc một vài khu vực cụ thể của hệ thống và xác nhận rằng những thay đổi ở đó không gây ra bất kỳ tác dụng phụ ngoài ý muốn nào.
  • Tiết kiệm chi phí. Sanity testing thường là một quy trình kiểm tra nhanh và nhẹ, không cần nhiều tài nguyên hoặc thời gian để hoàn thành. Do đó, đây có thể là một cách tiết kiệm chi phí để đảm bảo rằng hệ thống vẫn hoạt động như mong đợi sau khi thực hiện thay đổi.

Nhược điểm của việc sanity test

  • Phạm vi giới hạn. Phạm vi sanity test hạn chế có nghĩa là nó có thể không phát hiện ra các vấn đề hoặc khiếm khuyết sâu xa trong hệ thống.
  • Có thể không phát hiện được tất cả các vấn đề. Vì chỉ là kiểm tra bề ngoài nên kiểm tra độ chính xác có thể không phát hiện được tất cả các vấn đề hoặc lỗi có thể có trong hệ thống.
  • Có thể không đủ. Trong một số trường hợp, những thay đổi được thực hiện đối với hệ thống có thể quan trọng hơn việc sửa lỗi đơn giản hoặc thay đổi mã, trong trường hợp đó, có thể cần một quy trình kiểm tra kỹ lưỡng hơn, chẳng hạn như kiểm tra hồi quy, để đảm bảo tính ổn định và chức năng của hệ thống.

Nguồn: https://www.testdevlab.com/blog/what-is-sanity-testing-and-how-to-do-it-right

Avatar photo

Clean Code: Nguyên tắc viết hàm trong lập trình…

Trong quá trình phát triển phần mềm, việc viết mã nguồn dễ đọc, dễ hiểu là yếu tố then chốt để đảm bảo code...
Avatar photo Dat Tran Thanh
3 min read

Leave a Reply

Your email address will not be published. Required fields are marked *