Опитвам се да измеря и увелича времето за изпълнение на тестов случай. Това което правя е следното:
- Да приемем, че тествам метода 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