Khái niệm về kiểm thử phần mềm

Một trong những nguyên nhân chính dẫn đến việc kiểm thử chương trình trở nên kém đó là hầu hết các lập trình viên thường có suy nghĩ không đúng về kiểm thử. Họ thường nói rằng:

– “Testing is the process of demonstrating that errors are not present.”

– “The purpose of testing is to show that a program performs its intended functions correctly.”

– “Testing is the process of establishing confidence that a program does what it is supposed to do.”

Khi bạn kiểm thử một chương trình, bạn muốn thêm vào một vài giá trị cho nó. Việc hêm vào giá trị theo như kiểm thử thì nó mang ý nghĩa là tăng chất lượng hoặc độ tin cậy của sản phẩm. Việc tăng cường độ tin cậy của sản phẩm đồng nghĩa với việc tìm và gỡ bỏ các lỗi (error).

Hơn nữa, đừng kiểm thử một chương trình để cho thấy rằng nó làm việc đúng đó, thay vào đó bạn nên nghĩ rằng chương trình đó có lỗi và sau đó kiểm thử chương trình để tìm càng nhiều lỗi càng tốt.

Vì thế, định nghĩa chính xác hơn vể kiểm thử được phát biểu như sau:

“Testing is the process of executing a program with the intent of finding errors.”

Mặc dù khái niệm này nghe có vẻ như là chơi chữ nhưng nó thực tế gần như là vậy. Việc hiểu đúng khái niệm của kiểm thử phần mềm có thể tạo nên sự khác biệt lớn. Khái niệm này có rất nhiều ý nghĩa. Chẳng hạn, nó có ý rằng việc kiểm thử là một tiến trình “phá hoại”, thậm chí là tiến trình “thô bạo” giải thích tại sao hầu hết mọi người thấy nó rất là khó thực hiện.Định nghĩa này cũng có những ý nghĩa về cách thiết kế các test case (test data) và ai sẽ là người nên và không nên kiểm thử một chương trình được đưa ra.

Một cách khác để nhấn mạnh về định nghĩa ở trên là nhận biết cách dùng ưừ “thành công” (successful) và “không thành công” (unsuccessful) – Thông thường, những người quản lý dự án sử dụng chúng trong việc phân loại các kết quả của các test case. Hầu hết những người quản lý dự án gọi một test case mà không tìm thấy lỗi nào là một “successful run”, bất kì đâu mà phát hiện ra một lỗi mới thì được gọi là “unsuccessful”.

Một test case mà tìm ra một lỗi mới hiếm khi có thể được coi là “không thành công”. Một test case “không thành công” là một test case làm cho chương trình dưa ra kết quả đúng mà không thấy bất kì lỗi nào.

Xem xét trường hợp một người khách đến gặp một bác sĩ vì anh ta cảm thấy rất khó chịu trong người. Nếu bác sĩ thực hiên vài xét nghiệm mà không tìm ra nguyên nhân ở đâu, khi đó chúng ta gọi những xét nghiệm đó là “không thành công”. Tuy nhiên, nếu một xét nghiệm xác định được bệnh nhân đó bị loét dạ dày chảng hạn, thì khi đó xét nghiệm này là “thành công”.

(Tham khảo sách “The Art of Software Testing”)

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s