Code của tôi chạy hoàn hảo. Sao tôi phải test?
Tôi chưa bao giờ gặp một lập trình viên nào hoàn hảo cả, và cũng không nghĩ tồn tại một người như thế.
Lấy ví dụ ở các công ty công nghệ lớn trên thế giới như Facebook, Google, Rockstar, Sony…Họ thuê những developer thông minh nhất trên thế giới, nhưng các developer đó vẫn viết ra những mã không bảo mật.
Câu trả lời của tôi đối với những người cho rằng code của họ hoàn hảo: Sao bạn biết code của bạn là hoàn hảo? Bạn đã test nó chưa? Bạn có thể test nó liền và nói cho tôi biết là nó đã chạy hoàn hảo?
Nhưng mà, tôi không biết test cái gì bây giờ?!
Test tất cả mọi thứ! Ngoại trừ code của bên thứ ba vì họ đã tự test rồi!
1. Test mọi trường hợp phổ biến nhất có thể. Nó sẽ cho bạn thấy khi nào code của bạn lỗi khi thực hiện vài thay đổi(Quan điểm của tôi đây là lợi ích lớn nhất của automated unit testing )
2. Test những trường hợp nổi cộm có dính đến những đoạn code phức tạp mà bạn nghĩ rằng có thể xảy ra lỗi
3. Khi bạn tìm thấy một lỗi, hãy viết test case lại trước khi fix nó.(Để sau này dùng automation testing hoặc tester dùng)
4. Đưa những trường hợp nổi cộm này vào các code ít quan trọng hơn để khi nào đó có ai đó có thời gian xử lý nó
Thật khó để biết bắt đầu từ đâu khi bạn vẫn còn mới trong thế giới software testing. Có nhiều thể loại software testing. Tôi luôn đề xuất các beginner bắt đầu với Unit Testing, Integration Testing và Regression Testing.
Có rất nhiều phương pháp kiểm thử phần mềm. Một số developer sẽ không bao giờ cần phải làm việc này nếu họ đang làm việc trong một nhóm, nhưng ít nhất bạn cũng nên biết sự khác nhau giữa chúng:
- Acceptance testing
- Alpha testing
- Beta testing
- Black box testing
- Comparison testing
- Compatibility testing
- End-to-end testing
- Functional testing
- Incremental integration testing
- Install/uninstall testing
- Integration testing
- Load testing
- Performance testing
- Recovery testing
- Regression testing
- Sanity testing
- Security testing
- Stress testing
- System testing
- Unit testing
- Usability testing
- White box testing
Điều quan trọng là kiểm thử là cần thiết chứ không phải là tùy chọn
Testing vừa khó khăn vừa khó hiểu
Mọi thứ đều sẽ khó khăn nếu bạn không biết cách thực hiện. Sẽ tốn thời gian, thực hành, kinh nghiệm và kiên nhẫn. Hãy thư giãn, thả lỏng và tìm niềm vui khi học. Hãy mong đợi một thất bại và nhầm lẫn lúc ban đầu, đừng mong thành công ngay. Bạn cũng chỉ là con người thôi!
Một khi bạn đã học và cảm thấy thoải mái với việc test, bạn sẽ thấy nó rất đơn giản
Lấy một cuốn sách, đọc nó, trao đổi với các developer khác trên IRC/Slack/Discord v.v…
Testing khiến kéo dài thời gian phát triển
Đây là lý do biện hộ rất sai làm và phổ biến
Bất kỳ ai mới vào nghề testing ban đầu sẽ cố gắng, rồi sau đó, cảm thấy không thoải mái. Bạn là con người, việc này rất bình thường.
Trong giai đoạn đầu sẽ rất tốn thời gian nhưng hãy tiếp tục gắn lấy nó, cuối cùng nó sẽ ăn vào máu của bạn thôi. Thủ thuật ở đây là hảy xem nó như là một phần của quy trình phát triển phần mềm, vì vậy sẽ trở thành thói quen.
Viết các test case sẽ tiết kiệm khá nhiều thời gian và tránh nhức đầu về sau. Lặp lại việc testing bằng cách click vào cái nút và xác nhận mọi thứ chạy đúng như mong đợi khiến bạn cảm thấy tự tin khi giao nó cho khách hàng.
Bạn sẽ có cảm giác mãn nguyện khi code vượt qua hết các giai đoạn test. Việc bảo trì các đoạn code có khả năng test được luôn luôn dễ, sướng hơn là làm việc với những hệ thống không lặp lại việc test.