softify.pro Flow — testirano od strane COCO

21.08.2026

Control. Clarity. Flow.

Svaki ozbiljan softverski proizvod na kraju razvije drugi proizvod iza proizvoda.

Kupci ga možda nikad ne vide. Posetioci možda nikad ne saznaju da postoji. Ali administratori, operateri, i programeri se oslanjaju na njega svakog dana.

Za softify.pro Flow, ta aplikacija je Administration — operativna konzola odgovorna za upravljanje korisnicima, ulogama, nivoima pristupa, stanjima autentifikacije, okruženjima baza podataka, i drugom konfiguracijom koja drži implementaciju Flow pod kontrolom.

Njen ekran za prijavu nosi tri reči:
Control. Clarity. Flow.

Prvobitno su izabrane da opišu iskustvo koje smo želeli da administratori imaju dok upravljaju sistemom.

Ali takođe iznenađujuće dobro opisuju kako verujemo da bi softver trebalo da se testira.

To je učinilo softify.pro Flow — Administration očiglednim kandidatom za stvaran test COCO.

Ne laboratorijsku demonstraciju.
Ne kolekciju izolovanih dugmadi pripremljenih posebno za AI demo.
Stvarnu multiplatformsku desktop aplikaciju sa stvarnom logikom aplikacije, više prozora, više backend-a baza podataka, autentifikacijom, ovlašćenjima, lokalizacijom, i dovoljno stanja da naizgled male regresije budu teško uočljive ručno.

Za javnu demonstraciju prikazanu ovde, COCO je radio isključivo sa generisanim demonstracionim podacima. Aplikacija je bila licencirana za fiktivnu kompaniju Presentation GmbH, i nijedna produkciona informacija o kupcima, akreditivi, ili lični podaci nisu korišćeni.

Cilj je bio jednostavan:
Pustiti COCO da pristupi aplikaciji kao što bi to učinio tester, i utvrditi da li se kompletan administrativni tok rada i dalje ponaša onako kako softver tvrdi.

Izazov

Na prvi pogled, testiranje administrativne aplikacije izgleda jednostavno.

Otvori je.
Prijavi se.
Klikni kroz nekoliko prozora.
Proveri da li sve izgleda ispravno.

Ta pretpostavka se brzo menja kada aplikacija raste.

softify.pro Flow — Administration nije jedan statički obrazac. To je kolekcija međusobno povezanih operativnih prikaza unutar jedne ljušture aplikacije.

Između ostalog, administrator može da radi sa:

  • korisničkim nalozima
  • ulogama i nivoima pristupa
  • informacijama o autentifikaciji
  • statusom dvofaktorske autentifikacije
  • informacijama o operativnom sistemu
  • mrežnim i IP informacijama
  • konfiguracijom baze podataka
  • opcijama sortiranja i prikaza
  • izborom jezika uživo
  • informacijama o aplikaciji i licenciranju

Interfejs trenutno podržava jedanaest jezika. Aplikacija takođe radi sa MySQL i PostgreSQL backend-ovima baza podataka. Pojedinačno, nijedna od ovih funkcija ne predstavlja neuobičajen problem testiranja.

Poteškoća dolazi iz njihovih kombinacija.
Tabela korisnika može ispravno da radi na engleskom, ali da prikazuje zastareli naziv kolone na hrvatskom.
Sortiranje može ispravno da radi dok je povezano sa MySQL-om, ali da se ponaša drugačije nakon prebacivanja na PostgreSQL.

Promena jezika može ažurirati većinu elemenata interfejsa dok ostavlja jednu poruku statusa neprevedenom. Aplikacija može uspešno da prebaci baze podataka, ali da sačuva zastarele informacije iz prethodne veze. Novo izdanje može uvesti funkciju dok About dijalog i dalje opisuje prethodnu. Program ne mora da se sruši da bi bilo koja od ovih situacija bila regresija. Zapravo, neki od najneprijatnijih softverskih defekata su upravo oni gde sve izgleda kao da radi.

Aplikacija se pokreće.
Prozor se otvara.
Dugme reaguje.
Ali nešto ispod površine više nije sasvim u redu.
Zato je ponavljajuće regresiono testiranje važno.

I to je takođe tačno ona vrsta posla u kojoj ljudi postaju sve gori nakon ponavljanja iste sekvence desetine puta.

