Още в основата на един проект, още докато той е само идея, често се допускат грешки, които в последствие водят до бъгове.
Да започнем от срещата с клиентът. Той казва какво иска за продукта си, но често не съобразява много фактори и зависимости. Дали продуктът е само за десктоп или трябва да се разработи и за мобилно устройство, дали ще поддържа различни браузъри, дали ще поддържа различни езици. Все въпроси, които незададени навреме водят до проблеми в бъдеще.
Понякога липсата на добра комуникация с клиента може да доведе до неяснота в цялостната идея на софтуера. Какво трябва да прави или да не прави той. Много често дори клиентът не е напълно наясно какво иска и това води до грешни тълкувания и от двете страни. В резултат на това изискванията може да се променят постоянно. Това предизвиква голямо объркване при екипа за разработка, както и при този за тестване. Добавянето или премахването на функции е свързано с други компоненти, които в резултат на промяна могат да се „счупят“.
Такива промени изискват време, което както винаги не е достатъчно. Обикновено с напредване на времето тестовете трябва да се приоритизират, за да може да не остане непокрита критична част от софтуера, за сметка на бъгове с по-нисък приоритет.
Много голям процент от бъговете се дължат също и поради липса на комуникация в екипа. Дали не е направена промяна в изискванията, която поради някаква причина не е достигнала до екипа за разработка или за тестване. Дали програмистите не са пропуснали да кажат на специалистите по софтуерно тестване предварително по какво работят, за да може паралелно с тях те да разработват и приоритизират нужните тестове, така, че в момента, в който даден компонент е разработен, веднага да започне неговото тестване.
Няма как да пропусна още един много важен фактор, а именно опита. Неопитен член на екипа, независимо каква длъжност заема той, в комбинация с липса на комуникация е голям риск. Неопитен програмист разработва компонент след компонент, без да прави така важното unit тестване и резултатът от това води до бъгове в една по-напреднала фаза – integration тестването. Неопитен тестер се старае възможно повече неща да бъдат изтествани, вместо да се следва последователността от critical към minor.
За финал направо ще ви разбия представите, че ако екипа е перфектен и клиентът знае точно какво иска, грешки не се допускат. Е както във всяка сфера, във всеки бизнес и тук всичко се свежда до бюджет. Свършат ли парите, неписано правило е, че се реже от последната инстанция, а именно тестването. И така колкото и прекрасно да е всичко, при наличие на неизтествани функционалностти, риска за бъгове е доста голям.
Грешките и дефектите са неразделна част от процеса на разработка на софтуера. Трудно е да се определи коя точно е причината за появата на бъгове, тъй като причините са много и си взаимодействат комплексно. Факт е обаче, че ги има и ние QA-ите много си ги обичаме.