сирене

Днес имаме изненада за вас! Моля, запознайте се с Джеф Морган, известен като Cheezy (@chzy). Джеф ни даде хубаво пълноценно интервю за новата си книга „Краставица и сирене“ и по-добри практики за тестване, така че ... не ми позволявайте да отделям повече от вашето време - прочетете и го опознайте!

1. Здравей Джеф (Cheezy), благодаря ти, че отдели време да говориш с нас. Вие сте високо призната фигура в света Agile и ATDD, но за тези, които вече не ви познават, можете ли да ни кажете малко за себе си?

Страстта ми е да пиша софтуер и го правя от близо тридесет години. Преди малко повече от осем години напуснах „корпоративната“ си работа и създадох компания, която по-късно стана LeanDog. Оттогава пътувам из Съединените щати и Канада, помагайки на екипите за разработка на софтуер да се подобрят в това, което правят, като въвеждам практики от Agile и Lean общността.

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

През първата половина от кариерата си като треньор бях много разочарован от състоянието на тестващата професия; особено в екипите, с които съм работил. Те почти винаги бяха моето ограничение и те пречеха на екипа да постигне пълния си потенциал. Точно както Кент Бек, Рон Джефрис и други от общността на разработчиците повдигнаха летвата за това какво означава да си професионален разработчик, реших да се опитам да помогна да направя същото в тестващата професия. Започнах да въвеждам ATDD в екипите, с които работех, и започнах да работя с тестери, за да им помогна да се научат как да пишат автоматизация на тестове, използвайки същата строгост, на която обучавам разработчиците да пишат код. Също така започнах да натискам плика за това какво означава да си сътруднича в Agile екип. Първоначално много от идеите ми се смятаха за радикални и екстремни, но с годините станаха все по-приети.

2. Кога и как сте били запознати с Ruby и какво ви харесва в него най-вече?

Обичам всички езици за програмиране. Наистина ми харесва да ровя в даден език, за да определя какво може да предложи. Когато ми се даде шанс, обичам да избирам езика, който да използвам, въз основа на това кой най-добре решава разглеждания проблем.

С този фон открих Руби преди около шест години. Rails беше доста нов и много хора в общността говореха за това. Започнах да изучавам езика и много харесах това, което видях. Много ми хареса простотата на езика и в същото време простият и мощен обектен модел. Вярвах, че ще бъде лесно да използвам метапрограмирането за изграждане на по-високи DSL за разработчици. Това е тайната на релсите.

Няколко години по-късно работех с тестери, опитвайки се да им помогна да внедрят автоматизация на тестовете. Започнах с разглеждане на съществуващите инструменти и бях шокиран колко лоши бяха те. Руби изглеждаше като добро решение. Това ми позволи да напиша код, който изгражда DSL на високо ниво, които тестерите могат да използват за изграждане на тестови пакети. Това в крайна сметка доведе до разработването на няколко скъпоценни камъни Ruby.

3. Разработчиците на RoR може да са много развълнувани от вашата книга, тъй като ние сме в екипа на RubyMine. Можете ли да ни кажете малко за кого е предназначена тази книга?

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

Моята книга се опитва да обхване няколко теми. На първо място, той предлага хубаво въведение в Рубин и Краставица. Той също така запознава читателя с множество допълнителни скъпоценни камъни, които могат да се използват с Краставицата за писане на стабилни гъвкави тестови пакети. Той също така обхваща разширени теми като управление на тестови данни и мащабиране на вашите тестове. Моята книга става доста популярна в общността за тестване, но също така вярвам, че има много предложения и за общността на разработчиците.

4. Защо краставица? Какви предимства предлага тази рамка за тестване пред останалите?

5. Разработвате скъпоценни камъни Ruby за по-добро тестване. Можете ли да ни кажете за любимите си?

Това е нещо като да ме помолите да избера любимото си дете. Обичам ги всичките! Моят страничен обект скъпоценен камък е най-популярният. Позволява на човек да изгради абстракция около уеб страница и да изолира останалата част от вашия тестов пакет от промени в тези страници. Друга двойка скъпоценни камъни, които напоследък получават голямо признание, са наглите и гамелите. Те предоставят солидна платформа за тестване на приложения, написани за устройства с Android. И накрая, data_magic е скъпоценен камък, който работи в тясно сътрудничество с page-object, за да екстернализира и рандомизира данните, използвани във вашите тестове. Това е съществена съставка, когато искате да провеждате паралелно тестовете си. Когато вашите тестове се изпълняват паралелно, вие губите контрол над реда, в който те се изпълняват. Ако използвате едни и същи данни от тестове в множество тестове, е много лесно за един тест да стъпва върху данните на другия и да има случайни неуспехи на теста.

6. И какви инструменти за тестване, различни от скъпоценни камъни, можете да препоръчате?

Индексни карти, добра среда за разработка и git. Сериозно, не обичам тежки процеси или инструменти. Обичам да го поддържам лек и да го поддържам просто.

7. За нас е чест, че RubyMine е посочен в цялата книга. От колко време използвате RubyMine? Какво харесваш в него?

Аз съм дългогодишен потребител на emacs и команден ред от 80-те години на миналия век. Открих RubyMine, когато беше пуснат за първи път. Представях Ruby като платформа за тестване на екипите, които тренирах и вече използвах и бях доволен от няколко други инструмента на JetBrains - а именно IntelliJ и ReSharper. Имах нужда от напълно интегрирана среда за разработка и RubyMine доставен. Оттогава това е моят инструмент за използване.

8. Липсват ли ви някакви функции в RubyMine?

Имах възможността да запозная много разработчици и тестери с RubyMine и единствената характеристика, която най-много споменах, е по-доброто завършване при използване на класове, които са конструирани динамично. Знам, че това е много труден за решаване проблем и съм изненадан от продължаващия напредък, постигнат от инструмента. Продължавай с добрата работа.

9. Тренирате, правите много разговори по целия свят, блоговете и т.н. Какво ви вдъхновява ежедневно? Някакви книги, блогове? Хобита?

Когато съм на път (което е около 90% от времето), прекарвам вечерите си в писане на код. Също така посещавам много потребителски групи в градовете, които посещавам, и се наслаждавам на откриването на местните бири. През почивните дни живея съвсем различен живот. Често лагерувам със семейството си и се наслаждавам на мухарски риболов.

10. Благодарим ви отново за отделеното време, Джеф, и очакваме с нетърпение окончателното издание на вашата книга. Има ли предстоящи събития или теми, които бихте искали да „включите“?

Бих искал само да поканя цялата общност за развитие да се подтикнат да усъвършенстват и изучават своя занаят и никога да не се отказват да следват своите страсти.

-
Развивайте се с удоволствие!
Екип на JetBrains RubyMine