Sắp tới, mình sẽ có bài viết về automation testing với Pupeeteer. Tất nhiên, phương châm trước giờ của của mình vẫn là:
Công cụ không quan trọng, quan trọng hiểu và áp dụng kiến thức nền tảng.
Do vậy, trước khi hướng dẫn các bạn dùng tool và thư viện, mình sẽ nhắc lại kiến thức về testing mà chúng ta đã học ở trường nhé.
Series này sẽ có ích với toàn bộ developer, những tester mới ra trường hoặc những bạn đang tìm hiểu muốn chuyển ngành sang automation test.
Series gồm 3 phần:
- Phần 1: Tại sao lập trình viên cần biết về testing?
- Phần 2: Thuật ngữ chuyên ngành testing và các loại testing
- Phần 3: Công việc thường ngày của tester. Automation test có gì hot?
Ở phần này, chúng ta cùng tìm hiểu về tầm quan trọng của testing cùng với quan hệ giữa developer và tester nhé!
Note: Giống như các khái niệm Agile và Scrum, mảng testing khá rộng, có thể coi như một chuyên ngành riêng.
Môn này ở trường học cũng khá dài, nội chuyện unit test hoặc automation test cũng tốn vài cuốn sách rồi nên trong vòng 1, 2 bài viết code dạo sẽ không nói hết được. Bạn nào có hứng thì cứ google tìm hiểu thêm nhé.
Viết phần mềm là được rồi, tại sao còn phải test?
Phần mềm nó không tự sinh ra, mà phải do lập trình viên ngồi rặn mà viết ra. Lập trình viên thì cũng là người, vì “nhân vô thập toàn”, đã là người thì ai cũng có lúc mắc sai lầm. Sai lầm trong khi code sẽ sinh ra bug.
Đôi khi, lập trình viên hay ngửa mặt lên trời than “Trời đã sinh code sao còn sinh bug”. Thật ra, code và bug là đôi bạn đồng hành, ở đâu có code, ở đó có bug.
Theo thuyết tương đối của cụ Anh-xờ-tanh, càng viết nhiều code lại càng lòi ra nhiều bug.
Bug thì có đủ mọi thể loại, từ bug vô hại chả chết ai cho đến những bug giết người hoặc gây thiệt hại cả triệu đô. Do vậy ta phải tìm cách giấu bug, nhầm, loại bỏ bug khỏi phần mềm.
Tất nhiên, bug có những con nằm lộ thiên như Ngọc Trinh khoe đùi, cũng có những con trốn kín mít như chủ hụi trốn nợ. Để tìm được những con bug này, chúng ta phải chạy thử chương trình, tìm cách phá chương trình cho những con bug này ló đầu ra.
Việc chạy thử, tìm cách phá chương trình này được gọi là test.
Quan hệ giữa developer và tester
Việc kiểm thử phần mềm và tìm ra bug không hề đơn giản. Do vậy, ngành mình có một hướng phát triển khác là tester, gọi sang chảnh hơn là QA engineer – công việc chính của họ xoay quanh việc chạy thử, phá chương trình để tìm ra bug.
Tester thường là nữ, vì người ta đồn rằng phụ nữ tinh tế tỉ mẩn hơn. Tuy nhiên cả nam hay nữ đều làm tester được (nam cũng có nhiều người tỉ mẩn mà).
Cả 2 bên đều có chung mục đích là tạo ra sản phẩm hoàn hảo nhất cho khách hàng, nhưng công việc lại hoàn toàn đối nghịch nhau.
- Công việc của developer là phát triển hệ thống, viết code và bỏ bug vào code; vai trò của tester là tìm lôi đầu những con bug đáng ghét ra cho developer trừng trị.
- Developer thì rất tin tưởng code mình hoàn hảo không có bug. Tester cố chứng minh điều ngược lại bằng cách bới bug ra cho developer sửa.
Vì vậy cả 2 bên thường dễ xung đột, cãi nhau, dẫn đến quýnh lộn. Quýnh nhau rồi lại hoá thương nhau, do lửa gần rơm nên trong ngành mình cũng có khá nhiều cặp đôi chồng developer, vợ tester và ngược lại.
Tester – Những người hùng thầm lặng
Do đặc thù công việc, ngành tester đòi hỏi bạn phải có tư duy khác developer. Developer nghĩ tới những trường hợp hệ thống chạy tốt, chạy ổn định. Tester nghĩ tới những trường hợp hệ thống bị lỗi, bị cà giựt, chạy không như mong đợi.
Ví dụ như trang đăng nhập, developer sẽ nghĩ cách làm sao người dùng đăng nhập thành công; tester sẽ nghĩ về trường hợp người dùng quên nhập username hoặc password, nhập quá dài hoặc nhập thêm kí tự lạ.
Có một câu chuyện vui về cách các bạn tester phá và tìm lỗi chương trình như sau:
Một anh tester đi vào quán bar. Anh order 1 chai bia, 2 chai bia, 0 chai bia, 1.8 chai bia, -1 chai bia, 999999 chai bia, cuối cùng còn order thêm một con thằn lằn nướng.
Tester cũng giống như thủ môn vậy. Điều khác với bóng đá là những kẻ cố gắng ghi bàn lại chính là những developer cùng team, và vai trò của tester là để lọt lưới càng ít bug càng tốt.
Do bản chất công việc tester không trực tiếp xây dựng hệ thống, nhu cầu tuyển dụng không nhiều bằng developer nên thường tester lương hơi thấp hơn developer, đôi khi còn bị developer và sếp coi nhẹ.
Tuy nhiên, tester là những người hùng thầm lặng, đóng vai trò không thể thiếu trong các team. Tester giỏi sẽ khiến hệ thống ít lỗi hơn và chạy ổn định hơn.
Tester là những anh hùng thầm lặng đứng sau thành công của mỗi dự án
Developer thì cần gì phải biết testing, để cho các bác tester làm cũng được mà
Không phải vô duyên vô cớ mà người ta đưa môn Kiểm thử phần mềm (software testing) vào chương trình học Đại Học. Dù cho bạn là developer, bạn cũng nên rèn luyện cho mình tư duy tester vì những lợi ích sau:
- Tư duy tester giúp chúng ta mới nghĩ ra được toàn bộ những corner case có thể gây ra lỗi cho hệ thống, từ đó nghĩ ra phương pháp giải quyết phù hợp
- Tư duy tester cũng sẽ giúp bạn thấu hiểu tester và dễ giao tiếp với họ hơn
- Khi viết code, ta sẽ để ý và biết cách tách hệ thống ra từng phần cho dễ test
- Developer có tư duy tester sẽ chạy thử code mình viết kĩ lưỡng hơn, tiết kiệm được thời gian cho cả tester và developer.
- Code viết ra ít có bug hơn, giúp nâng cao chất lượng phần mềm
Không nói đâu xa, bản thân developer cũng thường phải viết Unit Test. Để viết unit test một cách đúng đắn, developer chúng ta phải sử dụng tư duy tester để xác định các case cần test. Các phong cách lập trình TDD, BDĐ cũng bắt nguồn từ lập trình viên mà ra cả!
Tư duy tester cũng sẽ giúp bạn thấu hiểu tester và dễ giao tiếp với họ hơn
Tạm kết
Kết thúc bài viết này, các bạn đã có cái nhìn rõ ràng hơn về vai trò của testing trong ngành phần mềm. Những kiến thức này vô cùng hữu ích dù bạn có là developer hay tester.
Ở phần sau, mình sẽ đi sâu giải thích về các thuật ngữ trong ngành testing, cũng như nói rõ hơn vai trò và công việc thường ngày của các tester nhé.