Должны ли юнит-тесты охватывать стресс-тестирование? - PullRequest
1 голос
/ 09 августа 2010

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

На нашем уровне доступа к данным некоторые операторы используют sql, например "select * from people", где id IN ('x', 'y'), где оператор IN генерируется динамически в соответствии с входными данными. Недавно мы обнаружили, что В нашей базе данных Oracle есть предел в 1000 переменных в операторе IN.

Лично я считаю, что это не сценарий модульного тестирования. Мы проверяем, работает ли sql с базой данных в модульных тестах, и правильна ли логика. Однако стресс-тестирование следует проводить на более высоком уровне.

Если мы хотим провести тестирование с тысячами записей в модульных тестах, нам нужно каждый раз заполнять базу данных большим количеством записей, что может быть неэффективно.

Любой совет?

Ответы [ 3 ]

3 голосов
/ 09 августа 2010

Что касается вашего конкретного примера, вы должны рассмотреть возможность сделать для него 2 теста:

  • Первый - это модульный тест, который проверит, что ваша функция может принять максимальное количество входных данных.запрошенный требованиями.Если там ничего не указано, попросите аналитика дать разъяснения.Динамически сгенерированные запросы, такие как это, являются проблемой для отладки впоследствии.
  • Второй - это стресс-тест.Но это должно выполняться не на этой конкретной части вашего кода, а на интегрированной части, которая будет его использовать.Если вы начнете стресс-тестирование блочного блока, вы в конечном итоге будете выполнять преждевременную оптимизацию, потому что потеряете общую картину и начнете делать предположения о том, как это будет работать вместе, а не о том, как это происходит на самом деле.
2 голосов
/ 09 августа 2010

Модульные тесты должны проверять и определять функциональность тестируемого блока.В этом случае вы тестируете базу данных, а не модуль, поэтому я думаю, что этот тест на самом деле является модульным тестом.

Модуль должен быть независимым от базы данных, которую он использует, если вы тестируете способ работы модулявзаимодействует с конкретной базой данных, тогда мне кажется, что это интеграционный тест

2 голосов
/ 09 августа 2010

Я считаю, что стресс-тесты должны проводиться как часть модульного тестирования. Обычно ваши юнит-тесты должны содержать

  1. Проверка точности
  2. Испытания на отказ
  3. Стресс-тесты

Если вы не хотите запускать стресс-тесты каждый раз, когда вы запускаете другие тесты, вы можете сгруппировать стресс-тесты в отдельном текстовом файле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...