Chào các bạn, hôm nay tôi muốn chia sẻ về công việc hàng ngày của một tester là như thế nào. Mục đích là để các bạn có cái nhìn cụ thể về ngành công nghệ thông tin nói chung và tester nói riêng. Những bạn đang tìm hiểu về nghề này có thể đọc để tham khảo. Đây chỉ là một ví dụ về công việc ở một công ty cụ thể, không thể phản ánh hoàn toàn về ngành này, nhưng bài viết sẽ giúp bạn hiểu hơn về công việc của tester.
Tôi làm việc với vị trí Design Verification Engineer và gần đây đã chuyển sang (Logic Verification) và đã làm công việc này trong 2 năm. Khác với Sofware Tester, tôi kiểm tra ngôn ngữ mô tả phần cứng Verilog, sản phẩm kiểm tra không phải là phần mềm mà là một loại phần cứng, một loại chip.
Tôi sử dụng ngôn ngữ SystemVerilog (kết hợp giữa Verilog và C++) và framework UVM (Universal Verification Methodology). Tôi sử dụng những công cụ này để thiết kế Testbench (công cụ kiểm tra) để kiểm tra sản phẩm được viết bằng Verilog.
Một môi trường kiểm tra cơ bản bao gồm các thành phần sau
- Bộ phát (generator): tạo ra các tín hiệu cần thiết để đưa vào input cho sản phẩm được kiểm tra, giống như việc bạn cung cấp điện cho một cái quạt điện để nó hoạt động.
- Bộ ghi nhận dữ liệu (monitor): ghi lại các output của sản phẩm được kiểm tra. Tương tự như việc bạn đo và ghi lại tốc độ gió và số vòng quay của cánh quạt.
- Bộ tiên đoán (predictor): giả lập chức năng của sản phẩm được kiểm tra. Nó giống như một cái quạt điện mẫu, dùng để so sánh với sản phẩm cần kiểm tra.
- Công việc được thực hiện như sau: bạn sử dụng bộ phát để cung cấp điện cho hai cái quạt, một cái quạt mẫu và một cái quạt cần kiểm tra. Sau đó, bạn sử dụng bộ ghi nhận dữ liệu để đo lại các thông số đầu ra của hai cái quạt này. Tiếp theo, bạn so sánh hai thông số này với nhau. Nếu chúng giống nhau, bạn sẽ chuyển sang testcase mới, nghĩa là đưa vào các input khác để tạo ra các output khác. Nếu chúng khác nhau, bạn bắt đầu kiểm tra xem bạn đã cung cấp điện đúng chưa, sau đó sẽ chỉnh sửa hai cái quạt sao cho giống nhau, kiểm tra xem cái quạt mẫu của bạn có lỗi không. Nếu tất cả các thiết bị được sử dụng để kiểm tra đều hoạt động tốt, bạn sẽ chuyển lỗi đó sang cho người thiết kế để họ sửa.
Công việc hàng ngày sẽ diễn ra như thế nào?
- Viết testcase và testplan. Testcase là việc xác định input, cấu hình và mong đợi kết quả. Testplan là tổ hợp các testcase, giúp theo dõi tiến độ và báo cáo kết quả.
Khi phát hiện bug, debug và báo cáo cho developer. Tạo ticket trên hệ thống để thông báo cho leader và manager.
- Viết báo cáo hàng tuần hoặc hàng ngày cho leader và manager. Phần này có thể dễ dàng khi làm nhiều việc, nhưng khó khi gặp khó khăn trong công việc.
Tham gia meeting hàng tuần hoặc hàng ngày để cập nhật tiến độ và giải quyết vấn đề cùng team.
Đây là những điều vui và thách thức mà tester thường gặp khi làm việc với developer
- Khi sản phẩm đã ra mắt với lỗi, thì đó không phải là lỗi của developer, mà là lỗi của tester vì đã không phát hiện ra.
- Mặc dù lương thấp hơn developer, nhưng nếu bạn thực sự thích công việc của mình, thì lương không còn quan trọng.
- Công việc tester thường phụ thuộc vào developer, đôi khi bạn không có sự kiểm soát và phải đi theo luồng công việc của họ.
- Khi đã có kế hoạch kiểm thử và công cụ kiểm thử ổn định, bạn sẽ phải thử nghiệm tính năng nhiều lần, điều này có thể gây nhàm chán.
- Việc viết mã không cần quá chuẩn mực, không bị ràng buộc bởi quá nhiều quy tắc. Tester cần thử nghiệm sản phẩm nhanh chóng, không phải tạo ra một công cụ kiểm thử hoàn hảo. Bạn có thể tự do sáng tạo trong việc viết mã kiểm thử, chỉ cần đảm bảo nó chạy được. Tuy nhiên, điều này cũng có thể gây hại vì quá tập trung vào việc 'chạy được' mà bỏ qua các quy tắc và hiệu suất, khiến cho công cụ kiểm thử chạy chậm và tốn nhiều tài nguyên. (Bạn có biết có những bài kiểm thử mất cả ngày để chạy xong không? Đó là sự thật đấy!)
- Khi đã có kế hoạch kiểm thử và công cụ kiểm thử ổn định, bạn chỉ cần thực hiện các ca kiểm thử và báo cáo lỗi, để lại phần còn lại cho developer.
- Tổng thể, thời gian và công sức bạn bỏ ra ít hơn so với developer (tính chung). Bạn có thể sớm kết thúc công việc và dành thời gian cho gia đình và bản thân.
- Tìm ra lỗi như một loại ma túy, và tester là người nghiện lỗi chân chính. Nếu niềm vui của developer là ẩn giấu lỗi (không phải tạo ra tính năng mới), thì niềm vui của tester là phát hiện lỗi đó. Cảm giác tìm ra lỗi giống như bạn vừa giải một bài toán khó, vượt qua một thử thách, hoặc chinh phục một người phụ nữ. Bạn sẽ tìm ra lỗi đó và báo cáo như: “Đây là lỗi, fix nó đi, haha. Còn tôi sẽ ngồi đây xem bạn giải quyết vấn đề...”
Dưới đây là một số chia sẻ và kinh nghiệm của tôi sau hơn 2 năm làm Design Verification Engineer (và bây giờ là Developer). Hy vọng các bạn đang tìm kiếm sự nghiệp sẽ có cái nhìn tổng quan về niềm vui và 'nỗi buồn' của công việc này để có thể chọn lựa đúng nghề nghiệp cho bản thân!
Tác giả: lengocthuong