Zašto ručno testiranje postaje skupo

Testirati nešto jednom je lako.
Testirati to pouzdano nakon svakog relevantnog izdanja je drugačije.

Razmotrite samo tri dimenzije: 11 jezika interfejsa × 2 backend-a baze podataka × više tokova rada aplikacije.

Broj kombinacija brzo raste.
Dodajte različite korisničke uloge, stanja autentifikacije, ponašanje sortiranja, izmene konfiguracije, i operativna okruženja, i matrica testova postaje prevelika da bi se tretirala kao povremena ručna kontrolna lista.

Ovde regresiono testiranje često počinje da erodira.
Ne namerno.
Rok izdanja se približava.
Neko se seti da je aplikacija testirana prošle nedelje.
Programer brzo proveri najvažniji ekran.

Nemački radi.
Engleski radi.
MySQL radi.
Pretpostavka postaje:
„Ostalo je verovatno u redu."

Obično jeste. Sve dok ne dođe izdanje gde nije.
COCO postoji delom da bi uklonio tu pretpostavku iz procesa.

Šta je COCO zapravo uradio

COCO je pokrenuo softify.pro Flow — Administration iz hladnog stanja aplikacije, bez oslanjanja na prethodno pripremljen ekran ili ručno pozicioniran tok rada.

Prva interakcija bila je ista ona koja se prikazuje ljudskom administratoru: prozor za prijavu.

COCO je identifikovao interfejs za autentifikaciju koji sadrži:

  • korisničko ime
  • lozinku
  • kod za dvofaktorsku autentifikaciju

i liniju direktno ispod identiteta softify.pro Flow:
Control. Clarity. Flow.

Odatle, COCO je nastavio kroz definisanu regresionu sesiju. Poenta nije bila jednostavno da se utvrdi da li aplikacija može da se otvori.

Poenta je bila da se proveri da li je stanje aplikacije ostalo interno konzistentno dok je COCO interagovao sa njom.

Autentifikacija je tek početak

Testiranje prijave je jedan od najočiglednijih kandidata za automatizaciju, ali sama uspešna autentifikacija govori nam vrlo malo o ostatku administrativne aplikacije.

Jednom unutra, COCO se premestio u stvarno operativno okruženje. Pregledao je interfejs administracije korisnika i proverio da li su prisutne očekivane informacije.

To je uključivalo podatke kao što su:

  • korisnička imena
  • maskirane lozinke
  • indikatore 2FA
  • dodeljene uloge
  • informacije o operativnom sistemu
  • IP adrese

COCO je zatim interagovao sa tabelom umesto da je samo posmatra.
Lista korisnika je sortirana po korisničkom imenu.
Rezultujući redosled je pregledan.
Važan deo nije bio da li je klik na zaglavlje kolone proizveo neku vidljivu promenu.

COCO je proverio da li se rezultujuće stanje tabele poklapalo sa traženom operacijom.

Ta razlika je bitna.
Funkcionalni test pita:
„Da li je dugme reagovalo?"

Koristan regresioni test pita:
„Da li je aplikacija završila u ispravnom stanju?"

Testiranje granice baze podataka

softify.pro Flow podržava više od jednog backend-a baze podataka.

To čini prebacivanje baze podataka posebno važnom regresionom granicom.
COCO je promenio aktivni backend sa MySQL-a na PostgreSQL.

Nakon prebacivanja, ponovo je pregledao informacije o korisnicima.
Test je tražio više od uspešne konekcije.
Proverio je da li je aplikacija nastavila da prikazuje očekivane zapise i da li su informacije prikazane kroz interfejs ostale konzistentne.

COCO se zatim ponovo prebacio nazad.


Ovu vrstu prelaza je lako potceniti.
Korisnički interfejs može ostati vizuelno identičan dok se sloj skladištenja ispod njega potpuno menja.
Iz perspektive administratora, taj prelaz bi trebalo da deluje skoro dosadno.
Isti korisnici bi i dalje trebalo da budu razumljivi.
Iste uloge bi i dalje trebalo da imaju smisla.

Isto ponašanje interfejsa bi i dalje trebalo da važi.

Ta naizgled nedogađajna kontinuiranost je upravo ono što treba dokazati.

Jedanaest jezika, jedno stanje aplikacije

Lokalizacija je još jedna oblast gde je površno testiranje posebno opasno.

