Program testing question

13 отговора 608 прегледа
#1

Program testing question

Значи здрасти на всички! Абе много взе да се говори за този форум!. Това е добре и ето го и моя принос. Значи вчера на интервюто за QA ми зададоха следната задача (още незнам какво съм направил, но с ваша помощ мога да разбера дали съм се справил добре):

Имаш една проста С функция, която приема 2 аргумента за време във формат: dd:mm:yyyy:hh:mm:ss и връща разликата във вида hh:mm:ss. Питаха ме как ще тествам входа и изхода на тази функцийка (бая работа се отвори, ама нека по-добре да обменим мнения). Мерси Ви!

Отговор
в отговор на Timer #2

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!

Мечтата е мисъл, мисълта е идея, всяка идея се реализира. Аз не мечтая, а реализирам идеите си.
Отговор
в отговор на Timer #3

Re: Program testing question

Ще ползвам DateTime и TimeSpan от .нет-а за тестване на вярността :)
Освен това, ще тествам за кофти вход (като формат и невалидност
на датата)

Отговор
в отговор на Timer #4

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
Отговор
в отговор на Timer #5

Re: Program testing question

1. входа
ще пробвам как реагира на невалиден стринг - например "дсфдсф"
ще пробвам как реагира на липсващ параметър - "13:11:2000:"
ще пробвам как реагира на неспазване броя на цифрите - "3:11:....."
трябва да го нагърчиш за невалидни стойности, например 32:05... или 30:02.... или 5:13:1....
тоест за всеки компонент от параметрите дали е в дефиниционната област, като търсиш и такива които са несъвместими в комбинация - брой дни от месеца, дните на февруари от годината. ако има грешка в определянето дали е валидна дата/час, то тя ще е доста вероятно там.

2. изхода.
тука аз бих търсил места, в които между двете дати има особеност, например 29.02, като идеята е че може вътрешно процедурата да изчислява разликата в дните грешно. основно смятам че грешката ще възникне при пресмятане на разликата в дни, защото часовете и минутите са доста регулярни и не правят келяфи. ще пробвам с еднакви дати с нулева разлика, ще пробвам когато първата дата е след втората и когато втората е след първата, да видя разликата в поведението, ще пробвам с няколко напълно нормални дати, да видя че все пак и за нормални стойности работи, ще пробвам с крайни дати от месеца и първа дата от следващия.

Отговор
в отговор на Пepин #6

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

Отговор
в отговор на Timer #7

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'

Отговор
в отговор на Timer #8

Re: Program testing question

Ostavi niakakvo kooridinati?
ICQ/Email/ Phone?

Отговор
в отговор на QA #9

Re: Program testing question

Rabota li shte mi pedlagash?

Отговор
в отговор на Dum #10

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
Отговор
в отговор на Dum #11

хаха

щом програмист е намерил сгъбване, усера ще намери десет

Отговор
в отговор на Timer #12

handle към ресурс?

това ми звучи брутално!

Отговор
в отговор на Timer #13

Re: Program testing question

Ot teb zavisi ...

Отговор
в отговор на QA #14

Re: Program testing question

ICQ#340607733

Отговор