Я пытаюсь измерить и увеличить время выполнения тестового примера. Я делаю следующее:
- Предположим, я тестирую метод abc() с помощью testAbc().
- Я использую Android Studio и junit для разработки программного обеспечения.
- В самом начале я записываю метку времени в наносекундах в стартовую переменную, а затем, когда метод завершается, он возвращает разницу между текущими наносекундами и началом.
- testAbc() разделен на 3 части: инициализация, тестирование abc() и утверждение (проверка результатов теста).
- Я отслеживаю время теста внутри testAbc() так же, как и в методе abc().
- после выполнения теста я обнаружил, что метод abc() занимает около 45-50% времени теста.
- Я изменил testAbc() следующим образом:
void testAbc(){
startTime = System.nanoTime();
//no modification to the initialization part
//testing abc part is modified by placing it in a for loop to increase its
//execution time.
for(int i=0 ; i < 100; i++)
{
//test abc code goes here ...
abcTime += abc();
}
//assertion part wasn't modified
testEndTime = System.nanoTime - startTime;
}
Повторяя тестовую часть, я думал, что соотношение между abcTime и testEndTime увеличится (за счет резкого увеличения abcTime), однако это совсем не так, я имею в виду 45-50%.
Мои вопросы:
- Почему коэффициент не увеличился? Я имею в виду, что в принципе время выполнения для частей инициализации и утверждения не должно зависеть от цикла for, и поэтому время для abc должно приближаться к времени теста после 100 повторений.
- Как я могу увеличить соотношение между abc() и testAbc()?
Спасибо за ваше время.
Thread.sleep()
внутри теста? - person   schedule 19.11.2017