Relativno je lako proveriti da li aplikacija može da se pokrene na drugom jeziku.
Mnogo je vrednije proveriti šta se dešava kada se jezik promeni dok aplikacija već radi i drži stanje.

COCO je prebacio jezik interfejsa uživo.

Sesija je uključivala prelaze između jezika kao što su:
nemački → engleski → hrvatski
dok je administrativni prikaz ostao aktivan.

COCO je posmatrao da li su se elementi interfejsa ispravno menjali na mestu:

  • zaglavlja tabela
  • kontrole
  • dugmad
  • oznake
  • poruke statusa

Osnovna tabela i stanje aplikacije takođe su morali da prežive taj prelaz.
Ovo je bitno jer se višejezični softver sastoji od više od prevedenih stringova.
Promene jezika mogu otkriti:

  • zaboravljene resurse
  • zastarele oznake
  • probleme sa rasporedom
  • neprevedene poruke statusa
  • probleme sa kodiranjem
  • resetovanja stanja
  • probleme sa ponovnim kreiranjem kontrola

Prozor koji izgleda ispravno kada se pokrene direktno na hrvatskom može se i dalje ponašati neispravno kada korisnik prebaci sa nemačkog na hrvatski tokom aktivne sesije.

To je razlika između provere snimka ekrana i testiranja toka rada.

Vraćanje stanja aplikacije

COCO je nakon toga vratio podrazumevanu konfiguraciju sortiranja aplikacije.

Opet, test se nije završio samim klikom.

Rezultujući redosled i potvrda prikazana kroz oblast statusa aplikacije su procenjeni. Ova vrsta provere može delovati beznačajno u poređenju sa testiranjem autentifikacije ili pristupa bazi podataka.

Nije.

Preduzetničke aplikacije akumuliraju stotine ovakvih malih prelaza stanja.
Korisnici se oslanjaju na njih bez svesnog razmišljanja o njima.
Softver deluje pouzdano upravo zato što te interakcije ostaju predvidive.
Regresiono testiranje postoji da zaštiti tu predvidivost.

Testiranje informacija oko softvera

COCO je takođe otvorio About dijalog aplikacije.

Zašto testirati About prozor?

Zato što softverska dokumentacija počinje unutar samog softvera.
Broj verzije, opis funkcija, i informacije o licenciranju prikazane operateru trebalo bi da odgovaraju aplikaciji koja se zapravo izvršava.

Aplikacija može savršeno da funkcioniše dok i dalje prikazuje zastarele informacije o verziji ili opisuje mogućnosti koje više ne odgovaraju izdanju.

To ne ruši bazu podataka.
Radi nešto suptilnije:
smanjuje poverenje.

Za preduzetnički softver, operativna preciznost uključuje ove naizgled male detalje. COCO je stoga proverio i njih.

Control.

Prva reč u sloganu softify.pro Flow takođe je prvi princip test okruženja.

Control znači znati šta se testira, protiv kog stanja, i sa kojim podacima.

Javna demonstracija COCO ne koristi produkcione zapise klijenata.

Radi sa namerno pripremljenim demonstracionim podacima čije je očekivano stanje poznato.

To čini rezultate reproduktibilnim.

Takođe znači da razlike između testnih izvršavanja mogu biti istražene umesto da se objašnjavaju kao slučajne promene u produkcionim podacima.

Još važnije, COCO je dizajniran kao samostalno hostovan AI sistem za testiranje.

Dokazi testiranja, snimci ekrana aplikacije, i interne informacije o toku rada mogu ostati unutar infrastrukture pod sopstvenom kontrolom klijenta ili operatera, umesto da se podrazumevano šalju nepovezanom cloud servisu treće strane.

Za interne poslovne aplikacije, to nije samo preferencija infrastrukture. Može biti deo samog zahteva testiranja.

Clarity.

Automatizacija nije posebno korisna ako je njen konačni rezultat: FAILED
praćen stotinama linija tehničkog izlaza koje neko mora ručno da rekonstruiše pre nego što razume šta se dogodilo.

COCO je dizajniran da očuva razumljiv trag dokaza.

Izveštaj opisuje:

  • šta je testirano
  • koja interakcija se odigrala
  • u kom redosledu se to dogodilo
  • šta je COCO posmatrao
  • kakvo stanje je bilo očekivano
  • gde se ponašanje razlikovalo kada je nešto zakazalo

