Можда постоји планета која има савршен софтвер, али ако Крис Дибона из Гугла напише:, та планета није она на којој живимо. Стога, програмери имају компромис: тестирајте свој софтвер полако и ригорозно како би пронашли све проблеме пре имплементације, или тестирајте мање и испоручујте брже са већом толеранцијом за грешке у производњи.
Бивши камп је пун девелопера који раде у регулисаним секторима као што су здравствена заштита и финансије; Ово друго је насељено присталицама чувене изјаве Вернера Вогелса „саградиш, возиш“ (погледајте ПДФ на линку).
Овај компромис је једна од најизнијансираних дебата о продуктивности програмера.
Где год да се програмери налазе у спектру тестирања, не постоји јединствено решење за тестирање софтвера, тако да су програмери стално у потрази за правом мешавином приступа тестирању како би задовољили своје потребе у развоју. Да би се ствари додатно закомпликовале, пре него што било који доступни приступ тестирању постане навика, програмери треба да пронађу слатку тачку да поправе велику болну тачку и да не буду толико спори или сложени да је користе. Немој
Као што сам недавно писао, тестирање јединица је пронашло ту слатку тачку. Као пракса тестирања софтвера, омогућава тимовима да тестирају мале, изоловане делове кода, који не само да обезбеђују да софтвер ради према предвиђеним спецификацијама, већ и омогућава програмерима да тестирају оне које су креирали други програмери.
Омогућава резоновање са деловима дате базе кода. писаним. Тестирање јединица постоји већ деценијама, али је тек недавно постало успостављено јер је аутоматизација поједноставила корисничко искуство до тачке стварне употребљивости.
Данас постоји још један облик тестирања, сличан јединичном тестирању, за чије су креирање биле потребне деценије, али тек сада налази своје место у решавању важног проблема и дајући програмерима праву апстракцију за веома поједностављен приступ. Говорим о интеграцијском тестирању.
Посао програмера је да повеже ствари заједно
У традиционалном трослојном архитектонском систему, програмери би могли имати базу података и можда један или два АПИ-ја за рад, а то је била величина компоненти треће стране које су додиривали.
Данас програмери растављају решење на много различитих компоненти – већину њих нису написали, од којих већина није видела изворни код, а многе су написане на другом програмском језику.
Програмери пишу мање логике и проводе више времена повезујући ствари. Данас, просечан производни систем је у интеракцији са више база података, АПИ-ја и другим микросервисима и крајњим тачкама.
Не можете правити једноставне претпоставке о томе како ће се ваш систем понашати сваки пут када ваш софтвер треба да разговара са неким другим софтвером. Свака база података, ред порука, кеш меморија и оквир имају своје специфично стање, правила и ограничења која регулишу њено понашање. Програмерима је потребан начин да тестирају ово понашање пре примене, а ова тестна класа се зове интеграцијски тест.
„Тестирање интеграције одређује да ли независно развијене софтверске јединице функционишу исправно када су повезане заједно“, пише Мартин Фовлер, који се први пут упознао са тестирањем интеграције 1980-их.
До недавно, тестирање интеграције значило је да морате да реплицирате своје производно окружење. Ручно креирање тог тестног окружења био је изузетно дуготрајан процес, са високим ризиком од грешака. Постојале су казне за неслагања између теста и производње, као и терет да морате да уносите промене у своје тестно окружење сваки пут када направите промену у производњи. Интеграционо тестирање је било толико тешко поставити и користити да је за многе програмере остало нејасна, недоступна дисциплина тестирања софтвера.
Тест контејнер: побољшајте тестирање интеграције
Ричард Норт је направио тестне контејнере 2015. док је био главни инжењер у Делоитте Дигитал-у. Он је приметио да је ужасно сложена поставка интеграцијског тестирања — од сталног креирања локалног окружења до конфигурисања база података и управљања безброј других проблема — представља стални извор проблема за тимове програмера, који су морали да пронађу начин да тестирају свој код. Постојала је потреба за поузданим методом. О зависности попут стварне производње.
Нортх је изградио ТестЦонтаинерс као библиотеку отвореног кода која омогућава програмерима да „тестирају са контејнерима“ у односу на складишта података, базе података или било шта друго што може да ради у Доцкер контејнеру, укључујући популарне оквире као што је Апацхе Кафка. Ис.
Контејнери за тестирање пружају ергономски начин заснован на коду за програмере да користе контејнере за локално и континуирано тестирање интеграције, без потребе да сваки програмер постане експерт за многе нијансе контејнера.