26 Mar, 2021
Khi nào thôi kiểm thử ?
Một người kiểm thử phần mềm hỏi tôi: “Khi nào chúng em thôi kiểm thử? Làm sao chúng em biết rằng chúng em đã kiểm thử kĩ lưỡng phần mềm để đạt tới không có lỗi?”
Về lí thuyết, người kiểm thử thôi kiểm thử chừng nào không tìm được mọi lỗi và sửa chúng. Tất nhiên, điều đó là không thể được bởi vì không ai biết được liệu mọi lỗi đã được loại bỏ đi hay chưa. Do đó, người kiểm thử phải thôi kiểm thử vào lúc nào đó để chuyển giao phần mềm cho khách hàng.
Kiểm thử là giữ cân bằng giữa chi phí, thời gian và chất lượng. Nó thường được chỉ đạo bởi cách nhìn của quản lí về lịch biểu. Cách tiếp cận này là dừng kiểm thử bất kì khi nào thời gian lịch biểu hay chi phí đã lên ngân sách được đạt tới. Người quản lí dự án thường ra lệnh dừng kiểm thử dựa trên lịch biểu để chuyển giao phần mềm, bất kể liệu nó vẫn còn lỗi hay không. Thỉnh thoảng điều đó cũng được chỉ đạo bởi cách nhìn quản lí về chất lượng. Người quản lí dự án ra lệnh dừng kiểm thử khi phần mềm đáp ứng mọi yêu cầu, hay ích lợi từ việc tiếp tục kiểm thử không thể biện minh được cho chi phí kiểm thử. Điều đó sẽ thường yêu cầu có vài kiểm thử chất lượng để đánh giá phần mềm. Kiểm thử chất lượng bao gồm kiểm thử chức năng, kiểm thử độ tin cậy, kiểm thử hiệu năng, kiểm thử an ninh, kiểm thử tính đổi qui mô được, v.v.. Từng kiểm thử đều yêu cầu cho chạy phần mềm và thu thập dữ liệu để đảm bảo rằng không hỏng hóc hay dữ liệu xấu xảy ra. Có phần mềm hoàn hảo hay không có lỗi sẽ yêu cầu nhiều kiểm thử và điều đó có thể tốn nhiều thời gian cho nên không có nghĩa mà đạt tới điều đó cho hầu hết việc phát triển phần mềm.
Theo quan điểm thực hành, khái niệm“không lỗi” là mục đích không thể đạt tới được. Đạt tới nó nghĩa là mọi qui trình, mọi bước đều phải được thiết kế hoàn hảo để cho không thể nào tạo ra lỗi. Như tôi biết, không công ti phần mềm nào đã bao giờ đạt tới không lỗi.
—-English version—-
When to stop testing?
A software tester asked me: “When should we stop testing? How do we know that we have thoroughly tested the software to achieve zero defects?”
In theory, testers should stop testing until all defects are found and fixed. Of course, it is impossible because no one would know whether all defects have been removed or not. Therefore, testers must stop testing at some time to deliver software to customer.
Testing is a keeping a balance between cost, time, and quality. It is often dictated by a management view on schedule. The approach is to stop testing whenever scheduled time or budgeted cost is reached. Project managers often order to stop testing based on the schedule to deliver software, regardless whether it still has defects or not. Sometime it is also dictated by management view on quality. Project managers order to stop testing when the software meets all requirements, or the benefit from continuing testing cannot justify the testing cost. It will usually require having several quality tests to evaluate the software. Quality tests consist of functional test, reliability test, performance test, security test, and scalability test, etc… Each test requires running the software and collect data to ensure that no failure or bad data happened. To have perfect software or zero defect would require more testing and it may take a long time so it does not make sense to achieve it for most software development.
From the practical view, “Zero defects” concept is an unattainable goal. To achieve it means that every process, every step should be designed perfectly so that it is impossible to produce defect. As far as I know, no software company has ever achieved zero defects.