Snimci ekrana i dokazi izvršenja mogu pratiti tu sekvencu.
Svrha nije da se sakriju tehnički detalji.

Svrha je da rezultat bude razumljiv pre nego što neko mora da otvori debager.

Inženjer bi trebalo da može da odgovori:
Šta se dogodilo? pre nego što pita:
Gde 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 na selektor.
Pronađi drugi selektor.
Proveri vrednost.

Taj pristup ostaje koristan, ali se aplikacije ne doživljavaju kao kolekcije selektora.

Ljudi doživljavaju tokove.

Prijavi se.
Otvori administraciju.
Pronađi korisnika.
Promeni podešavanje.
Prebaci bazu podataka.
Promeni jezik.
Proveri rezultat.

Nastavi da radiš.

COCO stoga tretira sekvencu kao proces, a ne kao nasumičnu kolekciju kontrola.

Prati šta korisnik pokušava da postigne i procenjuje aplikaciju u kontekstu.

To postaje posebno vredno prilikom testiranja stvarnog poslovnog softvera, jer se greške često dešavaju između ekrana ili između stanja, ne unutar pojedinačnog dugmeta.

Logistički tok rada može sadržati narudžbinu, rezervaciju zaliha, operaciju komisioniranja, otpremnicu, i potvrdu isporuke.
Svaki pojedinačan ekran može izgledati ispravno dok je kompletan proces pogrešan.
Isti princip se primenjuje ovde na manjoj skali.
Prozor administracije nije proizvod.

Tok rada kroz njega jeste.

Dokaz umesto pretpostavke

Jedan od najvažnijih poslova COCO nije klikanje. To je pamćenje onoga što se dogodilo.
Ljudsko regresiono testiranje se često završava izjavom poput:
„Testirao sam to i sve je izgledalo dobro."

To može biti potpuno tačno.
Ali nekoliko nedelja kasnije, kada se pojavi problem, korisna pitanja su drugačija:

  • Koje izdanje je testirano?
  • Koja baza podataka?
  • Koji jezik?
  • Koje stanje korisnika?
  • Šta se dogodilo pre problema?
  • Šta je tačno bilo vidljivo?

Kojim redosledom su radnje izvršene?
Testna izvršavanja COCO su dizajnirana da ostave dokaze za sobom.

To pretvara rezultat testa iz mišljenja u nešto što se može ispitati. Uspešno izvršavanje stoga takođe postaje korisno.
Uspostavlja poznato referentno stanje sa kojim se kasnije ponašanje može uporediti.

COCO nije taj koji odlučuje

Postoji važna granica u načinu na koji koristimo AI za testiranje softvera.
COCO nema za cilj da zameni inženjersku odgovornost.

Ne odlučuje kakvo bi trebalo da bude poslovno pravilo.

Testira ponašanje u odnosu na scenarije, zahteve, i očekivanja definisana za aplikaciju. Za osetljive odluke koje uključuju ovlašćenja, cene, zalihe, finansijske transakcije, ili druga kritična poslovna stanja, definicija ispravnog ponašanja ostaje ljudska odgovornost.

Ta razlika je bitna.
AI je odličan u ponavljanju detaljnog testa bez gubljenja koncentracije. Odličan je u prikupljanju dokaza.
Može da pregleda ekrane, uporedi očekivano i posmatrano ponašanje, i objasni neslaganja. Ali poslovanje i dalje definiše šta znači ispravno.

COCO čini tu definiciju testabilnom.

Test koji niko ne želi da ponovi

Postoji jednostavan razlog zašto automatizacija ovde dodaje vrednost.
Ljudski tester može apsolutno da izvrši ovu regresionu sesiju.
Prvi jezik dobija punu pažnju.
Verovatno i drugi.
Zatim još jedan.
Zatim još jedan.
MySQL je već proveren.
PostgreSQL i dalje treba da se proveri.
Test sortiranja je već izvršen nekoliko puta.
About dijalog se nije promenio mesecima.

Petak je popodne.

A ljudska pažnja radi ono što ljudska pažnja prirodno radi. Počinje da optimizuje.
COCO ne. U duhu samog COCO:

  • Ne dosađuje mi klikanje istog dugmeta na jedanaest jezika. Ne preskačem prolaz kroz PostgreSQL zato što je petak popodne. Ne pretpostavljam da je redosled sortiranja održan zato što je radio u prethodnom izdanju.

