Portál AbcLinuxu, 30. dubna 2025 12:43
Proč ne automatické testy a noční buildy
10.2.2012 17:44
| Přečteno: 3797×
|
| poslední úprava: 10.2.2012 17:58
V práci se mi stala nemilá událost, a začínám chápat proč většina programátorů nemá moc ráda novoty.
Dělám na jedné monstr aplikaci, která by automatické testovaní a CI (continuous integration) potřebovala jako prase drbání. Build obvykle trvá 40 minut, není automatizovaný a výstupem je 1GB instalátor. S tímhle je radost pracovat, takže obvykle děláme milestone každé tři měsíce. Prostě se dvě měsíce tříská do klávesnice a pak to měsíc zkoušíme zkompilovat.
Jako správný mlamoj (mladý neklidný a moderní) jsem se s tím rozhodl něco udělat. Můj prvotní naivní požadavek na zastavení práce na tři měsíce a naprogramování základních testů tvrdě narazil. Šéf to označil za fantasmagorii a zakázal mě i pomyslet na něco podobného v pracovní době. Základní argument proti byl, že náš projekt je "special", od ostatních se dost odlišuje (asi jako zvláštní škola) a my unit testy nepotřebujem.
Pro úplnost dodám že unit-testy používám velmi úspěšně ve svých open-source programech. Plán který jsem předložil byl docela propracovaný a měl i podporu několika dalších programátorů a testerů.
Vzal jsem to do dalšího levelu a v podstatě za zády vedení nastavil Hudson s nočními buildy. Trvalo to asi 40 hodin rozprostřených do tří měsíců. Náš build system má asi 20000 řádků v 'bat' souborech, používáme Visual Studio 97 a Delphi 6, build vyžaduje součinost tří virtualních mašin... No prostě lahůdka, kterou jsem si to patřičně užil, ale nakonec to fungovalo.
Postupně jsem to oznámil ostatním programátorům a vychytal mouchy. Měsíc po instalaci se Hudson ujal a začali ho používat všichni. Do teď skvělá pohádka s happy-endem.
Ale půl roku uplynulo a moje produktivita začala upadat.
Obvykle dělám na problémech, které vyžadují několik týdnů na opravení a mají velké riziko že se povlečou. Dřív jsem si to hlídal a obvykle přibral hodně malých bugů, abych vybalancoval statistiku. Před Hudsonem se průměrné hodnocení dělalo každé tři měsíce (po tom co testeři otestovali milestone), teď se testuje průběžně a statistiky se dělají každý týden. Prostě šéf se každý týden podívá do bugzilly, vidí že já jsem tenhle týden neopravil žádný bug, a udělá si u mě černý puntík.
Další problém je že jsem "chlápek zodpovědný za Hudson". Když hudson pošle error mail, je na mě vystopovat kdo udělal chybu, a dokopat dotycneho člověka, aby ji opravil. Pokud nedej bože chybu opravím sám, tak dostanu vynadáno co se hrabu v jeho kódu. Pokud se build nepovede pár dnů v řadě, dostanu vynadáno od testerů, kde je poslední build.
Dále Hudson přispěl ke "zprůhlednění vývoje". Tzn pokud někdo opraví bug špatně a tester ho znovu otevře je to okamžitě vidět. Jenže jsem na tom bit zase já, protože typ problémů které opravuju prostě nemůžu 100% otestovat než je commitnu. Za poslední měsíc mám 5 znovuotevřených bugů, což je solidně nejhorší statistika.
A v poslední řadě jsem se připravil o "buildovací neděle". Před Hudsonem jsem 5% času dělal buildy pro ostatní. Tzn seděl jsem doma, škrábal se na zadku a četl reddit. Díky náhradnímu volnu jsem pak mohl v pátek dřív domů.
Na konci roku máme performance review, o Hudsonu samozřejmě nepadlo ani slovo (neoficiální projekt) a místo toho jsme dělali čárky za každý uzavřený bug. Takže jsem otřepal CV a brzy nastupuju v nové firmě
Sečteno a podtrženo: Hudson obrovsky zvedl produktivitu celého týmu (a moji), ale já díky němu vypadám jak nekompetentní idiot. Šéf si díky Hudsonu začal dělat debilní statistiky, které zvýhodňují 'bušiče formulařů' Navíc jsem ztratil docela dobrou práci.
To mě přimělo se zamyslet proč hromada programátorů nemá ráda nové nastroje (VCS, CI, unit testy..). V podstatě nasazení těchto nástrojů je výhodné pro firmu, ale ne pro programátora. Díky těmto nástrojům má vlastník kódu (firma, ne programátor) větší kontrolu a může klidně vyhodit celý tým a vývoj odlifrovat někam do tramtárie. Tohle nehrozí pokud je zdroják v podstatě neudržovatelný pro cizího člověka.
Další krok v téhle úvaze je, že je v podstatě je proti našemu zájmu dávat tyto nástroje svým nadřízeným. Jistě, můžeme dál psát unit testy a dělat CI, ale čistě sobecky by jsme je měli schraňovat pro sebe.
A další krok může být regulérní business model založený na téhle úvaze. Jako firma můžeme poskytovat zdrojáky ke svým produktům (a odfajkovat si open-source), ale zatajit unit-testy. Navenek tak můžeme prohlašovat, že unit-testy jsou k prdu, a mi máme tým genialních programátorů. A také za naše geniální programátory patřičně účtovat...
A na závěr ponaučení: Pokud někdo zakazuje věc, která by měla být standard, klidně ji použijte, ale nedávejte mu ji. A vůbec nejlepší je při prvním vyslovení "nepotřebujem unit testy" se na podpadku otočit, odejít a ani nezahajovat diskuzi.
Tiskni
Sdílej:
Komentáře
Vložit další komentář
10.2.2012 18:26
Mrkva | skóre: 22
| blog:
urandom
Re: Proč ne automatické testy a noční buildy
10.2.2012 18:33
tomasi | skóre: 10
| blog:
x86_64
Re: Proč ne automatické testy a noční buildy
10.2.2012 20:01
vencour | skóre: 56
| blog:
Tady je Vencourovo
| Praha+západní Čechy
Re: Proč ne automatické testy a noční buildy
10.2.2012 20:56
ThePilgrim
Re: Proč ne automatické testy a noční buildy
10.2.2012 21:46
Peter S.
Re: Proč ne automatické testy a noční buildy
10.2.2012 22:13
Opravář
Re: Proč ne automatické testy a noční buildy
11.2.2012 05:09
xvasek | skóre: 21
| blog:
| Zlín
Re: Proč ne automatické testy a noční buildy
11.2.2012 08:18
loki
Re: Proč ne automatické testy a noční buildy
11.2.2012 11:02
alkoholik | skóre: 40
| blog:
Alkoholik
Re: Proč ne automatické testy a noční buildy
11.2.2012 14:28
xkucf03 | skóre: 49
| blog:
xkucf03
Re: Proč ne automatické testy a noční buildy
11.2.2012 14:44
Tyf
Re: Proč ne automatické testy a noční buildy
11.2.2012 16:51
Matz
Gratulujem k novej praci
13.2.2012 10:50
xxx | skóre: 42
| blog:
Na Kafíčko
Re: Proč ne automatické testy a noční buildy
17.2.2012 15:16
Filip Andres
Re: Proč ne automatické testy a noční buildy
Založit nové vlákno •
Nahoru
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.