VS 2010, нагрузка / модульное тестирование - игнорирование таймера в случае возникновения ошибки - PullRequest
2 голосов
/ 16 января 2012
  • Я использую модульные тесты VS 2010 для создания нагрузочного теста.
  • BeginTimer / EndTimer используются для измерения времени отклика.
  • В случае успеха таймер работает как положено.

Если в приложении возникает ошибка, я не хочу, чтобы таймер записывал время отклика. Это скинет аналитические отчеты. Например, метод OpenOrder в случае успеха может занять 30 секунд, но в случае сбоя (например, порядок не найден) OpenOrder может вернуться через 2 секунды. Я хочу, чтобы метрики времени ответа представляли только те операции, которые были успешными.

  • В качестве альтернативы, есть ли способ отфильтровать таймеры / транзакции что не было успешным?
  • Есть ли другой способ сделать это? Что-то еще, кроме BeginTimer / EndTimer?

Фрагмент кода:

testContextInstance.BeginTimer("trans_01");

OpenOrder("123");// Execute some code

// If the open fails, I want to disregard/kill the timer.
// If I do a 'return' here, never calling EndTimer, the timer 
// is still ended and its response time recorded.

testContextInstance.EndTimer("trans_01");

1 Ответ

1 голос
/ 17 января 2012

Это недостаток API модульного тестирования. Аналогичный недостаток в API веб-тестирования. Я тоже хотел не обращать внимания на таймеры из-за сбоев, но я думаю, что нам здесь не повезло. Я считаю, что запрос на расширение в Microsoft необходим.

Существует (возможно) (длительный) обходной путь: добавьте свой собственный таймер (используя класс секундомера), который вы можете игнорировать / прекратить по своему желанию, а также добавьте соответствующий код для вставки строки результата непосредственно в таблицу транзакций в база данных результатов нагрузочного теста (асинхронно для лучшей производительности).

Но это ужасно. Было бы намного проще, если бы API просто предлагал метод KillTimer.

...