softify.pro Flow — Testirao COCO
21.08.2026
Control. Clarity. Flow.
Svaki ozbiljan softverski proizvod prije ili kasnije razvije drugi proizvod iza proizvoda.
Kupci ga možda nikad ne vide. Posjetitelji možda nikad ne saznaju da postoji. Ali administratori, operateri i razvojni programeri oslanjaju se na njega svaki dan.
Za softify.pro Flow, ta aplikacija zove se Administration — operativna konzola zadužena za upravljanje korisnicima, ulogama, razinama pristupa, statusima autentifikacije, okruženjima baze podataka i ostalom konfiguracijom koja drži Flow instalaciju pod kontrolom.
Njezin ekran za prijavu nosi tri riječi:
Control. Clarity. Flow.
Izvorno su odabrane kako bi opisale iskustvo koje smo željeli da administratori imaju pri radu sa sustavom.
Ali iznenađujuće dobro opisuju i kako vjerujemo da bi se softver trebao testirati.
Zbog toga je softify.pro Flow — Administration postao očiti kandidat za pravi COCO test.
Ne laboratorijska demonstracija.
Ne skup izoliranih gumba pripremljenih posebno za AI demo.
Prava cross-platform desktop aplikacija sa stvarnom aplikacijskom logikom, više prozora, više baza podataka, autentifikacijom, ovlastima, lokalizacijom i dovoljno stanja da naizgled male regresije budu teško uočljive ručno.
Za ovdje prikazanu javnu demonstraciju, COCO je radio isključivo s generiranim demo podacima. Aplikacija je bila licencirana na izmišljenu tvrtku Presentation GmbH, te nisu korišteni nikakvi stvarni podaci kupaca, vjerodajnice ili osobni podaci.
Cilj je bio jednostavan:
pustiti da COCO pristupi aplikaciji onako kako bi to učinio tester i utvrditi ponaša li se cjelokupni administrativni tijek rada i dalje onako kako softver tvrdi.
Izazov
Na prvi pogled testiranje administracijske aplikacije djeluje jednostavno.
Otvori je.
Prijavi se.
Klikni kroz nekoliko prozora.
Provjeri izgleda li sve ispravno.
Ta se pretpostavka brzo mijenja kako aplikacija raste.
softify.pro Flow — Administration nije jedan statični obrazac. To je skup međusobno povezanih operativnih prikaza unutar jedne aplikacijske ljuske.
Administrator, između ostalog, može raditi s:
- korisničkim računima
- ulogama i razinama pristupa
- informacijama o autentifikaciji
- statusom dvofaktorske autentifikacije
- informacijama o operacijskom sustavu
- mrežnim i IP informacijama
- konfiguracijom baze podataka
- opcijama sortiranja i prikaza
- uživo odabirom jezika
- informacijama o aplikaciji i licenci
Sučelje trenutno podržava jedanaest jezika. Aplikacija također radi s MySQL i PostgreSQL bazama podataka. Pojedinačno, nijedna od tih značajki ne predstavlja neobičan problem za testiranje.
Poteškoća dolazi iz njihovih kombinacija.
Tablica korisnika može ispravno raditi na engleskom, ali prikazivati zastarjeli naziv stupca na hrvatskom.
Sortiranje može ispravno raditi spojeno na MySQL, ali se drugačije ponašati nakon prebacivanja na PostgreSQL.
Promjena jezika može ažurirati većinu elemenata sučelja, a ostaviti jednu statusnu poruku neprevedenu. Aplikacija može uspješno promijeniti bazu podataka, ali zadržati zastarjele informacije iz prethodne veze. Novi release može uvesti novu funkciju dok dijalog "O programu" i dalje opisuje prethodnu. Program se ne mora srušiti da bi bilo koja od tih situacija bila regresija. Zapravo, neki od najnezgodnijih softverskih nedostataka upravo su oni kod kojih sve naizgled radi.
Aplikacija se pokreće.
Prozor se otvara.
Gumb reagira.
Ali nešto ispod više nije sasvim u redu.
Zato je ponovljeno regresijsko testiranje važno.
I to je upravo vrsta posla u kojoj ljudi postaju sve lošiji nakon što desetke puta ponove istu sekvencu.
Zašto ručno testiranje postaje skupo
Testirati nešto jednom je lako.
Testirati to pouzdano nakon svakog relevantnog releasea nešto je sasvim drugo.
Uzmite u obzir samo tri dimenzije: 11 jezika sučelja × 2 baze podataka × više aplikacijskih tijekova rada.
Broj kombinacija brzo raste. Dodajte različite korisničke uloge, statuse autentifikacije, ponašanje sortiranja, promjene konfiguracije i radna okruženja, i testna matrica postaje prevelika da bi se tretirala kao povremena ručna kontrolna lista.
Upravo tu regresijsko testiranje često počinje erodirati.
Ne namjerno.
Rok za release se približava.
Netko se sjeti da je aplikacija testirana prošli tjedan.
Programer brzo provjeri najvažniji ekran.
Njemački radi.
Engleski radi.
MySQL radi.
Pretpostavka postaje:
"Ostatak je vjerojatno u redu."
Obično jest.
Sve do releasea kada nije.
COCO djelomično postoji upravo zato da tu pretpostavku ukloni iz procesa.
Što je COCO stvarno napravio
COCO je pokrenuo softify.pro Flow — Administration iz hladnog stanja aplikacije, bez oslanjanja na prethodno pripremljen ekran ili ručno pozicioniran tijek rada.
Prva interakcija bila je ista ona koja se prikazuje ljudskom administratoru: prozor za prijavu.
COCO je identificirao sučelje za autentifikaciju koje sadrži:
- korisničko ime
- lozinku
- kod dvofaktorske autentifikacije
i redak izravno ispod identiteta softify.pro Flow:
Control. Clarity. Flow.
Odatle je COCO nastavio kroz definiranu regresijsku sesiju. Poanta nije bila samo utvrditi može li se aplikacija otvoriti.
Poanta je bila provjeriti ostaje li stanje aplikacije interno dosljedno dok COCO s njom komunicira.
Autentifikacija je tek početak
Testiranje prijave jedan je od najočitijih kandidata za automatizaciju, ali sama uspješna autentifikacija vrlo malo govori o ostatku administracijske aplikacije.
Jednom unutra, COCO se preselio u stvarno radno okruženje. Pregledao je sučelje za upravljanje korisnicima i provjerio jesu li prisutne očekivane informacije.
To je uključivalo podatke poput:
- korisničkih imena
- maskiranih lozinki
- 2FA indikatora
- dodijeljenih uloga
- informacija o operacijskom sustavu
- IP adresa
COCO je zatim komunicirao s tablicom umjesto da je samo promatra. Popis korisnika sortiran je po korisničkom imenu. Rezultirajući poredak je pregledan. Važan dio nije bio je li klik na naslov stupca proizveo neku vidljivu promjenu.
COCO je provjerio odgovara li rezultirajuće stanje tablice zatraženoj operaciji.
Ta razlika je bitna.
Funkcionalni test pita:
"Je li gumb reagirao?"
Koristan regresijski test pita:
"Je li aplikacija završila u ispravnom stanju?"
Testiranje granice baze podataka
softify.pro Flow podržava više od jedne baze podataka.
Zbog toga je prebacivanje baze podataka posebno važna regresijska granica.
COCO je promijenio aktivnu bazu podataka s MySQL-a na PostgreSQL.
Nakon prebacivanja ponovno je pregledao korisničke informacije. Test je tražio više od uspješne veze. Provjerio je nastavlja li aplikacija prikazivati očekivane zapise i ostaju li informacije prikazane kroz sučelje dosljedne.
COCO se zatim vratio natrag.
Ovu vrstu prijelaza lako je podcijeniti.
Korisničko sučelje može ostati vizualno identično dok se sloj pohrane ispod njega potpuno mijenja.
Iz perspektive administratora, taj bi prijelaz trebao djelovati gotovo dosadno.
Isti korisnici trebali bi ostati razumljivi.
Iste uloge trebale bi i dalje imati smisla.
Isto ponašanje sučelja trebalo bi i dalje vrijediti.
Ta naizgled bezdogađajna kontinuiranost upravo je ono što treba dokazati.
Jedanaest jezika, jedno stanje aplikacije
Lokalizacija je još jedno područje na kojem je površno testiranje posebno opasno.
Relativno je lako provjeriti da se aplikacija može pokrenuti na drugom jeziku. Mnogo je vrijednije provjeriti što se događa kad se jezik promijeni dok aplikacija već radi i drži stanje.
COCO je promijenio jezik sučelja uživo.
Sesija je uključivala prijelaze između jezika poput:
njemački → engleski → hrvatski
dok je administracijski prikaz ostao aktivan.
COCO je promatrao mijenjaju li se elementi sučelja ispravno na mjestu:
- zaglavlja tablice
- kontrole
- gumbi
- oznake
- statusne poruke
Osnovna tablica i stanje aplikacije također su morali preživjeti taj prijelaz. To je važno jer se višejezični softver ne sastoji samo od prevedenih nizova. Promjene jezika mogu otkriti:
- zaboravljene resurse
- zastarjele oznake
- probleme s izgledom
- neprevedene statusne poruke
- probleme s kodiranjem
- reset stanja
- probleme kod ponovnog stvaranja kontrola
Prozor koji izgleda ispravno kada se pokrene izravno na hrvatskom, može se i dalje ponašati neispravno kada korisnik tijekom aktivne sesije prijeđe s njemačkog na hrvatski.
To je razlika između provjere snimke zaslona i testiranja tijeka rada.
Vraćanje stanja aplikacije
COCO je potom vratio zadanu konfiguraciju sortiranja aplikacije.
I ovdje test nije završio samim klikom.
Ocijenjen je rezultirajući poredak i potvrda prikazana kroz statusno područje aplikacije. Ova vrsta provjere može djelovati beznačajno u usporedbi s testiranjem autentifikacije ili pristupa bazi podataka.
Nije.
Enterprise aplikacije akumuliraju stotine ovakvih malih prijelaza stanja. Korisnici se na njih oslanjaju bez svjesnog razmišljanja. Softver djeluje pouzdano upravo zato što te interakcije ostaju predvidljive. Regresijsko testiranje postoji kako bi zaštitilo tu predvidljivost.
Testiranje informacija oko softvera
COCO je također otvorio dijalog "O programu" aplikacije.
Zašto testirati prozor "O programu"?
Zato što softverska dokumentacija počinje unutar samog softvera. Broj verzije, opis funkcija i licencne informacije prikazane operateru trebale bi odgovarati aplikaciji koja se stvarno izvršava.
Aplikacija može savršeno funkcionirati, a pritom prikazivati zastarjele informacije o verziji ili opisivati mogućnosti koje više ne odgovaraju releaseu.
To ne ruši bazu podataka.
Radi nešto suptilnije:
smanjuje povjerenje.
Za enterprise softver, operativna točnost uključuje i ove naizgled male detalje. COCO je stoga provjerio i njih.
Control.
Prva riječ u sloganu softify.pro Flow ujedno je i prvo načelo testnog okruženja.
Control znači znati što se testira, u odnosu na koje stanje i s kojim podacima.
Javna COCO demonstracija ne koristi produkcijske zapise klijenata.
Radi s namjerno pripremljenim demo podacima čije je očekivano stanje poznato.
To čini rezultate ponovljivima.
Također znači da se razlike između testnih izvođenja mogu istražiti umjesto da se objašnjavaju kao slučajne promjene u produkcijskim podacima.
Još važnije, COCO je osmišljen kao self-hosted AI sustav za testiranje.
Testni dokazi, snimke zaslona aplikacije i informacije o internom tijeku rada mogu ostati unutar infrastrukture pod vlastitom kontrolom klijenta ili operatera, umjesto da se prema zadanim postavkama šalju nepovezanoj vanjskoj cloud usluzi.
Za interne poslovne aplikacije to nije samo infrastrukturna preferencija. Može biti dio samog zahtjeva testiranja.
Clarity.
Automatizacija nije osobito korisna ako je njezin konačni izlaz: FAILED
praćeno stotinama redaka tehničkog izlaza koje netko mora ručno rekonstruirati prije nego shvati što se dogodilo.
COCO je osmišljen tako da čuva razumljiv trag dokaza.
Izvještaj opisuje:
- što je testirano
- koja se interakcija dogodila
- kojim redoslijedom se dogodila
- što je COCO promatrao
- koje se stanje očekivalo
- gdje se ponašanje razlikovalo kada nešto nije uspjelo
Snimke zaslona i dokazi izvršavanja mogu pratiti taj slijed.
Svrha nije skrivanje tehničkih detalja.
Svrha je učiniti rezultat razumljivim prije nego netko mora otvoriti debugger.
Inženjer bi trebao moći odgovoriti na pitanje:
Što se dogodilo? prije nego pita:
Gdje se to dogodilo u kodu?
Ta razlika dramatično skraćuje istragu kada se pojavi regresija.
Flow.
Tradicionalna UI automatizacija često razmišlja u elementima.
Pronađi selektor.
Klikni selektor.
Pronađi drugi selektor.
Provjeri vrijednost.
Taj pristup ostaje koristan, ali aplikacije se ne doživljavaju kao skupovi selektora.
Ljudi doživljavaju tijekove.
Prijavi se.
Otvori administraciju.
Pronađi korisnika.
Promijeni postavku.
Promijeni bazu podataka.
Promijeni jezik.
Provjeri rezultat.
Nastavi raditi.
COCO stoga tretira slijed kao proces, a ne kao slučajan skup kontrola.
Prati što korisnik pokušava postići i procjenjuje aplikaciju u kontekstu.
To postaje posebno vrijedno pri testiranju stvarnog poslovnog softvera, jer se kvarovi često događaju između ekrana ili između stanja, a ne unutar pojedinog gumba.
Logistički tijek rada može sadržavati narudžbu, rezervaciju zaliha, operaciju komisioniranja, otpremnicu i potvrdu isporuke.
Svaki pojedinačni ekran može izgledati ispravno dok je cjelokupni proces pogrešan.
Isto načelo ovdje vrijedi u manjem opsegu.
Administracijski prozor nije proizvod.
Tijek rada kroz njega jest.
Dokazi umjesto pretpostavki
Jedan od najvažnijih poslova COCO-a nije klikanje. To je pamćenje onoga što se dogodilo.
Ljudsko regresijsko testiranje često završava izjavom poput:
"Testirao sam i sve je izgledalo u redu."
To može biti potpuno točno.
Ali nekoliko tjedana kasnije, kad se pojavi problem, korisna pitanja su drugačija:
- Koji je release testiran?
- Koja baza podataka?
- Koji jezik?
- Koje korisničko stanje?
- Što se dogodilo prije problema?
- Što je točno bilo vidljivo?
Kojim su redoslijedom izvedene akcije?
Testna izvođenja COCO-a osmišljena su tako da ostavljaju dokaze.
To pretvara rezultat testa iz mišljenja u nešto što se može pregledati. Uspješno izvođenje time postaje korisno i samo po sebi. Uspostavlja poznato referentno stanje s kojim se kasnije ponašanje može usporediti.
COCO ne donosi odluku
Postoji važna granica u načinu na koji koristimo AI za testiranje softvera.
COCO nije namijenjen zamjeni inženjerske odgovornosti.
Ne odlučuje kakvo bi poslovno pravilo trebalo biti.
Testira ponašanje u odnosu na scenarije, zahtjeve i očekivanja definirana za aplikaciju. Za osjetljive odluke koje uključuju ovlasti, cijene, zalihe, financijske transakcije ili druga kritična poslovna stanja, definiranje ispravnog ponašanja ostaje ljudska odgovornost.
Ta razlika je bitna.
AI je izvrstan u ponavljanju detaljnog testa bez gubitka koncentracije. Izvrstan je u prikupljanju dokaza. Može pregledati ekrane, usporediti očekivano i promatrano ponašanje te objasniti odstupanja. No tvrtka i dalje definira što znači ispravno.
COCO tu definiciju čini testabilnom.
Test koji nitko ne želi ponoviti
Postoji jednostavan razlog zašto automatizacija ovdje donosi vrijednost.
Ljudski tester svakako može izvesti ovu regresijsku sesiju.
Prvi jezik dobiva punu pažnju.
Vjerojatno i drugi.
Zatim još jedan.
Zatim još jedan.
MySQL je već provjeren.
PostgreSQL tek treba provjeriti.
Test sortiranja već je izveden nekoliko puta.
Dijalog "O programu" nije se mijenjao mjesecima.
Petak je popodne.
A ljudska pažnja radi ono što ljudska pažnja prirodno radi.
Počinje optimizirati.
COCO ne.
Riječima samog COCO-a:
- Ne dosadi mi klikati isti gumb na jedanaest jezika. Ne preskačem PostgreSQL prolaz samo zato što je petak popodne. Ne pretpostavljam da je sortiranje ostalo ispravno samo zato što je radilo u prethodnom releaseu.
Za COCO se svaka regresijska sesija može tretirati kao da je prva.
To nije inteligencija koja zamjenjuje ljudskog testera.
To je automatizacija koja štiti ljudskog testera od onog dijela testiranja u kojem je ljudska pažnja najmanje vrijedna.
Od ponavljajućeg testiranja do inženjerskog dokaza
Šira svrha COCO-a nije maksimizirati broj automatiziranih akcija. Tisuću automatiziranih klikova nema smisla ako nitko ne razumije što oni dokazuju. Koristan ishod je povjerenje potkrijepljeno dokazima.
Za softify.pro Flow to znači moći reći da je release provjeren u operativnim područjima koja su bitna:
- autentifikacija
- upravljanje korisnicima
- informacije o ulogama i pristupu
- status dvofaktorske autentifikacije
- ponašanje sortiranja
- rad s MySQL-om
- rad s PostgreSQL-om
- lokalizacija uživo
- statusne povratne informacije
- informacije o aplikaciji
- licencne informacije
i da je rezultat sačuvan u obliku koji se kasnije može pregledati.
Isto se načelo proteže daleko izvan ove aplikacije.
Proces prijave može se testirati na ovaj način.
Tijek rezervacije može se testirati na ovaj način.
Logistički proces može se testirati na ovaj način.
Cross-platform desktop aplikacija može se testirati na ovaj način.
Ekrani se mijenjaju.
Poslovna pravila se mijenjaju.
Načelo ne:
definirati očekivani tijek rada, dosljedno ga izvršavati, prikupljati dokaze i učiniti rezultat razumljivim.
Zašto vlastiti softver testiramo s COCO-om
Postoji još jedan razlog zašto je softify.pro Flow važan kao COCO case study.
To je naš vlastiti softver.
To uklanja udobnu distancu koja ponekad postoji između tehnološke demonstracije i ljudi koji je izvode.
Ako je COCO namijenjen testiranju enterprise softvera, mora biti dovoljno koristan da mu povjerimo softver koji sami razvijamo i objavljujemo.
Flow stoga djeluje i kao proizvod i kao poligon za testiranje.
Nove testne mogućnosti mogu se isprobati na stvarnoj aplikaciji.
Neočekivano ponašanje može otkriti slabosti u aplikaciji, testnom planu ili samom COCO-u.
Svaka strana poboljšava drugu.
Ta povratna petlja mnogo je vrijednija od izgradnje umjetnih demonstracija osmišljenih samo da uspiju. Testni sustav ne bi trebao djelovati uvjerljivo zato što je demonstracija bila laka.
Trebao bi postati uvjerljiv zato što nastavlja pronalaziti sitnice koje bi ljudi na kraju prestali provjeravati.
Rezultat
softify.pro Flow — Administration sada ima dokumentiran i ponovljiv regresijski proces koji COCO može izvršiti prije relevantnih releasea.
Test obuhvaća oba podržana okruženja baze podataka i jedanaestjezično sučelje aplikacije, prateći aplikaciju onako kako bi je koristio administrator, umjesto da svaki ekran tretira kao izoliranu testnu metu.
COCO stvara trag dokaza koji pokazuje što je testirano, što je promatrano i kojim je redoslijedom sesija tekla.
Ti dokazi mogu ostati pod lokalnom kontrolom.
Razvojni programeri dobivaju ponovljivu polaznu točku kada se nešto promijeni.
Ljudski testeri troše manje vremena ponavljajući predvidljive interakcije, a više vremena istražujući situacije koje doista zahtijevaju prosudbu.
A softify.pro Flow dobiva nešto vrijednije od zelenog PASS pokazatelja.
Dobiva dokaz da iskustvo obećano na ekranu za prijavu nastavlja postojati i nakon što se osnovni kod promijeni.
Control. Znati što se testira i držati okruženje pod kontrolom.
Clarity. Razumjeti što se dogodilo bez potrebe za rekonstrukcijom neprozirnog automatizacijskog zapisnika.
Flow. Testirati aplikaciju kao proces koji ljudi doista koriste.
Control. Clarity. Flow.
Napisano je za softver.
Pokazalo se da jednako dobro opisuje i testnu filozofiju iza njega.