У проекті, де існують нефункціональні вимоги, які визначають максимальний час виконання конкретної дії, QA повинен перевірити працездатність цієї дії на спеціалізованій машині, використовуючи точне обладнання при точному навантаженні, причому як обладнання, так і навантаження вказані в вимогах.
З іншого боку, деякі помилкові зміни вихідного коду можуть сильно вплинути на продуктивність. Помітивши цей негативний вплив на початку , перш ніж вихідний код досягне контролю над джерелом і не буде перевірений відділом QA, може бути корисним за терміни, втрачені відділом QA, який повідомляє про проблему, та розробником, який виправляє це кілька зобов’язань пізніше.
Для цього чи корисна ідея:
Щоб використовувати одиничні тести, щоб мати уявлення про витрачений час на виконання тієї ж дії² n разів,
Використовувати тайм-аут за тест через
[TestMethod, Timeout(200)]
атрибут у C #?
Я очікую декілька проблем з таким підходом:
Концептуально , тести для одиниць не для цього: вони, як очікується, перевіряють невелику частину коду, не більше: ні перевірка функціональної вимоги, ні тест інтеграції, ні тест продуктивності.
Чи дійсно вимірюється час очікування випробувань у Visual Studio дійсно, що очікується для вимірювання, беручи до уваги, що ініціалізація та очищення відсутні для цих тестів або занадто короткі, щоб впливати на результати?
Оцінювати продуктивність таким чином некрасиво. Запуск еталону на будь-якій машині¹ незалежно від обладнання, завантаження тощо - це як тестування еталону, який показує, що один продукт бази даних завжди швидший, ніж інший. З іншого боку, я не очікую, що ці одиничні тести стануть остаточним результатом, або тим, що використовується відділом QA . Ці тестові одиниці використовуватимуться лише для того, щоб дати загальне уявлення про очікувані показники роботи і по суті, щоб попередити розробника про те, що остання його модифікація щось зламала, що сильно впливає на продуктивність .
Тестова розробка (TDD) неможлива для цих тестів. Як би це не вдалося, в першу чергу, перш ніж почати впроваджувати код?
Занадто багато тестів на ефективність впливатиме на час, необхідний для запуску тестів, тому такий підхід обмежується лише короткими діями.
Враховуючи ці проблеми, мені все ще цікаво використовувати такі тестові одиниці, якщо вони поєднуються з реальними показниками ефективності QA-відділу.
Я помиляюся? Чи є інші проблеми, що робить цілком неприйнятним використання для цього тестів?
Якщо я помиляюся, що це правильний спосіб попередити розробника про те, що зміна вихідного коду сильно впливає на продуктивність, перш ніж вихідний код досягне вихідного контролю та перевіриться відділом контролю якості?
Ually Насправді очікується, що одиничні тести працюватимуть лише на ПК-розробниках, які мають порівняну продуктивність, що зменшує розрив між найшвидшими машинами, які ніколи не зможуть провалити тест на ефективність, і найповільнішими машинами, які ніколи не зможуть пройти його.
² Під дією я маю на увазі досить короткий фрагмент коду, який витрачає на виконання кілька мілісекунд.