Kỹ sư phát triển và kỹ sư kiểm thử đều test app giỏi như nhau?

Câu hỏi này là đề tài tranh luận phức tạp. Kỹ sư phát triển kiểm thử mã của họ. Kết quả của quá trình kiểm thử này là gì? Phải chăng là toàn bộ những luồng làm việc  của hệ thống? Thông thường, kỹ sư phát triển chỉ nhìn thấy những luồng làm việc chính và cơ bản của sản phẩm, và thường không đi sâu vào chi tiết từng luồng làm việc khác nhau. Kỹ sư kiểm thử giỏi sẽ giúp app không bị crash ở những luồng không mong muốn.

It’s not a bug, it’s a feature

Vấn đề chính trong việc kiểm thử do kỹ sư phát triển tiến hành là việc không nắm rõ, hiểu nhầm các yêu cầu chức năng. Nếu một yêu cầu chức năng bị hiểu nhầm bởi kỹ sư phát triển, bất kế kỹ sư phát triển tiến hành kiểm thử sâu đến mức độ nào, lỗi sẽ không bao giờ được tìm thấy. Và lỗi sẽ được kỹ sư phát triển nhìn nhận, ngay từ ban đầu, như một chức năng – It’s not a bug, it’s a feature 🙂

Những kỹ sư phát triển cho rằng: mã do tôi viết và tôi tự tin nó hoạt động một cách chính xác. Không cần phải kiểm thử luồng làm việc này, không cần kiểm thử cách ứng xử kia, và tôi biết là nó/ứng dụng làm việc một cách chính xác và hợp lý. Kết quả là, kỹ sư phát triển bỏ qua khả năng xảy ra lỗi.

Kỹ sư phát triển và kỹ sư kiểm thử

Kỹ sư phát triển luôn cảm thấy mã hoạt động chính xác. Và anh ta sẽ làm kiểm thử để khẳng định mã hoạt động chính xác. Nhưng, lý do gì đển kỹ sư kiểm thử tiến hành kiểm thử ứng dụng? Để tìm ra lỗi ở một điểm nào đó và kỹ sư kiểm thử tiến hành kiểm thử để chứng minh ứng dụng không làm việc một cách chính xác. Đây chính là điểm khác biệt chính trong cách tiến hành kiểm thử của kỹ sư phát triển và kỹ sư kiểm thử.

Kỹ sư phát triển có nên làm kiểm thử với mã của họ?

Về cá nhân, tôi không có vấn đề gì nếu kỹ sư phát triển kiểm thử mã của họ. Sau tất cả, đó là sản phẩm của họ. Họ biết mã rất rõ. Họ biết các bẫy trong mã. Nơi mã có thể có lỗi, nơi nào cần chú ý nhiều hơn, đâu là luồng làm việc quan trọng của ứng dụng. Kỹ sư phát triển có thể tiến hành các kiểm thử đơn vị và có thể thiết lập những trường hợp biên – boundary cases.

Đó là tất cả những gì để kỹ sư phát triển có thể trở thành một kỹ sư kiểm thử tốt. Nhưng, hầu hết kỹ sư phát triển nhìn nhận kiểm thử là một công việc mệt mỏi, bất kể họ hiểu hệ thống tốt như thế nào họ cũng sẽ bỏ qua nhiều luồng kiểm thử khác nhau. Nếu một kỹ sư phát triển tìm thấy lỗi trong mã của họ khi đang tiến hành kiểm thử đơn vị, lỗi sẽ tương đối dễ chỉnh sửa, một phần vì mã vừa mới được viết ra; hơn là chỉnh mã để sửa lỗi do nhóm kiểm thử tìm thấy vài ngày sau đó. Nhưng, việc này cũng chỉ hiệu quả khi mà kỹ sư phát triển cảm thấy hứng thú với việc kiểm thử.

Trách nhiệm của kỹ sư kiểm thử là đảm bảo tất cả các luồng làm việc của hệ thống đều được kiểm thử. Kỹ sư kiểm thử nên chỉ ra sự quan trọng của từng vấn đề khả dĩ để kiểm tra rằng hệ thống không bị thiếu sót ở bất kỳ đâu.

Mỗi người trong nhóm đều là chuyên gia trong từng lĩnh vực của họ. Kỹ sư phát triển thường nghĩ về cách phát triển ứng dụng trong khi kỹ sư kiểm thử nghĩ về cách người dùng cuối sử dụng ứng dụng đó.

Kết luận

Vậy nên, về cơ bản, sẽ không có vấn đề gì nếu kỹ sư phát triển tiến hành những bài kiểm thử đơn vị cơ bản. Kỹ sư phát triển có thể kiểm thử vài điều kiện đặc biệt mà họ biết là nghiêm trọng và không thể bỏ qua. Nhưng vẫn còn những kỹ sư kiểm thử giỏi trong nhóm. Đừng phí thời gian của kỹ sư phát triển. Để dự án thành công, cần có đội ngũ kiểm thử độc lập để kiểm thử ứng dụng. Và, sau cùng, trách nhiệm của kỹ sư kiểm thử là làm cho sản phẩm tốt hơn cho người dùng.

Bạn nghĩ sao?

Dịch từ softwaretestinghelp