Привет,
В света на софтуерното разработване, терминът agile (на български „гъвкав“) обикновено се свързва с някакъв подход на проектен мениджмънт, който има за цел да обедини екипи с помощта на принципите за сътрудничество, гъвкавост, леснота, прозрачност, и отзивчивост да даде обратна връзка през целия процес на разработване на нова програма или продукт. А Agile testing (с главно А) е практиката на тестване за бъгове или проблеми с производителността/ изпълнението (performance issues) в рамките на контекста на един динамичен работен процес.
Какви са предимствата на Agile методологиката?
• Тестването спестява пари и време;
• По-малко документация;
• Редовна обратна връзка (feedback) от крайния потребител;
• Ежедневните срещи (мийтинги) с колегите могат драстично да ускорят намирането на отговори на въпросите/ проблемите.
Началото на Agile:
През 2001 г. в Юта 17 човека решават да направят манифест с цел иновативни, гъвкави подходи към проектното организиране и да разчупят традиционните линейни методологии.
В него те описват защо е по-добре да се избират:
Индивидуалните срещи с потребителите пред процесите и инструментите;
Работещият софтуер пред подробната документация;
Съвместната работа с потребителите пред договаряне на договори;
Реагиране на промените пред следване на план.
Като също казват, че въпреки че нещата вдясно са стойностни, тези вляво ги ценят повече.
Деление:
Разделят и разработването на софтуера на няколко части и искат да се отличат от другите подходи, например “waterfall” (на бълг. водопад) :
Requirements (Изисквания)
Design (Дизайн)
Implementation (Имплементация)
Verification (Верификация/потвърждение)
Maintenance (Поддръжка)
Идеята им е, че developer-ите и tester-ите са като 2 страни на една монета, които трябва да се срещат и да обсъждат проблемите ежедневно.
Те считат, че в многото корпурации практиката е грешна – девелопърите се опитват да изгладят кода си и да стане перфектен, който след това се дава на тестърите, които, пък, се опитват да го счупят по възможно най-много начини и пак да върнат рапорта към дев. екипа. Според тях това изисква много повече време и $. Те казват, че по-добрия подход би бил да ги слеят не в смисъл да са заедно самите хора,а в смисъл на процес на работа и време -девелопърите да мислят повече като QA, а QA повече като девелопъри, като не се пренебрегват нито едните, нито другите (странна работа :D). Другото е – тяхно един вид мото : “ Постоянно се интегрирай и постоянно ще произвеждаш качествен продукт“;
И сега за самия манифест
Принципи на Agile тестването:
Тестването НЕ е фаза – Agile екипът тества постоянно и постоянното тестване е единственият начин за осигуряване на непрекъснат и постоянен прогрес;
Тестването движи проекта напред – Когато следваш общоприети методи, тестването се счита като „порта за качество“, но Agile тестването дава обратна връзка през цялото време и така постоянно отговаря на нуждите на потребителите си;
Всички тестват – в кръговрата на системното разработване (Systems development life cycle), само тест екипът тества, докато при Agile и разработчиците и бизнес анализаторите тестват ;
Намаляне на времето, нужно за обратна връзка – докато в другите практики по време на Acceptance тестването (фазата,в която се разбира дали един продукт отговаря на изискванията и дали предлага това, което се изисква и най-вече се ползва black-box testing) бизнес анализаторите знаят в какво положение се намира разработването на продукта, то при Agile те отговарят на всички въпроси и по този начин намалят загубите и потребителите са много по-доволни ( отговарят им на време);
Чист код – фиксването на бъгове и изчистването на кода веднага след оправянето му е практика;
Намаляване на тестовата документация – вместо дълга документация, Agile тестърите ползват checklists (контролни списъци) за многократна употреба и се фокусират върху същината на тестването, а не в несъществените детайли;
Бъди задвижван от тестването – в другите методи тестването се прави след имплементацията, докато при Agile тестърите тестването се прави докато се имплементира.
Най-добрите практики за Agile тестването са :
1. Автоматизирани unit тестове;
2. Разработката да е на базата на тестването;
3. Автоматизирани regression тестове;
4. Изследователно тестване
Относно другият ти въпрос – дали го има и дали се прилага в Бъглария:
Отговорът ми е : ДА
Има курсове, които се провеждат из цяла България и това е, както вече споменах, практика, която се ползва навсякъде по света, въпреки че при някои работи по-добре от колкото при други. Не е лесно да се сменя методологиката в 1 корпорация (например във фирма с 5000 служителя може да е много сложно да работи този принцип, но при по-малки да работи този начин на мислене, тази нагласа и обратно – зависи как са нагласени да работят хората).
Поздрави!