Program testing question
13 отговора
608 прегледа
Program testing question
Значи здрасти на всички! Абе много взе да се говори за този форум!
. Това е добре и ето го и моя принос. Значи вчера на интервюто за QA ми зададоха следната задача (още незнам какво съм направил, но с ваша помощ мога да разбера дали съм се справил добре):
Имаш една проста С функция, която приема 2 аргумента за време във формат: dd:mm:yyyy:hh:mm:ss и връща разликата във вида hh:mm:ss. Питаха ме как ще тествам входа и изхода на тази функцийка
(бая работа се отвори, ама нека по-добре да обменим мнения). Мерси Ви!
Имаш една проста С функция, която приема 2 аргумента за време във формат: dd:mm:yyyy:hh:mm:ss и връща разликата във вида hh:mm:ss. Питаха ме как ще тествам входа и изхода на тази функцийка
Re: Program testing question
1) Vzemash sistemno vreme A (v ms)
2) Drapash si topkite proizvolen otrqzyk ot vreme^, razlichen ot nula
3) Vzemash sistemno vreme B (v ms)
4) Izchislqvash C = B - A (*)
5) Prevryshtash A, B, C vyv format hh:mm:ss - syotvetno A1, B1, C1
6) podavash na funkciata A1:B1, i chakash da ti doide C1.
^ - proizvolniqt otrqzyk ot vreme da se zavre v igriva promenliva koqto se kandilka ot MIN_SIGNED_64_BITS do MAX_UNSIGNED_64_BITS, specialno kato mine prez -1, 0 i 1. Ako moje i 50-100 pyti random...
* - pri izchislqvaneto na razlikata trqbva da se otchete zagubata na milisekundite, za da ne se okaje che testa e po-greshen ot funkciqta. Da si pripomnim ot 3ti klas dokazatelstvoto che 2+2=5:
printf("%d + %d = %d", Round(2.3),Round(2.3),Round(2.3+2.3));
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Az pone, taka bih q testval.
Sys zdrave!
Мечтата е мисъл, мисълта е идея, всяка идея се реализира. Аз не мечтая, а реализирам идеите си.
2) Drapash si topkite proizvolen otrqzyk ot vreme^, razlichen ot nula
3) Vzemash sistemno vreme B (v ms)
4) Izchislqvash C = B - A (*)
5) Prevryshtash A, B, C vyv format hh:mm:ss - syotvetno A1, B1, C1
6) podavash na funkciata A1:B1, i chakash da ti doide C1.
^ - proizvolniqt otrqzyk ot vreme da se zavre v igriva promenliva koqto se kandilka ot MIN_SIGNED_64_BITS do MAX_UNSIGNED_64_BITS, specialno kato mine prez -1, 0 i 1. Ako moje i 50-100 pyti random...
* - pri izchislqvaneto na razlikata trqbva da se otchete zagubata na milisekundite, za da ne se okaje che testa e po-greshen ot funkciqta. Da si pripomnim ot 3ti klas dokazatelstvoto che 2+2=5:
printf("%d + %d = %d", Round(2.3),Round(2.3),Round(2.3+2.3));
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Az pone, taka bih q testval.
Sys zdrave!
Мечтата е мисъл, мисълта е идея, всяка идея се реализира. Аз не мечтая, а реализирам идеите си.
Re: Program testing question
Ще ползвам DateTime и TimeSpan от .нет-а за тестване на вярността :)
Освен това, ще тествам за кофти вход (като формат и невалидност
на датата)
Освен това, ще тествам за кофти вход (като формат и невалидност
на датата)
Re: Program testing question
Абе може да са тъпи въпроси ама:
1. Функцията как обработва грешки? Какви видове? Винаги ли се предполага че входните данни са в коректен формат? Ако има ассерти те трябва ли да се тестват?
2. Има ли възможност да се случат прекпълвания? Важно ли е кой от аргументите е по-голямия (първи, втори, няма значение)? Какво става ако те са еднакви?
3. Функцията в какъв вид представя нещата вътрешно? Ако ползва примерно броя на милисекундите от 1970, или друг формат, в какъв диапазон работи? Има ли проблем 2037 година?
4. Функцията ползва ли някакви библиотеки (виндовс апи, библиотека за боравене със стрингове, с време, други). Ако да по какъв начин грешки в тези библиотеки или типични случаи на неправилното им ползване могат да породят проблеми?
5. Функцията преносима ли е? На всякакво Ц ли ще се компилира? Различни платформи? 32/64 бита проблеми, подредба на байтовете в многобайтовите числа, такива неща? Смесване на указатели и инт?
6. Уникод/чар?
I think its kinda funny I think its kinda sad the dreams in which Im dying are the best Iv ever had
1. Функцията как обработва грешки? Какви видове? Винаги ли се предполага че входните данни са в коректен формат? Ако има ассерти те трябва ли да се тестват?
2. Има ли възможност да се случат прекпълвания? Важно ли е кой от аргументите е по-голямия (първи, втори, няма значение)? Какво става ако те са еднакви?
3. Функцията в какъв вид представя нещата вътрешно? Ако ползва примерно броя на милисекундите от 1970, или друг формат, в какъв диапазон работи? Има ли проблем 2037 година?
4. Функцията ползва ли някакви библиотеки (виндовс апи, библиотека за боравене със стрингове, с време, други). Ако да по какъв начин грешки в тези библиотеки или типични случаи на неправилното им ползване могат да породят проблеми?
5. Функцията преносима ли е? На всякакво Ц ли ще се компилира? Различни платформи? 32/64 бита проблеми, подредба на байтовете в многобайтовите числа, такива неща? Смесване на указатели и инт?
6. Уникод/чар?
I think its kinda funny I think its kinda sad the dreams in which Im dying are the best Iv ever had
Re: Program testing question
1. входа
ще пробвам как реагира на невалиден стринг - например "дсфдсф"
ще пробвам как реагира на липсващ параметър - "13:11:2000:"
ще пробвам как реагира на неспазване броя на цифрите - "3:11:....."
трябва да го нагърчиш за невалидни стойности, например 32:05... или 30:02.... или 5:13:1....
тоест за всеки компонент от параметрите дали е в дефиниционната област, като търсиш и такива които са несъвместими в комбинация - брой дни от месеца, дните на февруари от годината. ако има грешка в определянето дали е валидна дата/час, то тя ще е доста вероятно там.
2. изхода.
тука аз бих търсил места, в които между двете дати има особеност, например 29.02, като идеята е че може вътрешно процедурата да изчислява разликата в дните грешно. основно смятам че грешката ще възникне при пресмятане на разликата в дни, защото часовете и минутите са доста регулярни и не правят келяфи. ще пробвам с еднакви дати с нулева разлика, ще пробвам когато първата дата е след втората и когато втората е след първата, да видя разликата в поведението, ще пробвам с няколко напълно нормални дати, да видя че все пак и за нормални стойности работи, ще пробвам с крайни дати от месеца и първа дата от следващия.
ще пробвам как реагира на невалиден стринг - например "дсфдсф"
ще пробвам как реагира на липсващ параметър - "13:11:2000:"
ще пробвам как реагира на неспазване броя на цифрите - "3:11:....."
трябва да го нагърчиш за невалидни стойности, например 32:05... или 30:02.... или 5:13:1....
тоест за всеки компонент от параметрите дали е в дефиниционната област, като търсиш и такива които са несъвместими в комбинация - брой дни от месеца, дните на февруари от годината. ако има грешка в определянето дали е валидна дата/час, то тя ще е доста вероятно там.
2. изхода.
тука аз бих търсил места, в които между двете дати има особеност, например 29.02, като идеята е че може вътрешно процедурата да изчислява разликата в дните грешно. основно смятам че грешката ще възникне при пресмятане на разликата в дни, защото часовете и минутите са доста регулярни и не правят келяфи. ще пробвам с еднакви дати с нулева разлика, ще пробвам когато първата дата е след втората и когато втората е след първата, да видя разликата в поведението, ще пробвам с няколко напълно нормални дати, да видя че все пак и за нормални стойности работи, ще пробвам с крайни дати от месеца и първа дата от следващия.
Re: Program testing question
Значи, все хубави въпроси задавате, ама и аз не знам да ви кажа - функцията е тестваш black-box (някой друг я е писал и не знаеш нищо за кода). Още - през цялото време на мойте изявления само мълчаха и слушаха (гадове такива стрес тестери и другая паплач
). Приех, че числата са unsigned - не казаха за стрингово или друго представяне. Та значи - тестване на двата входни аргумента от вида dd:mm:yyyy:hh:mm:ss -
1) Проверка за всяко едно dd: 1-31, mm: 1-12, yyyy: (тука не можах да задам реални границим но да речем 1900 - незнам, даите идеи), hh:0-23, mm: 0-59 и ss: 0-59. Още тест за dd:29 и yyyy:високосна (yr % 400 == 0 || (yr % 4 == 0 && yr % 100 != 0);
2) После с +1 0 -1 отклонение от горепосочените стойности.
3) После за липстваш параметър - един или няколко.
4) Всичко 0 - 00:00:00:00:00:00:00:00 - очаквам реакция - може ли времето да бъде 0?
За изхода:
5) Подавам на входа два пъти 00:00:00:00:00:00:00:00 и очаквам реакция.
6) Подавам 2 еднакви времена на входа - очаквам 00:00:00
7) Подавам време, което се различава от другото с повече от 24 часа - тогава
hh:mm:ss как би трябвало да реагира? (никой не ми казва) Например - разлика от 30 дена дава hh > 100.
II. После питаха - Как ще приотизирам тестовете - кои на първо място, кои после и т.н.
III.Питаха как ще тествам функцията: int StrToInt (const char * pszString) или по-просто казано atoi С функцията
IV. Накрая ме питаха как ще тествам за валидност handle към ресурс - thread, file, bmp и т.н.
Е, чакам support
1) Проверка за всяко едно dd: 1-31, mm: 1-12, yyyy: (тука не можах да задам реални границим но да речем 1900 - незнам, даите идеи), hh:0-23, mm: 0-59 и ss: 0-59. Още тест за dd:29 и yyyy:високосна (yr % 400 == 0 || (yr % 4 == 0 && yr % 100 != 0);
2) После с +1 0 -1 отклонение от горепосочените стойности.
3) После за липстваш параметър - един или няколко.
4) Всичко 0 - 00:00:00:00:00:00:00:00 - очаквам реакция - може ли времето да бъде 0?
За изхода:
5) Подавам на входа два пъти 00:00:00:00:00:00:00:00 и очаквам реакция.
6) Подавам 2 еднакви времена на входа - очаквам 00:00:00
7) Подавам време, което се различава от другото с повече от 24 часа - тогава
hh:mm:ss как би трябвало да реагира? (никой не ми казва) Например - разлика от 30 дена дава hh > 100.
II. После питаха - Как ще приотизирам тестовете - кои на първо място, кои после и т.н.
III.Питаха как ще тествам функцията: int StrToInt (const char * pszString) или по-просто казано atoi С функцията
IV. Накрая ме питаха как ще тествам за валидност handle към ресурс - thread, file, bmp и т.н.
Е, чакам support
Re: Program testing question
Izobshto privetstvam ideata da razvihrim malko testing questions tuka - inache vseki pishe-brishe i se bie po gyrdite kolko bil napisal, ama kvo e napisal - ne se znae. Imah edin kolega deto vikashe - "kvo iskash, nali funkciata raboti" i sled 10 minuti mu pokazah kak ne raboti i toi vika - ama ti ne si usera, toi taka 'ne prai' 
Re: Program testing question
В отговор на:inache vseki pishe-brishe i se bie po gyrdite kolko bil napisal, ama kvo e napisal - ne se znae.
Колкото и да си говорим за тестване реалността е съвсем друга. Масово се пише код на кило и после се опитва да се мисли за тестване. На пръстите на едната си ръка сигурно мога да изброя хората, които познавам, дето могат да пишат тестваем код.
Знам, че има QA специалисти в този форум! Кажете как пишат дебелоперите във вашата фирма и улесняват ли ви по някакъв начин при постигането на по-голямо покритие от тестове?
--
"Agile is a mindset, not a set of practices, rules, or tools."
Tom Poppendieck