Za COCO, svaka regresiona sesija se može tretirati kao da je prva. To nije inteligencija koja zamenjuje ljudskog testera.
To je automatizacija koja štiti ljudskog testera od dela testiranja gde je ljudska pažnja najmanje vredna.

Od ponavljajućeg testiranja do inženjerskog dokaza

Veća svrha COCO nije maksimizovanje broja automatizovanih akcija.
Hiljadu automatizovanih klikova je beznačajno ako niko ne razume šta dokazuju. Koristan ishod je poverenje potkrepljeno dokazima.

Za softify.pro Flow, to znači biti u mogućnosti da se kaže da je izdanje testirano kroz operativne oblasti koje su bitne:

  • autentifikacija
  • administracija korisnika
  • uloge i informacije o pristupu
  • stanje dvofaktorske autentifikacije
  • ponašanje sortiranja
  • rad MySQL-a
  • rad PostgreSQL-a
  • uživo lokalizacija
  • povratna informacija o statusu
  • informacije o aplikaciji
  • informacije o licenciranju

i da je rezultat sačuvan u obliku koji se kasnije može pregledati. Isti princip se skalira daleko izvan ove aplikacije.
Proces prijave se može testirati na ovaj način.
Tok rada rezervacije se može testirati na ovaj način.
Logistički proces se može testirati na ovaj način.
Multiplatformska desktop aplikacija se može testirati na ovaj način.
Ekrani se menjaju.
Poslovna pravila se menjaju.
Princip se ne menja:
definiši očekivani tok rada, izvršavaj ga dosledno, prikupljaj dokaze, i učini rezultat razumljivim.

Zašto testiramo sopstveni softver sa COCO

Postoji još jedan razlog zašto je softify.pro Flow bitan kao COCO studija slučaja.

To je naš sopstveni softver.
To uklanja udobnu distancu koja ponekad postoji između demonstracije tehnologije i ljudi koji je demonstriraju.

Ako je COCO namenjen za testiranje preduzetničkog softvera, mora biti dovoljno koristan da bismo mu poverovali sa softverom koji zaista sami razvijamo i izdajemo.

Flow stoga deluje i kao proizvod i kao poligon za dokazivanje.
Nove testne sposobnosti mogu se proveriti na stvarnoj aplikaciji.
Neočekivano ponašanje može otkriti slabosti u aplikaciji, planu testiranja, ili samom COCO.

Svaka strana poboljšava drugu.
Ta petlja povratne informacije mnogo je vrednija od izgradnje veštačkih demonstracija dizajniranih samo da uspeju. Sistem za testiranje ne bi trebalo da izgleda ubedljivo zato što je demonstracija bila laka.
Trebalo bi da postane ubedljiv zato što nastavlja da pronalazi male stvari koje bi ljudi na kraju prestali da proveravaju.

Rezultat

softify.pro Flow — Administration sada ima dokumentovan i ponovljiv regresioni proces koji COCO može da izvrši pre relevantnih izdanja.

Test obuhvata oba podržana okruženja baze podataka i interfejs aplikacije na jedanaest jezika, prateći aplikaciju onako kako bi je koristio administrator umesto da tretira svaki ekran kao izolovanu metu testiranja.

COCO proizvodi trag dokaza koji pokazuje šta je testirano, šta je posmatrano, i kojim redosledom se sesija odigrala.

Taj dokaz može ostati lokalno kontrolisan.
Programeri dobijaju reproduktibilnu početnu tačku kada se nešto promeni.
Ljudski testeri provode manje vremena ponavljajući predvidive interakcije, a više vremena istražujući situacije koje istinski zahtevaju rasuđivanje.

A softify.pro Flow dobija nešto vrednije od zelenog indikatora PASS.

Dobija dokaz da iskustvo obećano na njegovom ekranu za prijavu i dalje postoji nakon što se kod ispod njega promeni.

Control. Znaj šta se testira i drži okruženje pod kontrolom.

Clarity. Razumi šta se dogodilo bez rekonstruisanja neprozirnog dnevnika automatizacije.

Flow. Testiraj aplikaciju kao proces koji ljudi zaista koriste.

Control. Clarity. Flow.

Napisano je za softver.
Ispostavilo se da podjednako dobro opisuje i filozofiju testiranja iza njega.