Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
2.OdTESTOWaniaręCZnEGOdOaUTOMaTYCZnEGO
ipraktyczniwkontekścietego,coprawdopodobnieosiągniemy.Pamiętajmyjednak,
żejeślipodejdziemydotegopoważnie,tonaprzestrzeniwystarczającodługiegookre-
suczasubędziemymoglilepiejprzywyknąćdotychidei,coprzybliżynasdocelu.Więcej
szczegółówipomysłówdotyczącychtego,jakstopniowozmieniaćkulturęnaszejorgani-
zacjiwcelulepszegowykorzystaniaautomatyzacjitestów,możnaznaleźćwrozdziale15.
Takwięcterazuspokójmysię,zamknijmyoczyiwyobraźmysobie…nonie,musimy
przecieżmiećoczyotwarte,abymócczytaćdalej…
Wyobraźmysobie,żemamypełnepokrycieautomatycznymitestamiregresji,których
wykonanietrwałączniekilkaminut.Wyobraźmysobierównież,żenaszzespółnapra-
wiłwszystkieznanebłędyiwszystkietestykończąsięsukcesem…Wyobraźmysobieteż,
żekażdyzprogramistówmożeuruchamiaćdowolnyztychtestównaswoimwłasnym
komputerzedeweloperskim,kiedytylkomanatoochotę!
Jakwtakimwypadkuzmieniłbysięsposóbwykorzystywaniaprzeznasautomatyzacji
testówpodczastworzeniakolejnejwersji,funkcjiczyhistoryjkiużytkownika(zobacztekst
uzupełniający:hhistoryjkiużytkownika”)?Czynadalbyśmyuruchamialinaszetestywyłącz-
niewnocyibadaliewentualneniepowodzenianastępnegoranka?Czyponatknięciusię
nabłąd,zgłosimygownaszymsystemieśledzeniabłędówipoczekamydokońcakwartal-
negocykluwydawniczego,zostanieonnaprawionyprzezprogramistów?Nawszystkie
tepytaniaodpowiedźpowinnabrzmiećhNie”!
Jeślitestywykonująsiętakszybko,możemysprawić,żebędąsięoneuruchamiaćauto-
matycznieprzedkażdąoperacjąewidencjonowaniazmian
7
każdegoprogramisty(coteż
możebyćwykonywanebardzoczęsto)ibędąwstaniepowstrzymaćwykonanieoperacji
ewidencjonowaniawprzypadkuniepomyślnegozakończeniajednegolubwięcejtestów.
Wtensposóbmożemyzagwarantować,żewszystko,coznajdujesięwrepozytoriumkontroli
źródeł,zawszebędzieprzechodzićwszystkietesty!Ideatarealizowanajestprzezkoncep-
cjęokreślanąmianemciągłejintegracji(ContinuousIntegration,CI).Więcejinformacji
natentematmożnaznaleźćwrozdziale15.Wrezultacieposiadaniepełnegopokryciare-
gresjidziałającegowramachCIpotencjalniezapobiegawkradaniusięwszystkichbłędów
regresji!Takwięc,jeślijużnasamympoczątkuniemieliśmyżadnychbłędów,procesten
uchroninasrównieżprzedwystąpieniemregresji,pozwalającnampotencjalniewnieskoń-
czonośćutrzymywaćtenzerowystanznanychbłędów!Wrzadkimprzypadkuznalezienia
nowegobłęduregresji(ręcznie,potymjakprogramistazaewidencjonowałkod),błądten
możezostaćnajpierwodtworzonyzapomocąnowegotestuautomatycznegoinatychmiast
naprawionywceluutrzymaniazerowejliczbyznanychbłędów.
Cowięcej,zachęcatoprogramistówdousprawnianiawewnętrznejjakościkoduistruk-
turyaplikacji,gdyżmogąonidowolnierefaktoryzowaćswójkodinadalmiećpewność,że
niczegowtensposóbniepopsują(znaczenierefaktoryzacjiomawianejestwrozdziale1).
Tawewnętrznajakośćczęstoprzekładasięrównieżnajakośćzewnętrzną,ponieważprostszy
7
Operacjaewidencjonowania(check-in),znanarównieżjakooperacjacommit,pushlubsubmit,polega
nazastosowaniuzmianwprowadzonychprzezprogramistęnajegolokalnymkomputerzewscentralizowanym
repozytoriumkoduźródłowego,któryjestwspółdzielonyprzezcałyzespółtworzącyoprogramowanie.Repo-
zytoriatezarządzaneprzezsystemykontrolikoduźródłowego,takiejakGit,MicrosoftTeamFoundation
Server,SVN,Mercurialiwieleinnych.
14