Biện hộ: Vì sao các Developer không test phần mềm của họ?

Từ xa xưa tôi đã ghét việc testing, nó không quan trọng với tôi, tôi không thấy lý do gì để làm việc này, kiểu như phí tiền và thời gian vậy.

Trong suốt sự nghiệp trước đây, tôi chưa bao giờ nói về cách nào, tại sao hoặc có nên test software của mình. Tôi đưa ra rất nhiều biện hộ cho việc không muốn học hỏi vụ này. Tôi nói với nhiều developer về điều này, những người cũng không ngừng biện hộ như tôi.

Trong suốt thời gian làm việc với những người khác trước đây, tôi đã trải qua rất nhiều quan điểm trái ngược khác nhau về software testing. Sau đây là vài lý do phổ biến nhất mà các developer đưa ra để không phải test software.

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?

Tham khảo thêm các việc làm tester lương cao cho bạn tại đây

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!

Tôi xin trích dẫn một câu trả lời từ StackExchange bởi vì nó hợp lý.

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 TestingIntegration 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

Nếu bạn muốn biết thêm về tất cả các thể loại khác nhau của kiểm thử phần mềm, bạn nên đọc this article.

Đ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.

Tìm hiểu thêm các vị trí tuyển dụng tester HOT nhất tại Topdev