Chia sẻ góc nhìn của Tester và quan điểm khác biệt giữa Dev và Tester
Sự khác biệt giữa Dev và Tester là gì? Trong một nhóm đội ngũ các nhà phát triển phần mềm, có nhiều vị trí khác nhau đó là: Business Analyst, Designer, Developer, Tester, Project Manager. Mỗi vị trí lại có công việc khác nhau và quan điểm làm việc khác nhau. Trong bài viết này, chúng ta sẽ cùng tìm hiểu chi tiết hơn về góc nhìn của Tester và quan điểm khác biệt giữa Dev và Tester.
Nội Dung Bài Viết
Quy trình phát triển phần mềm từ góc nhìn của Tester
Yếu tố nào quan trọng nhất? Vì sao?
Trong giai đoạn phát triển phần mềm, đối với vai trò Tester thì yếu tố kiểm thử chất lượng phần mềm là quan trọng nhất. Vì nếu không có kiểm thử phần mềm thì sản phẩm có thể sẽ còn tồn tại rất nhiều lỗi, đặc biệt có thể gặp những lỗi nghiêm trọng hoặc chưa đúng với nghiệp vụ của khách hàng. Điều này dẫn tới phần mềm không được đánh giá cao và có thể không được tin dùng. Hơn nữa, nếu như sản phẩm lỗi cũng ảnh hưởng tới chi phí của dự án và tổ chức, doanh nghiệp.
Vì sao phát triển phần mềm cần có Testing
Trong quá trình phát triển phần mềm, nếu việc sửa chữa các lỗi hoặc khiếm khuyết của sản phẩm ở giai đoạn cuối cùng sẽ gây ra khó khăn và tốn chi phí dự án. Vì thế để tránh khó khăn, chi phí thì nên bắt đầu kiểm thử từ giai đoạn đầu của dự án, từ giai đoạn Design đến giai đoạn Development, Testing.
Ví dụ: Khi Business Analyst (BA) làm tài liệu mô tả phần mềm thì ngoài quan điểm, góc nhìn của BA viết ra tài liệu thì Tester cũng cần tham gia để đưa ra quan điểm của Tester và đọc lại tài liệu BA viết để kiểm tra xem có lỗi gì BA viết chưa đúng với yêu cầu, nghiệp vụ Khách hàng hoặc có ý nào bổ sung, cần hỏi lại khách hàng nếu như chưa rõ, mỗi người lại hiểu một cách khác nhau.
Đặc biệt, giai đoạn Testing là giai đoạn quan trọng để thực hiện kiểm thử phần mềm. Tester sẽ có rất nhiều tình huống (testcase) đưa ra để kiểm thử, đảm bảo phần mềm hoạt động tốt và đúng nghiệp vụ. Có các giai đoạn test khác nhau đó là Unit Test, Integration Test, System Test và Acceptance Test. Ở mỗi một giai đoạn test này, Developer hay Tester, người dùng cuối phải thực hiện test phần mềm trên môi trường khác nhau, theo kịch bản đã tạo trước đó để tìm ra các lỗi của phần mềm trước khi bàn giao phần mềm cho khách hàng hoặc đưa ra thị trường.
Nếu không có Tester thì sản phẩm phần mềm do Dev làm ra sẽ như thế nào?
Nếu không có Tester thì sản phẩm phần mềm do Dev làm ra có thể tồn tại nhiều lỗi. Vì có thể Dev vẫn chưa thực hiện test đủ các trường hợp xảy ra hoặc cũng có thể quan điểm của Dev khác so với Tester. Ngoài ra, có trường hợp Dev mới, chưa có nhiều kinh nghiệm cũng rất dễ xảy ra nhiều lỗi mà Dev chưa nghĩ tới.
Quan điểm khác biệt giữa Dev và Tester theo từng giai đoạn phát triển phần mềm
Vậy thì ở mỗi giai đoạn phát triển phần mềm thì sự khác biệt giữa Dev và Tester sẽ thế nào? Chúng ta sẽ cùng nhau phân tích những nội dung chính như sau:
Thu thập yêu cầu và phân tích
Khi Dev và Tester tham gia vào giai đoạn này, quan điểm của Dev và Tester khác nhau hoàn toàn. Họ sẽ đọc tài liệu đặc tả yêu cầu do BA viết và phân tích, góp ý rồi đưa ra cách làm phù hợp và tạo tài liệu, kịch bản kiểm thử phần mềm. Nếu có gì chưa phù hợp hay chưa làm được thì các bên sẽ họp nội bộ trao đổi lại để BA trao đổi tiếp với khách hàng. Cùng xem một ví dụ cụ thể dưới đây để thấy rõ sự khác nhau góc nhìn của Dev và Tester.
Ví dụ tại màn hình “Thêm mới nhân viên” của một phần mềm quản lý nhân sự có trường textbox Họ và tên, khách hàng yêu cầu không cho phép nhập các kí tự đặc biệt. Dev đọc yêu cầu này sẽ nghĩ “cần viết đoạn code chặn các kí tự đặc biệt, nếu người dùng nhập sẽ hiển thị cảnh báo trên màn hình”
Tester đọc yêu cầu sẽ suy nghĩ những câu hỏi liên quan tới yêu cầu này để đưa ra các trường hợp kiểm thử khác nhau. Đầu tiên, nhập kí tự đặc biệt vào ô textbox Họ và tên thì có hiển thị ký tự trong ô không? Nếu không cho nhập sẽ hiển thị cảnh báo như nào để người dùng nhập lại? Nếu người dùng copy đoạn text có chứa kí tự đặc biệt và paste vào ô textbox thì sao?…rất nhiều câu hỏi đặt ra để có nhiều trường hợp kiểm thử khác nhau và tester cũng đứng ở vị trí người dùng cuối để có thêm kịch bản test.
Thiết kế hệ thống hoặc ứng dụng
Sau khi thu thập dữ liệu và hoàn tất yêu cầu Dev sẽ là người thiết kế hệ thống, bao gồm cả xem xét các tài liệu thiết kế trước khi thực hiện. Còn với Tester dùng kiến thức, kinh nghiệm và sự sáng tạo của mình sẽ phân tích tất cả các kịch bản cho các tính năng thêm mới, chỉnh sửa, tích hợp, User Interface hoặc User Experience trong tài liệu đặc tả yêu cầu để viết tài liệu bao gồm checklist, test case và data test. Các tài liệu được chuẩn bị sẵn sàng sử dụng ở giai đoạn Testing.
Giai đoạn kiểm thử
Trong giai đoạn này Dev đã thực hiện code hoàn chỉnh hệ thống và bàn giao cho Tester. Trước khi bàn giao, Dev có thực hiện Unit Test nhưng đa số dưới quan điểm của Dev thì có rất ít bug xảy ra. Những chức năng được code hoàn chỉnh và chạy đúng yêu cầu.
Tuy nhiên, dưới quan điểm của Tester thì họ vận dụng những sáng tạo, kinh nghiệm của mình vào việc kiểm thử các chức năng. Có trường hợp Dev hiểu sai yêu cầu và trong trường hợp này Testers lại áp dụng các kịch bản đã chuẩn bị giai đoạn trước thực hiện kiểm tra thì thấy ứng dụng thất bại. Hay có trường hợp Dev vẫn code chức năng đúng yêu cầu của khách hàng nhưng đoạn code chưa được tối ưu.
Khi Testers kiểm thử theo kịch bản thì chức năng của ứng dụng chạy thành công. Tuy nhiên, Tester thực hiện kiểm thử hiệu năng, giả sử có 10000 người dùng cùng thực hiện một chức năng thì chức năng dừng hoạt động, thất bại không thao tác được tiếp.
Kiểm tra hệ thống
Trong giai đoạn này, các Dev sẽ deploy phần mềm lên môi trường staging và production. Hai môi trường tuy gần giống với môi trường Development của Dev nhưng Tester vẫn có thể tìm được ra rất nhiều lỗi.
Quan điểm của Dev lúc này là phần mềm dù ở môi trường nào thì cũng hoạt động giống nhau, các chức năng thực hiện được phát triển hoàn hảo theo yêu cầu khách hàng, Dev chỉ deploy phần mềm và bàn giao cho Tester xác nhận lại.
Đối với các Tester, quan điểm ngoài các chức năng đã hoạt động đúng mong muốn, yêu cầu của khách hàng thì họ có rất nhiều cách khác nhau mà người dùng nghĩ ra trong khi sử dụng phần mềm. Ngoài những kịch bản kiểm thử sẽ thực hiện đúng các bước khách hàng làm, thì vẫn phải kiểm thử những kịch bản sai để đánh giá lỗi hiển thị trên màn hình, những kịch bản tấn công phần mềm vì có nhiều trường hợp xấu có thể xảy ra đối với phần mềm. Đó cũng là nhiệm vụ của các Tester nhằm vận dụng khả năng tư duy, sáng tạo của bản thân và khám phá các kịch bản mang tính khả thi nhất.
Giai đoạn duy trì
Nếu như các giai đoạn trước đó sự hợp tác của Dev và Tester ít thì ở giai đoạn này họ phải nỗ lực phối hợp với nhau.
Sau khi hoàn thiện bàn giao phần mềm cho khách hàng, đảm bảo sẽ không có vấn đề gì xảy ra nếu phần mềm hoạt động đúng yêu cầu, mong muốn của khách. Trường hợp nếu xảy ra bất kỳ sai sót nào đó, cần phải nỗ lực hợp tác của Dev và Tester trong giai đoạn bảo trì.
Dev và Tester luôn luôn có trách nhiệm với phần mềm mình phát triển ra, tạo thành một team hiệu quả để đảm bảo sản phẩm hoạt động tốt nhất. Cả hai sẽ cùng phối hợp làm việc với nhau, hiểu đúng đắn và thu thập những ý kiến phản hồi tích cực từ khách hàng.
Những yếu tố tạo nên sự khác biệt giữa Dev và Tester
Sự khác biệt giữa Dev và Tester bao gồm rất nhiều yếu tố, ví dụ như trình độ chuyên môn, khả năng nhận thức và cách tiếp cận vấn đề, số năm kinh nghiệm làm việc,…Tuy nhiên trong bài viết này thì chúng ta sẽ cùng nhau làm rõ các yếu tố cụ thể như:
Phong cách làm việc của Dev và Tester
Dev là người lập trình, viết ra những dòng code để xây dựng, phát triển phần mềm. Vì thế phong cách làm việc của Dev thường là người tập trung, có vẻ bảo thủ, đôi lúc khó tính, ít giao tiếp hay một số dev thích làm việc như một con cú đêm.
Tester là người kiểm tra, tìm ra những lỗi, sai sót hay bất cứ vấn đề nào ảnh hưởng tới chất lượng phần mềm mà Dev viết ra. Vì thế, phong cách làm việc của Tester thường rất chăm chỉ, tỉ mỉ, thích khám phá, tò mò, phá phách, sáng tạo và tập trung.
Tất nhiên đây chỉ là tương đối và không phải lúc nào cũng vậy.
Sự khác biệt về mục tiêu và trách nhiệm
Dev và Tester đều có cùng mục tiêu là “xây dựng một phần mềm chất lượng tốt” và đều có trách nhiệm hoàn thành tốt công việc của mình, làm đúng với yêu cầu của khách hàng.
Trên thực tế, Dev cũng là một Tester vì họ cũng kiểm tra code của mình ở giai đoạn Unit Test để đảm bảo code hoạt động được và đúng yêu cầu. Nhưng vẫn có trường hợp, họ không phát hiện ra được lỗi của chính bản thân mình cho tới khi Tester thực hiện kiểm tra và phát hiện ra.
Giao tiếp giữa Dev và Tester
Khi làm việc, sẽ có những lúc Dev và Tester không hợp nhau, có những cuộc tranh luận to tiếng, mất đoàn kết trong team. Ví dụ: Dev hoặc Tester hiểu sai chức năng, Tester báo sai lỗi, Tester thao tác sai các bước làm, Dev fix bug xong nhưng chưa deploy, chưa tự verify lại đã báo tester kiểm tra…Những lúc như này, Dev và Tester đều căng thẳng, mỗi người một quản điểm tranh luận khiến bầu không khí u ám, nếu gay gắt lên đỉnh điểm thì cần nhờ Leader hoặc PM đứng ra giải quyết mâu thuẫn.
Kết luận
Một Tester giỏi là người như thế nào và một Dev giỏi sẽ có những điểm gì, 2 người này có mối liên hệ không thể tách rời như thế nào? Sản phẩm phần mềm đạt chất lượng tốt nhất khi cả Tester và Dev đều cùng nhau cố gắng hoàn thành tốt công việc của mình, cùng xây dựng team làm việc có trách nhiệm cao, tích cực trao đổi, chia sẻ, học hỏi lẫn nhau.
Dev là người xây dựng sản phẩm phần mềm bằng kiến thức, kinh nghiệm của mình. Một Dev giỏi là người luôn học tập, trau dồi, nâng cao trình độ của bản thân, lắng nghe tiếp thu ý kiến đúng của mọi người trong team, của khách hàng và biết sửa khi mình sai, rút ra các bài học trong quá trình làm việc.
Tester là người tìm ra những lỗi sai của phần mềm, nôm na có thể hiểu Tester phá công trình xây dựng sản phẩm mà Dev tạo ra để tìm bằng được lỗi. Một người Tester giỏi sẽ là người tỉ mỉ, tìm ra lỗi của phần mềm trong mọi ngóc ngách mà Dev không lường tới, luôn nâng cao trình độ bản thân, học thêm nhiều ứng dụng, kiến thức về kiểm thử phần mềm để áp dụng vào công việc.
Nếu như thiếu Dev thì sẽ không thể tạo ra sản phẩm, ngược lại nếu thiếu Tester thì sẽ khó có được một sản phẩm có chất lượng cao. Chính vì thế giữa Dev và Tester tưởng chừng như đối đầu nhưng lại có sự gắn kết chặt chẽ, hỗ trợ cho nhau. Qua bài viết này, các bạn sẽ hiểu hơn về góc nhìn của Dev và Tester, hy vọng giữa 2 bên luôn giữ mối quan hệ tốt, hiểu nhau, hợp tác thoải mái, vui vẻ, cùng nhau tiến bộ và tạo ra một sản phẩm phần mềm tốt nhất tới tay khách hàng.
Linh Đan
Leave a Comment