Vì sao Kiểm thử viên và Lập trình viên không phải kẻ thù của nhau
Chúng ta sử dụng nhiều ứng dụng mỗi ngày. Internet là một phần cuộc sống của chúng ta. Đằng sau mỗi ứng dụng, cho dù là mua sắm, học tập, đặt vé v.v... là rất nhiều người đã đóng góp để làm cho cuộc sống của chúng ta thoải mái thông qua các ứng dụng này. Trong số đó tiêu biểu là "Kiểm thử viên" và ...
Chúng ta sử dụng nhiều ứng dụng mỗi ngày. Internet là một phần cuộc sống của chúng ta. Đằng sau mỗi ứng dụng, cho dù là mua sắm, học tập, đặt vé v.v... là rất nhiều người đã đóng góp để làm cho cuộc sống của chúng ta thoải mái thông qua các ứng dụng này. Trong số đó tiêu biểu là "Kiểm thử viên" và "Lập trình viên". Trong bài viết này, chúng ta sẽ thấy các quan điểm khác nhau của Kiểm thử viên và Lập trình viên, cũng như mối quan hệ giữa chúng để tạo ra một ứng dụng thành công.
Mục đích của Kiểm thử viên và Lập trình viên là giống nhau: cung cấp phần mềm chất lượng cho khách hàng. Nhưng cách suy nghĩ của họ rất khác nhau.
Nói đúng hơn là, "Kiểm thử viên và Lập trình viên không khác nhau nhưng họ đi theo những con đường khác nhau để đạt được cùng một mục tiêu".
Lập trình viên nghĩ: 'Làm thế nào để tạo ra một ứng dụng?'
Kiểm thử viên nghĩ: "Làm thế nào để làm hỏng một ứng dụng?"
Kiểm thử viên và Lập trình viên hành động đôi khi mâu thuẫn nhau như Tom và Jerry, nhưng kết quả cuối cùng chỉ tích cực khi cả hai làm việc cùng nhau.
Nói "Làm thế nào để làm hỏng một ứng dụng" không có nghĩa là phương châm của một Kiểm thử viên là làm hỏng công việc của các Lập trình viên. Điều này có nghĩa là kiểm thử viên bằng cách tư duy ngoài khuôn khổ và đặt mình vào hoàn cảnh của khách hàng, áp dụng tất cả các tình huống có thể xảy ra trên ứng dụng. Việc này được thực hiện để cho ứng dụng không bị lỗi trong môi trường sử dụng thực sự.
Đối với việc phát triển bất kỳ ứng dụng phần mềm nào, Quy trình Phát triển Phần mềm (SDLC) đóng một vai trò quan trọng. Trước đây, kiểm thử phần mềm được thực hiện ở giai đoạn phát triển cuối cùng. Nhưng sửa chữa lỗi ở giai đoạn cuối tỏ ra rất khó khăn và tốn kém. Vì vậy, để tránh những phức tạp như thế, hiện nay, kiểm thử phần mềm là một phần của mỗi giai đoạn của SDLC. Điều này có nghĩa là việc thử nghiệm bắt đầu từ giai đoạn phát triển đầu tiên.
"Kiểm thử viên" nhìn vào một ứng dụng từ những góc độ khác sáng tạo hơn, và nếu các yêu cầu của người dùng cuối được hiểu chính xác, việc đó sẽ tạo ra rất nhiều sự khác biệt.
Hãy cùng xem và hiểu khái quát về quan điểm của Kiểm thử viên ở các giai đoạn khác nhau của SDLC:
1) Thu thập và phân tích yêu cầu :
Trong giai đoạn này, một Tài liệu Requirement được chuẩn bị theo yêu cầu của các bên liên quan và bằng cách cộng dồn các nhu cầu thiết yếu của ứng dụng, .
Tài liệu Requirement được chia sẻ với nhóm Kiểm thử để có quan điểm của họ về yêu cầu được đề xuất cũng như gửi lại các Q&A của họ. Các Q&A có thể là bất cứ điều gì, từ sự cách hiểu về bất kỳ thành phần cụ thể nào hoặc dự đoán về một số khả năng xảy ra lỗi trong tương lai.
Chúng ta hãy lấy một ví dụ rất phổ biến: Yêu cầu của người dùng cuối là "Không cho phép nhập các ký tự đặc biệt".
Vai trò của Lập trình viên: Rõ ràng là viết mã để chèn vào trường Input bằng cách kiểm tra xem khi người dùng nhập vào bất kỳ ký tự đặc biệt nào, lỗi sẽ bị ném ra hoặc thông báo lỗi thích hợp được hiển thị.
Quan điểm của Kiểm thử viên: Đầu tiên sẽ kiểm tra yêu cầu đã nêu nhưng sau đó anh ta sẽ phân tách thành nhiều tình huống. Anh ta sẽ có những câu hỏi như:
-
Nếu chỉ có kí tự đặc biệt được điền vào thì sao? Nó sẽ hiển thị cùng thông báo lỗi hay là một thông báo lỗi khác cho người dùng?
-
Điều gì sẽ xảy ra nếu người dùng copy & paste bất kỳ một tổ hợp của các ký tự đặc biệt cùng các ký tự chữ và số vào hộp nhập liệu?
Có nhiều kịch bản khác nữa mà những Kiểm thử viên nghĩ đến khi xem xét tài liệu Yêu cầu.
Để đánh giá bất kỳ sản phẩm hoặc ứng dụng nào, thử nghiệm có nghĩa là đặt câu hỏi về sản phẩm để bao gồm hầu hết các kịch bản vì người dùng cuối có thể là bất cứ ai và có thể sử dụng ứng dụng theo bất kỳ cách nào họ muốn.
2) Thiết kế hệ thống / ứng dụng:
Sau khi thu thập dữ liệu và sau khi chốt các yêu cầu, Lập trình viên bắt đầu thiết kế của họ trên ứng dụng. Điều này bao gồm xem xét các tài liệu thiết kế trước khi thực hiện bởi các nhà phát triển.
Các Kiểm thử viên từ sự hiểu biết và tư duy sáng tạo của họ phân tích tất cả các kịch bản có thể cho tất cả các tính năng mới, cải tiến, tích hợp, cập nhật UI, bất cứ điều gì được đề cập trong yêu cầu. Họ tạo ra các trường hợp thử nghiệm, danh sách kiểm tra và dữ liệu kiểm tra để khi ứng dụng được đưa ra để thử nghiệm, chúng đã sẵn sàng với các thông số thử nghiệm của chúng.
3) Giai đoạn thực hiện:
Trong giai đoạn này, các Lập trình viên mới thực sự triển khai thiết kế hệ thống đã hoàn tất ở giai đoạn trước.
Khi chúng ta nhìn từ** quan điểm của Lập trình viên**, họ tập trung vào việc xây dựng các chức năng theo yêu cầu. Theo quan điểm của họ, chức năng sẽ hoạt động hoàn hảo và hiệu quả.
Nhưng khi chúng ta nhìn từ quan điểm của Kiểm thử viên thì vấn đề đối lập hoàn toàn với Lập trình viên. Khi các nhà phát triển tập trung vào việc thực hiện các chức năng, Kiểm thử viên áp dụng tất cả kĩ năng của họ để kiểm tra các chức năng. Có thể có trường hợp các Lập trình viên hiểu sai Yêu cầu và trong trường hợp đó khi người kiểm tra áp dụng các kịch bản của họ, thì sẽ gây ra lỗi trong ứng dụng.
4) Kiểm tra hệ thống:
Trong giai đoạn này, các Lập trình viên tải ứng dụng lên môi trường staging (môi trường cho phép Kiểm thử viên thử nghiệm) với các danh sách các chức năng được xác định là đã triển khai trong sprint/bản phát hành đó.
Lập trình viên tải lên ứng dụng với ý niệm rằng các chức năng được triển khai đã hoàn hảo theo các yêu cầu được chỉ định; họ chỉ đưa ra ứng dụng để xác minh lại.
Nhưng đối với Kiểm thử viên, ngoài chức năng mong muốn có nhiều cách khác nhau mà người dùng cuối có thể nghĩ đến khi sử dụng một ứng dụng cụ thể. Nhiệm vụ của người kiểm tra là sử dụng tư duy sáng tạo của họ và khám phá nhiều kịch bản nhất có thể.
5) Giai đoạn bảo trì:
Giai đoạn này là để kiểm tra nỗ lực hợp tác của Kiểm thử viên và Lập trình viên.
Ứng dụng cuối cùng sau khi đã triển khai toàn bộ được gửi đến người dùng để sử dụng trực tiếp. Nếu nó làm việc như mong muốn thì không có vấn đề. Nhưng nếu có bất kỳ sai lệch nào, điều đó sẽ đòi hỏi nỗ lực hợp tác của cả Kiểm thử viên và Lập trình viên trong giai đoạn bảo trì.
Kiểm thử viên và Lập trình viên cùng nhau tạo ra một đội ngũ hiệu quả vì trách nhiệm của cả hai là đảm bảo sản phẩm tốt nhất. Điều này chỉ đạt được nếu cả hai tay làm việc tay trong tay với sự hiểu biết đúng và nhận phản hồi tích cực.
Hãy xem một vài điểm quan trọng nhằm xác định vai trò của Kiểm thử viên và Lập trình viên:
-
Trong khi Lập trình viên nên đảm bảo rằng không có lỗi nào trong những gì họ phát triển, Kiểm thử viên nên đảm bảo rằng nếu có lỗi thì chúng sẽ được báo cáo và sửa chữa vào đúng thời điểm.
-
Lập trình viên nên lắng nghe thông tin phản hồi từ Kiểm thử viên một cách tích cực và xây dựng.
-
Cần phải nói rằng các Lập trình viên là "các chuyên gia" trong một lĩnh vực kỹ thuật cụ thể và họ có thể sử dụng tất cả các kỹ năng kỹ thuật để phát triển một dự án theo yêu cầu. Kiểm thử viên là bên thứ ba (giả sử họ là Người dùng ảo của ứng dụng) báo cáo sai sót hoặc lỗi theo một cách có hiệu quả dựa trên các tiêu chí xác định chất lượng của ứng dụng và chỉ ra những khu vực cần cải thiện.
Làm việc với tư cách là Người kiểm tra:
Tất nhiên là có nhiều nhà phát triển tài năng cũng có khả năng kiểm thử ổn. Điểm quan trọng là một người không thể tự kiểm tra được thành quả của chính họ một cách công tâm, và chúng ta cần ý kiến phản hồi của người khác.
"Kiểm thử viên" là người không bị ảnh hưởng bởi ứng dụng đã phát triển và có thể đưa ra những phán đoán của chính mình dựa trên kinh nghiệm thực tiễn từ việc sử dụng ứng dụng với tất cả các tình huống có thể xảy ra.
Kiểm thử viên giỏi biết rằng người dùng gây ra nhiều lỗi khi học và sử dụng sản phẩm mới. Người dùng thời gian thực muốn học cách sử dụng sản phẩm mới bằng cách thử và nhìn thấy những gì xảy ra thay vì đọc hướng dẫn sử dụng.
Vì vậy, trọng tâm chính của Kiểm thử viên là "Chỗ nào có thể gây lỗi". Trọng tâm chính của Nhà phát triển là cung cấp dự án theo yêu cầu.
Kiểm thử viên giỏi và Lập trình viên giỏi:
Kiểm thử viên giỏi là người chấp nhận các xung đột. Nhiều khi rất khó xác định nguồn gốc của lỗi, ví dụ như nó có thể là lỗi mã hóa, lỗi tài liệu, lỗi thiết kế hoặc thậm chí không phải là lỗi. Nhưng công việc của Kiểm thử viên là phải báo cáo mọi nghi vấn lỗi.
Lập trình viên tốt là người có thể nhận phản hồi một cách tích cực và xây dựng, chẩn đoán sự cố và gỡ lỗi. Nhưng các Lập trình viên thường né tránh xung đột và cản trở việc tìm ra bug.
Kết luận:
Tôi kết luận bài viết của mình bằng cách nói rằng, việc đánh giá cao sự khác biệt là rất quan trọng đối với các nhóm sản xuất phần mềm nhưng các cách tiếp cận khác nhau giúp tìm ra các giải pháp, và dẫn đến việc deliver một sản phẩm hoạt động tốt nhất.
Mọi người đều đang làm nhiệm vụ của họ. Các Lập trình viên phát triển một ứng dụng. Kiểm thử viên kiểm tra ứng dụng đó.
Xuyên suốt bài viết này, tôi muốn bổ sung một điều nữa: "Nếu chúng ta cần làm cho dự án/ứng dụng trở nên tốt nhất, chúng ta cần một nhà phê bình có thể cung cấp phản hồi đáng tin cậy tham gia cùng".