I letos jsme vyslali početnější výpravu na Týden inovací 2024. Akce, která přináší spoustu prezentací, panelových diskusí a seminářů. Opět v atraktivní budově ČSOB.
Testeři se někdy perou s otázkou, jestli stačí k testování starý dobrý selský rozum. Náš QA lead doporučuje k testování přistupovat systémově a využívat ověřené techniky. Proto ho potěšilo téma 125. setkání [pro:]TEST! komunity, kde si ověřil a dle svých slov i rozšířil své zkušenosti.
Vypravili jsme se na třídenní konferenci ze světa machine learningu. První den byl věnován workshopům, především na téma LLM. Další dva dny byly nabité přednáškami od různých odborníků.
AI něco přinese prakticky každému. My ale chceme zvýšit naši efektivitu díky AI alespoň o konkrétních 30%-40%. Jenže jak poznat, že už to nastalo? Sepsal jsem článek se screenshoty, tabulkami a grafem, jak to měříme.
Je snadné sledovat novinky ohledně AI, ale horší je důsledně uplatňovat. Další past je zapnout si ChatGPT+Github Copilota a spokojit se s nárůstem výkonnosti o hezkých 5-10%. To nám přijde málo, míříme na 30-40%. Tak jsme si ve čtvrtek dali AI Workshop s Petrem Glaserem 🤖 na témata pokročilého promptování, využívání přednastavených GPT, architektury pro práci s vlastní dokumentací a možnostmi dalších nástrojů.
Nedávno jsme se vydali na cestu testování shell skriptů. Volba padla na BATS (Bash Automated Testing System), byla to skvělá jízda plná objevů a o některé z nich bychom se rádi podělili. Protože už delší dobu používáme čistý codestyle pro bash, šlo testování poměrně od ruky. Pro představu nebo inspiraci přinášíme rychlý úvod.
K rezervovaným letenkám jsme přidali možnost zaslání kalendářových událostí pro jednotlivé lety ve formátu .ics. Tyto události obsahují detaily jako letiště a terminály, ze kterých a na které se poletí, GPS lokaci letiště odletu a lokální časy příletu a odletu, události jsou při změně nebo zrušení letu v kalendáři aktualizovány/zrušeny.
Náš QA lead Libor Šimo se zúčastnil Tesena Fest 2023 konference a přinesl si pár poznámek. Jedné se ale stále trochu bojí: Delete the column TESTING in workflow :)
K vyhledaným letenkám nabízíme doplňkové služby, ty jsou načítány z externích služeb, s těmi si vyměňujeme JSON a příchozí i odchozí zprávy validujeme JSON schématem. K validaci jsme integrovali knihovnu https://github.com/pboettch/json-schema-validator postavenou nad https://github.com/nlohmann/json, ta druhá je v posledních letech v C++ standartem. JSON je čistější a jednodušší než XML a validace přes JSON Schéma je snad o řád čistější a jednodušší než přes DTD nebo YAML. Speciálně DTD bylo/je častým zdrojem problémů v kódu, kde ještě používáme XML.
Početnější výpravu jsme vyslali na Týden inovací ČR 2023. Výstavy, která přináší spoustu prezentací, panelových diskusí a seminářů. Tentokráte v atraktivní budově ČSOB.
O víkendu jsme si dopřáli histricky první víkendový firemní "tmelling". Došlo na teoretickou i praktickou zkušenost s AI, shrnutí firemních aktivit, venkovní "únikovku" a spoustu dobrého jídla, pití a zábavy.
Letos jsme už podeváté společně pohybem pomohli opuštěným a ohroženým dětem. I když se Teribear se tentokrát přesunul do virtuálu začali jsme společným posilněním a výběhem ve Stromovce. V následujících dnech jsme nakonec dohromady nasbírali úctyhodných 1 407,2 km.
V minulosti sa riešilo hlavne npm vs yarn. Teraz sa ponúka nová alternativa pnpm. Poznám prvú myšlienku - daľší nový tool v JS, ako by ich už nebolo moc. Môže byt pnpm iné? [SPOILER ALERT]: yes! Pnpm udáva tri argumenty - rychlejší, efektívnejší a striktnejší. V porovnaní s yarnem je takmer 2x rychlejší(v súlade so zdrojmi na internetu a vlastným meraním v ramci trip manageru). Efektívne šetrí miesto na disku používaním globalneho uložiska pre knihovny - pri viacero projektov, ktoré používajú rovnakú knižnicu, je knižnica na disku uložená jen jednou, a len sa na nu hardlinky odkazujú. Narozdiel od yarnu a npm, pnpm určuje, že kód v aplikaci má prístup len k závislostiam(a nie k podzávislostiam), ktoré sú v package.json(takzvaný problem "flat dependency").
Z nabídky vyrazit ve větším počtu na třinácté setkání backendistů bylo nakonec pouze osamělé sledování online přenosu. Ale i tak to za ten čas stálo díky vybraným tématům - přetěžování API postaveném na varnishi, elasticsearchi a postgre, souboj se zaváděním buzzwordů nebo rychlá memory based databáze evitaDB.
Náš testerský tým si trochu odpočinul od testování a prošel si jednodenním team tmellingem. Ne že by to nutně potřeboval, ale prohlubovat týmového ducha se vyplatí vždy. Vyzkoušeli jsme si RiskStorming With TestSphere, naše oblíbené párové testování, únikovou hru a nakonec jsme otestovali i různá piva :)
Jednočlennou výpravu jsme vypravili na víkendovou konferenci o ML, AI, LLM a spoustě dalších cool zkratek, které slibují změnit podobu budoucnosti. Vesměs šlo o velmi praktické ukázky řešení nějakého konkrétního fuknčního nebo produkčního problému. Příští rok jdeme zas.
Jako příležitost k menšímu team buildingu jsme si vybrali tematicky blízkou exkurzi na letiště Václava Havla v Praze. Viděli jsme z blízka startovat Boeing 777 a vyzkoušeli si únikovou skluzavku ve výcvikovém centru. (A pak si dali pivo v Libockém dvoře.)
Pre reportovanie chyb používáme sentry. Next.js od verze 10.0 obsahuje podporu pro sentry. Toto umožnuje logovanie chýb na klientovi aj na serveru. Súčastou popisu reportované chyby je i ukázka kodu, kde chyba vznikla. Na inštaláciu sentry existuje manuál, ktorý v sebe má už automatizovaný skript, ktorý nastaví sentry po krocích. Prípadne je stále možné jít manuální cestou 😉.
Na prvních pár licencích testujeme, co pro nás může dělat Github Copilot. Množí se historky, kdy "zázračně" pomohl a kdy naopak "ostudně" selhal. Mezi nejlepší patří, když správně doplnil konfigurační json pro tureckou liru. Kdyby to udělal programátor sám a přesně podle nedokonalého zadání, byla by tam chyba.
Již je tomu rok, co jsme zavedli pravidelné QA chapter meetingy. Cíle, které jsme si před rokem dali a většinou se nám je daří i plnit :) jsou: retrospektiva, prezentace nových funkcionalit, vylepšování procesů a společné vzdělávání. Současně také vznikaly nové dokumenty, mimo jíné například QA mission či Klíčová slova, která pomůžou k rychlejší orientaci v našich lozích.
Kromě lambdy nasazované frameworkem serverless používáme i kontainery v Elastic container service spravované službou Fargate a nasazované pomocí AWS Cloud Development Kit. CDK umožňuje definovat strukturu AWS komponent pomocí tříd a funkcí některého z podporovaných jazyků (python, typescript, java...). Z takové definice CDK vygeneruje cloudformation předpis, kterým aplikuje rozdíly proti stávajícímu stavu v AWS.
Pro serializaci dat z objektů a deserializaci dat do objektů používáme komponentu Serializer ze Symphony frameworku. Hodí se nám především pro generování odpovědí z našeho JSON API. Výhodou je, že s použitím základních a několika vlastních normalizérů můžeme serializovat poměrně složité struktury.
Také letos jsme se spolu s našimi kolegy, zákazníky, rodinami a přáteli zapojili do akce TERIBEAR hýbe Prahou. Každý rok patříme jako Travelport i mezi partnery akce. Některým kolegům se podařilo za sedm dní nasbírat více než 100km.
Začali jsme používat Mermaid pro různé vývojové diagramy. Líbí se nám jednoduchá syntaxe, díky které je úprava dokumentace rychlá a snadná pro každého člena týmu. mít přímo v repozitáři a aktuálnost dokumentace můžeme kontrolovat v rámci implementace issue v Gitlabu.
Michal se pochlubil jak vypadá jeho pracovní počítač z pohledu softwarové výbavy.
S kolegy z C++ teamu jsme se zamýšleli nad tím, jak se vypořádat s enumy, které mají mít pár funkcionalit navíc.
Kolega Zdeněk vyprávěl pro podcast Komora+ o tom, co dělá náš produkt TripGate. Jeho jádro tvoří GOL IBE D4 a GOL API. Samostatný tým pak vytváří v AWS další komponentu, která TripGate dotváři.
Co dělat, když už vývojáře nebaví vyvíjet na serveru s textovým terminálem?
Kolega Lukáš připravil krátkou prezentaci, co bychom pro sebe mohli během dne udělat, aby naše tělesné schránky tolik netrpěly extrémní povahou naší vývojářské práce (= sezením).
Vylepšování procesu celého vývojového cyklu, nebo zavádění nových nástrojů a jiných činností vycházejících například i z teorie omezení. A samozřejmě hledáním nových testerů :).
Náš QA Libor prezentoval minulý rok používání nástroje Postman pro [pro:]Test! komunitu a záznam přednášky měl největší sledovanost :)
Přejme veselé Vánoce a šťastný nový rok 2022. Ani letošní rok nebyl pro letectví jednoduchý. Přesto nezahálíme a pilně vyvíjíme naše produkty.
Pracujete vzdáleně přes OpenVPN? Jestli ano, Štěpán má pro vás malý tip na užitecnou konfiguraci.
Pro dynamickou analýzu kódu v C++ používáme Valgrind. Štěpán v následujícím článku připravil malou ukázku. Pokud Valgrind používáte, možná jste se s ní taky setkali. Pokud Valgrind nepoužíváte, můžete se aspoň podívat, s čím by vám mohl pomoci.
Pár slidů na téma Dědičnost v db modelu - dekompozice tabulek podle 3. normální formy není nutně způsobem, který používat vždy. Krátká LodTod přednáška s živou diskusí proběhla v rámci pravidelného středečního meetingu.
S narůstajícím počtem variant naší mobilní aplikace GOL Mobile bylo potřeba zautomatizovat vydávání do příslušných obchodů (Google Play a Apple App Store). Martina v následujícím článku popsala důvody, které nás vedly k volbě jednotlivých technologií a detaily celého deployment procesu, který nově začíná pushnutím do produkční větve a končí automatickým upgradem všech variant Android a iOS aplikací patřícím různým zákazníkům.
Sem tam každý z nás potřebuje převést JSON na Yaml a zpět, rozkódovat nějaký ten Base64 řetězec z logů. Takových udělátek je na internetu spousta. Ovšem v JSONu a Yamlu je typicky konfigurace aplikace, v Base64 bývají tokeny, prostě citlivá data, která by neměla nikde uniknout. My jsme paranoidní a máme i paranoidní utility, u kterých je riziko ztráty výrazně menší, protože převody se dějí pouze na straně internetového prohlížeče. Dostupné jsou na níže uvedené adrese včetně zdrojových kódu.
Postman toho umí opravdu hodně a o pár funkcionalitách vyprávěl i náš QA Libor pro [pro:]Test! komunitu.
Včera se náš QA Libor Šimo účastnil webináře o CI/CD, který pořádala společnost Tesena. Jan Egermaier popisoval, jak nastavit automatizované testy pomocí nástroje GitLab. Závěr je pozitivní: přesně tak probíhá continues integration i u nás :)
V našich zadáních často využíváme Use Case - strukturovaný postup, jak bude probíhat požadovaná akce. UC podporuje i nacházení a řešení různých nečekaných situací. Mise připravil stručný návod, na co si dát při psaní UC pozor.
Vyvíjíme rezervační systém, kterému říkame GOL. Zkratka IBE znamená Internet booking (= rezervační) engine. Rezervujeme primárně letenky. Označení D4 značí čtvrtou generaci, vyvinutou v javascriptovém frameworku Next.js, postaveném na Reactu. Z původního Flow jsme přešli na Typescript. Testujeme v Jestu a Cypressu. Aplikace má i verzi určenou pro korporátní zákazníky - TripGate a s využitím React Native i verzi mobilní.
Uvnitř GOLu se skrývá C++ jádro staré více než 10 let. Historicky podporovalo několik zdrojů letenkových a hotelových dat, rezervace aut a pojištění. Stále je v něm co zlepšovat. Při vývoji si pomáháme mockováním všech externích zdrojů dat, se kterými spolupracujeme. To nám umožňuje psát automatické testy. Nový kód píšeme v C14 a když je to potřeba, využíváme Boost.
Starší verze GOLu. Systém stále intenzivně vyvíjíme a zároveň udržujeme v provozu přes 10 let. To znamená, že v začátcích GOLu vypadal webový vývoj úplně jinak než dnes. Ale neznamená to, že bychom ho dělali celou dobu stejně. Jsme na PHP 8.0, využíváme PHPStan (na nižších levelech), testy píšeme v Codeception a PHPUnit.
Využíváme různá API z cestovního ruchu. Nejvíce používáme API k systému Galileo, které využívají i největší hráči v oboru. V ČR jsou to například Kiwi.com, StudentAgency, nebo Pelikan. Obdobné je to s API Travelfusion.