четвъртък, 14 юли 2011 г.

Автоматични тестове на GUI ??

Замислих се тия дни, за сериозните усилия, които се полагат в ИТ света по отношение на автоматизация на тестове на GUI сценарии. Съществуват доста изтънчени продукти за целта, като например QTP, или Selenium, сигурно има още кой знае колко яки tool-ове, с които автоматично могат да се запишат и съответно проиграят сложни сценарии на взаимодействие между имитиран потребител и приложението. Не ми се мисли колко нетривиална задача е да се разработят такива продукти. Или пък универсализирането им срещу различни GUI технологии и/или browser-и. Много сериозно се инвестира, от почти всяка компания, в писането на такива автоматични тестове. Това, което ме притеснява, е съответното количество - много често става дума за хиляди тестове, които се пускат всяка нощ. За мениджърите е много важно да знаят, че всяка нощ идват поредните няколко хиляди зелени теста. Важно е и за програмистите: вярно е, че ако такъв тест не мине успешно, с голяма вероятност той засича проблем в продукта (ако е написан качествено). Но до колко е реалистичен този проблем ? Дали би могъл клиентът да попадне на него ? Изпълнението на такова голямо количество тестове означава, че на един единствен сценарий обикновено се пада изключително кратък интервал от време, който е в порядъци по-малък от усета и възможностите на истинския човек, т.е. на реалния потребител на GUI продукта. Т.е. въпросният имитатор на потребител цъка с мишката, въвежда данни с клавиатурата, и проиграва сценария със светкавична скорост. Това на практика няма нищо общо с реален сценарий, при истински клиент на приложението. Т.е. със сценарий, заради който е създаден тоя продукт, заради който е платен от реални хора и реални клиенти. Аз смятам, че такъв тест е безсмислен, и далеч не оправдава усилията по създаването и поддръжката си. Поддръжката. Дааа, поддръжката. Гърми такъв един тест, и ходи да прекарваш тежки часове и дни в дебъгване, за да разбереш накрая, че например става дума за синхронизационен проблем, причинен от твърде бързото изпълнение. Супер, сега изчакай малко, преди да цъкнеш "next". Автоматичните туулове предлагат за целта т.нар. think time. Пълно безумие. Няма по-смислен начин да се тества един такъв сценарий, освен някой човек да седне и да го проиграе. Няма и начин, който поне да се доближава по смисъл до този. Все едно да тествате футболна топка с роботи, които я ритат с над 900 км/ч например. Или да тествате, че един шкаф е читав, като го хвърлите от 40-тия етаж върху асфалт. Или автомобил, като симулирате катастрофа от тип челен удар, със 700 км/ч. Доста безсмислено, нали ?! "Сценарият работи" означава, че работи по начина, по който истинската му употреба би го ползвала, т.е. човек с мишка. Другото е фира. И освен, че е фира, води до много загубено време за дебъгване на проблеми, дължащи се на обстоятелства, които най-често няма да се проявят, когато един истински човек цъка. И още по-лошо: проблеми и бъгове, които реално се проявяват при истинския цъкащ човек, е напълно възможно да не могат да се засекат от автоматичните тестове, и да не могат да се репродуцират. Двата свята понякога са много различни и е нелепо да се подготвиш за истинския (човешкия) чрез тестване на съвсем друг, напълно откъснат от него по отношение на действащите в него физични закони (този на CPU-то).


Да тестваш значи да проиграеш use case-а във възможно най-близка среда до истинската продуктивната среда при клиента. Кое му е близкото на това да изпълниш хиляди GUI сценарии за няколко часа ??

четвъртък, 7 юли 2011 г.

Скок подскок

Не мога да разбера колегите от ИТ индустрията, които постоянно сменят работа през няколко месеца, т.е. скачат от проект на проект. Не ми е ясно каква изобщо цел, визия и стратегия имат за професионалното си развитие тия хора. Според мен, такъв тип специалист изобщо не би могъл да fit-не и да се докаже успешно за по-продължително време. Особено в soft skills уменията, като работа в екип, аклиматизиране с колеги и т.н. Т.е. аз не мисля, че такъв човек става за developer. По-скоро бо могъл да се справи добре в по-различно поприще: например като technology евангелист. Ясно е, че се е сблъсквал с повечко неща и би могъл да изнася презентации, доклади, семинари, да участва в конференции и т.н. И доста от тези хора го правят това, активно. Можете да ги познаете обикновено по това, че имат несметни знания по хиляди технологии, и са дълбоко запознати и versatile по най-търсените. Поне така пише в СВ-то. Но се опасявам, че доминиращото им качество е предимно сладкодумието от стандартни клишета от книгите, а не истинската, вдъхваща респект експертност. След като има толкова хора, които избират такава "кариера", вероятно това е популярно и търсено от фирмите, и съответно има хляб. Но лично аз не бих избрал такъв път за себе си. Не смятам, че километричното СВ от хиляда работи от по 6-9 месеца е респектиращо - напротив. С такъв номадски подход можеш да помиришеш и разпознаеш много аромати, но хал хабер си нямаш как точно са сготвени тези ястия. Виждал съм смешни неща по такива СВ-та, които показват, че човекът, макар и явно да е работил с дадена технология, очевидно си няма идея за какво иде реч.

Може би това се прави с цел да искаш все по-голяма заплата, т.е. имаш една надежда, че всичките тия милиард технологии ще хванат декиш на следващите интервюиращи, и ще можеш да им искаш с хиляда лева по-голяма заплата от тази от предишната ти работа (преди 6 месеца). Ако ли не, сгъваш шатрата, и отиваш на следващото място да се пробваш.

А може и някои хора да го правят с цел да видят възможно най-много неща, хора, екипи, обстановки, проекти, и т.н. с целта да натрупат голям опит и да стартират собствен бизнес. Във всеки случай, тия хора трябва да имат уникална психика и издържливост, гъвкавост и амбиция, след като са способни през 6 месеца да преживяват сътресението, наречено "смяна на работата". Т.е. говорим за професионална студенина и безчувственост от голям мащаб. Т.е. за мен това са професионални темерути. Каква ли е тая цена, която оправдава толкова често да се налага да свикваш с напълно различни хора, работна среда, шефове и т.н. Това е сериозен стрес за организма, и освен това те лишава от възможността да усетиш удоволствието и радостта от работата - как може да ги изпиташ, ако постоянно работиш с непознати ? Трябва да мине едно технологично време във всяка работа, след което идват нови, интересни и различни предизвикателства, както и лични тестове, които е добре човек да вземе успешно. А тези хора не стигат никога дотам ... Времето носи особен вид важни знания и умения, които не можеш да ги усетиш или придобиеш за 6 месеца.

Във всеки случай, понеже съм бил на доста интервюта, и знам, че HR-ите обичат понякога да задават повече въпроси, интересно ми е дали на човек с такова едно СВ му се отправят подобни питания. То много и зависи какво търси фирмата, ако иска човек за краткосрочен проект, вероятно job hopper-ът ще има предимство.

Не ми харесва тоя подход, за мен тия хора са сериозно надути балони, въздух под налягане. Това са съвременните ИТ хъшове - обикалят с куфарите наляво надясно, немили-недраги.

неделя, 3 юли 2011 г.

100 килограма мъдрост!

Тия дни гледах 100 кила в едно предаване и много ме изкефи една негова фраза: "Като ми се случи нещо много хубаво, гледам да не го вярвам, щото съм живял труден живот, и знам, че дори и да е истина, после сигурно идва нещо много кофти." Хубаво е човек да не се връзва много на разните неща, които му се случват.