-
Tại sao Testing là cần thiết? Testing để làm gì?
Khi mình đưa ra câu hỏi này tới một số người thì câu trả lời sẽ là có và cần thiết. Và họ đưa ra một số lí do như:
- Nếu không test thì ai là người đảm bảo những yêu cầu của khách hàng chạy đúng.
- Lỡ những chức năng đó implement sai hoàn toàn so với yêu cầu từ ban đầu thì sao.
Nhưng theo suy nghĩ của mình thì một câu hỏi đúng hơn là:
Ảnh hưởng như thế nào khi không có Testing?
Một ví dụ là sự cố Note 7 – Vì một lỗi dễ gây cháy do pin mà SamSung phải thu hồi toàn bộ sản phẩm và cho khai tử dòng điện thoại này.
Hay như gần đây là gần đây là mã độc WannaCry, nó đã khai thác một lỗ hổng trên phần mềm Windows và từ đó chiếm quyền điều khiển máy tính và dữ liệu của user. Hậu quả là các bệnh viện ở Anh không thể truy cập hồ sơ bệnh án, hay như Đức, nó đã tấn công và gây ảnh hưởng tới hệ thống đường sắt.
Trong 1 phạm vi nhỏ hơn là trong quá trình sản xuất phần mềm thì chi phí một lỗi khi phát hiện trong giai đoạn đầu là Tìm hiểu Requirement sẽ chỉ bằng 1/100 lần chi phí khi phát hiện trên môi trường Production.
Những ví dụ trên chứng tỏ, vai trò của testing rất quan trọng. Nó không chỉ tiết kiệm tiền thậm chí cả mạng sống.
2. Vậy vai trò của testing là gì?
Có nhiều khái niệm về vai trò cùa Testing, nhưng theo mình nghĩ thì Testing phải đảm bảo những yếu tố sau:
-
Tìm ra những lỗi của phần mềm và đảm bảo những lỗi này phải được fixed trước khi Release cho khách hàng.
Với yếu tố này thì cần chú ý rằng những bug đó phải được fixed. Khi bạn là 1 tester, bạn tự hào mình có thể tìm ra được 100 bugs về 1 chức năng nào đó, nhưng tới ngày Release cho khách hàng, 100 bugs đó vẫn chưa được fix thì chất lượng của phần mềm có cải thiện không?
Câu trả lời là không! Nó không hề cải thiện bất kì chút nào như trước khi bạn phát hiện ra những bug đó.
Do vậy, chất lượng của phần mềm chỉ được cải thiện khi khách hàng dùng phần mềm và không tìm ra được những lỗi mà tester đã tìm ra.
-
Gia tăng độ tự tin cho phần mềm.
Sau quá trình Testing kết thúc, nó sẽ đảm bảo những chức năng hoạt động như requirements và đồng thời sẽ đảm bảo hạn chế những tình huống bất ngờ như Crash màn hình hoặc quăng exception tới user chẳng hạn. Qua đó, làm tăng độ tự tin cho phần mềm.
-
Cung cấp thông tin cho những bên liên quan tới phần mềm (stackholder), từ đó có thể đưa ra quyết định cho phần mềm trong những tình huống cụ thể.
Trong quá trình sản xuất phần mềm, tester chỉ là mắt xích trong quá trình đó. Có rất nhiều bên liên quan khác nhau như Development Team, BA hoặc Khách hàng. Cũng như vậy, có nhiều thời điểm cần đưa ra quyết định cho phần mềm, chẳng hạn như khi nào Release lên customer testing environemnt, khi nào lên Production. Do vậy, những thông tin mà tester cung cấp sau khi quá trình testing kết thúc, sẽ giúp họ đưa ra những quyết định đúng đắn.
-
Ngăn ngừa lỗi cho phần mềm.
Cần phân biệt khái niệm Ngăn ngừa (Prevent) với Tránh (Avoid). Trong quá trình testing, bạn không phải là người viết ra yêu cầu, bạn chỉ là người test cho những yêu cầu đó. Cho nên, xác xuất bạn bị hiểu lầm là điều có thể xảy ra. Thứ hai, có khi bạn test trên những môi trường không giống khách hàng (Vì họ chạy thực tế, có rất nhiều yếu tố liên quan như: phần mềm tương tác, network, cấu hình máy, …). Do vậy quá trình Testing chỉ đảm bảo ngăn ngừa lỗi chứ không thể tránh chúng được.
3. Testing tới khi nào là đủ?
Giả sử bạn được giao test cho một fearture mới nào đó. Câu hỏi đặt ra là bạn sẽ test đến khi nào? Tới khi nào bạn nghĩ cái feature đó đã đủ chất lượng để giao cho khách hàng?Câu trả lời theo quan điểm của mình là nó phải thỏa mãn 2 thứ.
Trước tiên phải đảm bào từng requirement mà khác hàng đề cập phải chạy được và hoạt động tốt. Giả sử trong 1 thời gian cho phép, thì đầu tiên phải đảm bảo những case positive hoạt động tốt.
Thứ hai nó phải thõa mãn một số tiêu chí để chúng ta có thể đo lường được. Ví dụ như số lượng bug tìm được cho cái Feature đó đã được fixed bao nhiêu phần trăm hay tổng thời gian Testing cho cái feature đó mất khoảng bao lâu rồi.
Những quan điểm trên của mình về sự cần thiết của Testing là những ý kiến chủ quan. Mọi người có thể bàn bạc và thảo luận bằng cách gửi ý kiến ở phía dưới nhé.