Trong dự án có các yêu cầu phi chức năng chỉ định thời gian thực hiện tối đa cho một hành động cụ thể, QA phải kiểm tra hiệu suất của hành động này trên máy chuyên dụng sử dụng phần cứng chính xác dưới tải chính xác, cả phần cứng và tải được chỉ định trong yêu cầu.
Mặt khác, một số thay đổi sai đối với mã nguồn có thể ảnh hưởng nghiêm trọng đến hiệu suất. Nhận thấy tác động tiêu cực này sớm , trước khi mã nguồn đạt đến sự kiểm soát nguồn và được bộ phận QA xác minh, có thể có lợi về mặt thời gian bị mất bởi bộ phận QA báo cáo vấn đề và do nhà phát triển sửa nó vài lần cam kết sau đó.
Để làm điều này, nó là một ý tưởng tốt:
Để sử dụng các bài kiểm tra đơn vị để có ý tưởng về thời gian thực hiện cùng một hành động² n lần,
Để sử dụng thời gian chờ cho mỗi bài kiểm tra thông qua
[TestMethod, Timeout(200)]
thuộc tính trong C #?
Tôi mong đợi một số vấn đề với phương pháp này:
Về mặt khái niệm , các bài kiểm tra đơn vị không thực sự cho điều đó: chúng được dự kiến sẽ kiểm tra một phần nhỏ của mã, không có gì nữa: không phải kiểm tra yêu cầu chức năng, cũng không phải kiểm thử tích hợp, cũng không phải kiểm tra hiệu năng.
Thời gian chờ kiểm tra đơn vị trong Visual Studio có thực sự đo được những gì dự kiến sẽ được đo, có tính đến việc khởi tạo và dọn dẹp không tồn tại cho các thử nghiệm đó hoặc quá ngắn để ảnh hưởng đến kết quả không?
Đo lường hiệu suất theo cách này là xấu xí. Chạy một điểm chuẩn trên bất kỳ máy nào, độc lập với phần cứng, tải, v.v. cũng giống như thực hiện một điểm chuẩn cho thấy một sản phẩm cơ sở dữ liệu luôn nhanh hơn một sản phẩm khác. Mặt khác, tôi không mong đợi các bài kiểm tra đơn vị đó là kết quả cuối cùng, cũng không phải là thứ được sử dụng bởi bộ phận QA . Các thử nghiệm đơn vị đó sẽ được sử dụng chỉ để đưa ra ý tưởng chung về hiệu suất dự kiến và về cơ bản để cảnh báo cho nhà phát triển rằng sửa đổi cuối cùng của anh ta đã phá vỡ thứ gì đó, ảnh hưởng nghiêm trọng đến hiệu suất .
Kiểm tra hướng phát triển (TDD) là không thể đối với các thử nghiệm đó. Làm thế nào nó sẽ thất bại, ở nơi đầu tiên, trước khi bắt đầu thực hiện mã?
Quá nhiều bài kiểm tra hiệu suất sẽ ảnh hưởng đến thời gian cần thiết để chạy các bài kiểm tra, vì vậy phương pháp này chỉ giới hạn ở các hành động ngắn.
Khi tính đến những vấn đề đó, tôi vẫn thấy thú vị khi sử dụng các bài kiểm tra đơn vị như vậy nếu được kết hợp với các số liệu hiệu suất thực tế của bộ phận QA.
Tôi có lầm không? Có những vấn đề khác khiến cho việc sử dụng các bài kiểm tra đơn vị cho việc này hoàn toàn không được chấp nhận?
Nếu tôi sai, cách chính xác để cảnh báo cho nhà phát triển rằng sự thay đổi trong mã nguồn ảnh hưởng nghiêm trọng đến hiệu suất, trước khi mã nguồn đạt được kiểm soát nguồn và được bộ phận QA xác minh?
Trên thực tế, các bài kiểm tra đơn vị dự kiến sẽ chỉ chạy trên các PC của nhà phát triển có hiệu năng phần cứng tương đương, giúp giảm khoảng cách giữa các máy nhanh nhất sẽ không bao giờ có thể thất bại trong bài kiểm tra hiệu năng và các máy chậm nhất sẽ không bao giờ thành công khi vượt qua.
² Theo hành động, ý tôi là một đoạn mã khá ngắn dành vài mili giây để chạy.