softify.pro
Učitavanje …
Usluge O nama COCO – naš AI poslužitelj Portfolio Insiders Studije slučaja Korisno znati Kontakt Prijava

NEXT-GEN SOFTWARE AESTHETIC

Pure fluidity meets ultimate performance.

Novi vizualni identitet za moderne digitalne radne procese.

softify.pro — Novi vizualni identitet za moderne digitalne radne procese.

Skrolajte za više ↓

Softver izrađen onako kako moderne tvrtke doista posluju

softify.pro je softverski studio izgrađen oko jedne ideje: tehnologija bi se trebala kretati jednako fluidno kao i tvrtke koje podržava. Djelujemo na sjecištu modernog web razvoja, automatizacije procesa i primijenjene umjetne inteligencije — tri discipline koje rijetko obitavaju pod istim krovom, a sve više to moraju. Naši klijenti sežu od malih radionica koje digitaliziraju svoje prvo izdavanje računa do etabliranih srednje velikih proizvođača koji tablične proračune zamjenjuju pravim logističkim softverom. Ono što ih povezuje nije veličina, već ambicija: žele sustave koji su brzi, pouzdani i doista ugodni za korištenje, a ne samo funkcionalni. Svaki projekt kod nas počinje istim trima pitanjima: što ova tvrtka doista treba ubrzati, što već dobro funkcionira i treba biti poštovano umjesto zamijenjeno, te koji dio radnog procesa može, jednom kada je ispravno izgrađen, tiho funkcionirati sam od sebe. Odgovori oblikuju sve što slijedi, od odabrane tehnologije do plana uvođenja.

Usluge

Novi vizualni identitet za moderne digitalne radne procese.

01 — LOGISTICS

Automatizacija logistike — izrađeno za mala i srednja poduzeća u DACH regiji

Velik dio našeg rada posvećen je logističkom i operativnom softveru za mala i srednja poduzeća u Njemačkoj, Austriji i Švicarskoj. Ove tvrtke se često nalaze između dvije neatraktivne opcije: skupih poslovnih logističkih paketa dizajniranih za korporacije deset puta veće od njih, ili mozaika tabličnih proračuna, papirnatih obrazaca i telefonskih poziva koji tiho ograničava koliko brzo mogu rasti.

Gradimo srednji put — prilagođenu automatizaciju koja odgovara stvarnom načinu rada određenog skladišta, radionice ili distribucijskog tima. To može značiti digitalizaciju primitka robe i skladišnih kretanja, automatsko generiranje otpremnica i dostavnih naljepnica, povezivanje zaprimanja narudžbi s planiranjem ruta, ili jednostavno zamjenu nestabilne Excel datoteke koju razumije samo jedna osoba zajedničkim sustavom na koji se cijeli tim može osloniti. Budući da izravno surađujemo s vlasnicima i voditeljima operacija u DACH regiji, zahtjevi se prikupljaju na jeziku na kojem tvrtka doista posluje, a uvođenje se planira oko stvarnih smjena i stvarnih skladišnih prostora, a ne apstraktnog vremenskog plana.

02 — WEB

Moderni web razvoj na aktualnoj tehnologiji

Dizajniramo i razvijamo web aplikacije i stranice koristeći aktualnu, aktivno održavanu tehnologiju, a ne zastarjele okvire koji se održavaju na životu iz navike. To znači čist PHP 8.4 na pozadinskom sustavu tamo gdje je klasična poslužiteljski generirana aplikacija ispravan izbor, moderni JavaScript tamo gdje je interaktivnost bitna, te MySQL 8 za podatke koji moraju ostati dosljedni i pretraživi godinama, a ne samo prvih šest mjeseci nakon lansiranja. Svaki projekt se planira i za stolna računala i za mobilne uređaje od prve skice, a ne prilagođava naknadno: vrijeme učitavanja, prijelomne točke prikaza i dodirne interakcije dio su specifikacije, a ne naknadni dodatak.

Osim vidljivog sučelja, važno nam je kako stranica izgleda iznutra: čitljiv kod, shema baze podataka koju neće trebati ponovno graditi kod sljedećeg zahtjeva za novom funkcijom, te koraci implementacije koje bi i drugi razvojni programer mogao slijediti bez potrebe da nas nazove. Web stranica koja danas dobro funkcionira, a za tri godine se i dalje može uredno proširivati — to je za nas prava definicija „modernog".

03 — AI / COCO

COCO — naš vlastiti AI server za automatizirano testiranje softvera

Za poslovne (enterprise) klijente upravljamo i održavamo vlastiti namjenski AI server pod nazivom COCO. Za razliku od općenitog chatbota naknadno umetnutog u radni proces, COCO je namjenski izgrađen i samostalno hostiran posebno za automatizirano testiranje web softvera te multiplatformnih desktop aplikacija — od prijave i procesa autentifikacije do potpunih višekoračnih poslovnih procesa.

COCO planira testni scenarij, izvršava ga nad stvarnom aplikacijom, bilježi snimke zaslona prije i poslije te snimke izvršavanja kao dokaz, i izrađuje jasnu procjenu što je prošlo, što nije uspjelo i zašto — uključujući granične slučajeve poput ponovljenih neuspjelih prijava, zaključavanja računa i procesa oporavka, koje je zamorno i podložno greškama testirati ručno. Budući da server radi lokalno pod našim upravljanjem, poslovni klijenti zadržavaju punu kontrolu nad time gdje se pohranjuju testni podaci i snimke zaslona, bez slanja internog prometa aplikacije prema vanjskoj cloud usluzi po zadanim postavkama.

COCO — naš vlastiti AI server za automatizirano testiranje softvera

Za poslovne (enterprise) klijente upravljamo i održavamo vlastiti namjenski AI server pod nazivom COCO. Za razliku od općenitog chatbota naknadno umetnutog u radni proces, COCO je namjenski izgrađen i samostalno hostiran posebno za automatizirano testiranje web softvera te multiplatformnih desktop aplikacija — od prijave i procesa autentifikacije do potpunih višekoračnih poslovnih procesa.

COCO planira testni scenarij, izvršava ga nad stvarnom aplikacijom, bilježi snimke zaslona prije i poslije te snimke izvršavanja kao dokaz, i izrađuje jasnu procjenu što je prošlo, što nije uspjelo i zašto — uključujući granične slučajeve poput ponovljenih neuspjelih prijava, zaključavanja računa i procesa oporavka, koje je zamorno i podložno greškama testirati ručno. Budući da server radi lokalno pod našim upravljanjem, poslovni klijenti zadržavaju punu kontrolu nad time gdje se pohranjuju testni podaci i snimke zaslona, bez slanja internog prometa aplikacije prema vanjskoj cloud usluzi po zadanim postavkama.

COCO postavljamo, konfiguriramo i održavamo zasebno za svakog poslovnog klijenta — definirajući testne planove relevantne za njihovu specifičnu aplikaciju, usklađujući pragove pouzdanosti, te odlučujući od slučaja do slučaja kada rezultat treba eskalirati na ljudsku provjeru. Cilj nije zamijeniti QA tim, već mu dati neumornog kolegu koji provodi ponavljajuće regresijske testove prije svakog izdanja, prije nego što uopće treba intervenirati čovjek.

COCO automated login test report
COCO — automated login & account-lockout test report
COCO AI analysis panel
COCO — plain-language AI analysis of a completed test run

Zašto softify.pro

Namjerno ostajemo dovoljno mali kako bi svaki projekt vodili ljudi koji su bili prisutni na početnom planiranju, a ne proslijeđeni u red čekanja. To znači kraće petlje povratnih informacija, manje nesporazuma i tim koji se i nakon šest mjeseci sjeća zašto je donesena određena odluka. Dosadnu, dokazanu pouzdanost pretpostavljamo jurnjavi za trendovima: tehnološki paket bira se jer odgovara problemu i jer ga za pet godina može održavati netko drugi osim nas, a ne zato što je bio popularan u sprintu u kojem je odabran. Ako tablični proračun doista i dalje obavlja posao bolje nego što bi to učinio softver po mjeri, reći ćemo vam i to iskreno — naš cilj je radni proces koji doista teče brže, a ne jednostavno viši softverski račun.

Odabrani radovi

Mali odabir radova koje smijemo javno pokazati — dodatne studije slučaja i poslovne projekte predstavljamo na upit uz NDA.

Auto Detailing Đeki – Od web stranice do digitalne servisne platforme autodetailing-deki.pro

Auto Detailing Đeki – Od web stranice do digitalne servisne platforme

Višejezična platforma za detailing vozila – od izračuna cijene preko rezervacije do transparentnog praćenja narudžbi, upravljana iz jednog centralnog backofficea.

Koralpenhaus

Koralpenhaus

Regionalna prezentacijska i rezervacijska web stranica u alpskom području, izrađena s naglaskom na jasnu strukturu, brzo učitavanje i jednostavno održavanje sadržaja.

Dexosano

Dexosano

Moderna web platforma temeljena na PHP-u, razvijena istim pristupom usmjerenim na performanse koji softify.pro primjenjuje na svakom klijentskom projektu.

softify.pro - Insiders

Jedno skladište. Jedna istina.

Jedno skladište. Jedna istina.

Postoji jednostavan način da softver za skladište izgleda uvjerljivo.
Otvorite nadzornu ploču.
Prikažite nekoliko zelenih brojeva.
Dodajte grafikon.
Stavite malo zaliha na kartu skladišta.
Završite s izvještajem.
Sve izgleda u redu.
A ipak sve može biti pogrešno.
Jer skladištu nije važno koliko dobro izgleda nadzorna ploča.
Njemu je važno slaže li se svaki dio sustava oko onoga što se stvarno dogodilo.
To je postao zanimljiv dio najnovijeg eksperimenta softify.pro Flow.
Ne još jedan zaslon.
Ne još jedan KPI.
Ne još jedan izvještaj.
Nešto mnogo manje vidljivo.
Dosljednost.
Počelo je sa skladištem.
Trenutna demonstracija softify.pro Flow radi s nekoliko sintetičkih okruženja skladišta.
Različiti ID-ovi skladišta.
Različiti kapaciteti.
Različite strukture zona.
Bez proizvodnih zaliha.
Bez podataka o kupcima.
Bez stvarnih operativnih informacija.
No procesna logika ponaša se kao da je sve to bitno.
Jer u stvarnoj logistici, jest.
Kad se skladište jednom odabere, taj kontekst postaje dio svega što slijedi.
Flowovi.
SSCC-ovi.
Kretanja.
Operateri.
Analitika.
Izvještaji.
To zvuči očito.
Postaje znatno manje očito kada isti proces počne se pojavljivati u nekoliko različitih dijelova aplikacije.
Zatim smo otvorili drugi prikaz.
Operational Analytics.
Odjednom je skladište izgledalo potpuno drugačije.
Bez skladišnih pozicija.
Bez strelica kretanja.
Umjesto toga:

  • dovršeni Flowovi,
  • aktivne narudžbe,
  • iskorištenost skladišta,
  • iznimke,
  • ulaz,
  • izlaz,
  • vrijeme obrade.

Vizualni prikaz se promijenio.
Skladište nije.
Ta razlika postala je bitna.
Jer ispod KPI-jeva i dalje su bili pojedinačni zapisi.
ID-ovi Flowa.
SSCC-ovi.
Zone.
Statusi.
Operateri.
Vremena obrade.
Drugačiji prikaz.
Ista operativna stvarnost.
Zasad dobro.

Operational Analytics — zbirno stanje skladišta, uz pojedinačne Flow zapise koji ostaju vidljivi.

Flow.

88% je korisno samo ako sustav to može objasniti.
Pretpostavimo da nadzorna ploča kaže:
Iskorištenost skladišta: 88%.
Korisno.
Ali nepotpuno.
Neke pozicije su zauzete.
Neke su rezervirane.
Neke ostaju slobodne.
Ta stanja nisu zamjenjiva.
Broj postaje pouzdan tek ako sustav i dalje može objasniti odakle dolazi.
Pet dovršenih Flowova?
Pokažite ih.
Dvije aktivne narudžbe?
Pokažite ih.
Jedna iznimka?
Koja?
88% iskorištenosti?
Što je zauzeto?
Što je rezervirano?
Što ostaje slobodno?
Nadzorna ploča trebala bi sažimati stvarnost.
Ne bi je trebala zamijeniti.
Zatim smo promijenili jezik.
Nizozemski.
Skladište je ostalo isto.
ID-ovi Flowa ostali su isti.
SSCC-ovi ostali su isti.
Operateri su ostali povezani sa svojim zapisima.
Promijenio se samo jezik.
Kasnije se isto operativno stanje pojavilo na hrvatskom.
Zatim na francuskom.
Tu višejezični softver postaje mnogo zanimljiviji od prevedenih gumba.
Loš prijevod lako se primijeti.
Promjena stanja uzrokovana promjenom jezika mnogo je opasnija.
Zamislite da prelazite s njemačkog na francuski i tiho izgubite odabrani Flow.
Ili da se filtar ponovno izgradi na krivom skladištu.
Ili da se prikaže ispravan SSCC unutar krivog procesnog konteksta.
Sučelje bi i dalje moglo izgledati savršeno.
Sustav ne bi bio.
Flow stoga slijedi jednostavno pravilo:
Jezik smije mijenjati riječi. Ne smije mijenjati istinu.
Zatim je Flow dobio povijest.
Browse & Drill-down se ne trudi osobito da izgleda impresivno.
Možda je upravo zato koristan.
Odaberite Flow.
Pojavljuje se njegov kontekst.
Skladište.
Zona.
Status.
Operater.
SSCC.
A zatim lanac dokumenata.
ASN.
Prijem robe.
Kretanje u skladištu.
Nalog za komisioniranje.
Komisioniranje.
Otprema.
FLOW.
Sedam koraka.
Proces više nije samo trenutno stanje.
Ima prošlost.
A to mijenja pitanje.
Umjesto:
Što se događa?
možemo pitati:
Kako smo došli ovdje?
To je mnogo bolje pitanje kada nešto na kraju pođe po zlu.

Jedan Flow, jedan SSCC, jedan lanac dokumenata — od ASN-a do dovršetka.

Flow.


SSCC postaje nit vodilja.
Isprva SSCC izgleda kao ono što jest.
Identifikator.
Dugi broj u tablici.
No kroz Flow postaje nešto korisnije.
Nit vodilja kroz proces.
Slijedite je i druge stvari počinju se povezivati.
Skladište.
Flow.
Zona.
Status.
Operater.
Lanac dokumenata.
Naposljetku izvještaj.
Isti fizički logistički objekt sada je vidljiv iz nekoliko različitih dijelova aplikacije.
Korisno.
Također opasno.
Jer svaki dodatni prikaz stvara novu priliku da sustav ispriča drugačiju priču.
I tu stvari postaju zanimljive.
Pretpostavimo da Analytics kaže da je Flow aktivan.
Drill-down kaže da SSCC pripada tom Flowu.
Lanac dokumenata kaže da je operacija dalje napredovala.
Izvještaj kaže nešto drugo.
Koje je točno?
Ovo nije problem specifičan za Flow.
To je jedan od najstarijih problema u poslovnom softveru.
Različiti dijelovi istog sustava postupno razvijaju vlastitu verziju stvarnosti.
Jedan zaslon čita transakcijsko stanje.
Drugi čita agregat.
Treći se oslanja na predmemorirane podatke.
Izvještaj izračunava nešto malo drugačije.
Iznimka se operativno riješi, ali nestane iz izvještavanja.
Svaka komponenta radi.
Cijeli sustav laže.
Obično uljudno.
Stoga smo otvorili Report Center.
Dnevni operativni pregled.
Zalihe i popunjenost.
Učinak Flowa.
Sljedivost SSCC-a.
Iznimke i SLA.
Ista operativna priča pojavila se ponovno.
Dovršeni Flowovi.
Aktivne narudžbe.
Iskorištenost skladišta.
Iznimke.
Ulaz.
Izlaz.
Vrijeme obrade.
No ovaj put pitanje nije bilo izgleda li izvještaj ispravno.
Pitanje je bilo:
Može li se sam obraniti?
Dobar izvještaj daje vam broj.
Bolji sustav može objasniti odakle taj broj dolazi.

Izvještavanje iz istog operativnog stanja — ne druga verzija stvarnosti.

Flow.
Flow.
Flow.
Flow.


Iznimka je i dalje bila tu.
Jedan od tiših detalja pokazao se jednim od važnijih.
Demonstracijski podaci sadrže iznimku.
Pojavljuje se u Analyticsu.
Pojavljuje se u Drill-downu.
Pojavljuje se u sljedivosti SSCC-a.
Pojavljuje se u Report Centeru.
I ostaje vidljiva u Exceptions & SLA.
Upravo to bi se trebalo dogoditi.
Operativni oporavak od iznimke ne znači da iznimka treba nestati iz povijesti.
"Proces se nastavio" i "ništa se nije dogodilo" nisu ista tvrdnja.
U logistici ta razlika ima značaj.
U ovom trenutku imali smo problem s testiranjem.
Ne problem sa softverom.
Problem s testiranjem.
Sada smo imali isto skladište prikazano kao:

  • analitika,
  • pojedinačni Flowovi,
  • povijesti SSCC-a,
  • lanci dokumenata,
  • izvještaji,
  • i prikazi iznimaka.

Svaki od njih mogao se testirati zasebno.
Otvoriti.
Kliknuti.
Filtrirati.
Provjeriti.
Proći.
Sljedeći.

To bi bilo jednostavno.
No propustili bismo zanimljiv dio.
Jer šest zelenih kvačica ne dokazuje da se šest prikaza međusobno slaže.
Stiže COCO.
Ponovno.
COCO se s Flowom već susretao ranije.
Autentifikacija.
Korisnici.
Uloge.
Okruženja baza podataka.
Jezici.
Izvršavanje na desktopu.
Zatim je došla logistika.
Skladišta.
Zalihe.
Komisioniranje.
Kretanja.
Iznimke.
Dokumenti.
Ubuntu.
Red Hat Enterprise Linux.
Ovaj put smo COCO-u dali nešto malo drugačije.
Ne zaslon za provjeru.
Priču za praćenje.
Uzmi ovo skladište.
Uzmi ovaj Flow.
Uzmi ovaj SSCC.
Otvori Analytics.
Otvori Drill-down.
Promijeni jezik.
Pogledaj ponovno.
Otvori izvještaj.
Pronađi isti Flow.
Pronađi isti SSCC.
Pronađi iznimku.
Usporedi.
Zatim usporedi ponovno.

COCO prati isti operativni kontekst kroz softify.pro Flow — analitiku, sljedivost, promjene jezika i izvještavanje.

To mijenja prirodu testa.

Pitanje više nije:

  • Radi li svaki modul?

Postaje:

  • Vjeruju li svi moduli da se dogodila ista stvar?

Mnogo bolje pitanje.
Mnogo manje ugodno.
Skladišni sustav trebao bi imati jedno pamćenje.
Operateri možda vide pozicije.
Voditelji skladišta možda vide KPI-jeve.
Podrška možda koristi drill-down.
Revizori možda koriste izvještaje.
COCO možda vidi sve njih.
No ispod tih perspektiva trebala bi postojati jedna povijest.
Jedan Flow ne bi trebao dobiti nekoliko biografija ovisno o tome koji je modul otvoren.
Jedan SSCC ne bi trebao imati nekoliko prošlosti.
Jedna iznimka ne bi trebala postojati samo gdje je zgodno.
Jedno skladište ne bi trebalo postati drugo skladište jer se promijenio jezik sučelja.
O tome zapravo govori trenutni eksperiment Flow.
Ne o nadzornim pločama.
Ne o izvještajima.
Čak ni o pojedinačnim zaslonima.
O jednoj operativnoj istini, izraženoj na različite načine.
Kontrola.
Poznavati skladište.
Poznavati stanje.
Znati što se kreće.
Znati kojem procesu pripada.
Jasnoća.
Pretvoriti KPI-jeve natrag u zapise.
Pretvoriti zapise u povijest.
Pretvoriti iznimke u dokaze.
Pretvoriti SSCC u nešto sljedivo.
Flow.
Skladište se odabire.
Analytics ga počinje opisivati.
Flow napreduje.
SSCC ostaje pridružen.
Lanac dokumenata raste.
Iznimka se pojavljuje.
Proces se nastavlja.
Izvještaj pamti.
Zatim se jezik mijenja.
Skladište je i dalje isto.
Flow je i dalje isti.
Povijest je i dalje ista.
To je bio dio koji smo očekivali.
Ono što se dogodilo poslije bilo je zanimljivije.
COCO je prestao neovisno testirati prikaze.
Počeo ih je uspoređivati.
Neko vrijeme nije se dogodilo ništa neobično.
Isto skladište.
Isti Flow.
Isti SSCC.
Ista priča.
Ponovno.
Ponovno.
Ponovno.
A onda se COCO zaustavio.
Ne zato što je aplikacija pukla.
Nije.
Ne zato što je test u uobičajenom smislu propao.
Nije.
Zaustavio se jer su dva savršeno razumna odgovora proizvela treće pitanje.

Znamo koje je pitanje.
Flow zna zašto postoji.
COCO zna gdje sljedeće gledati.

Ostalo može pričekati.


Control. Clarity. Flow.

Objavljeno: 31.08.2026

Stalna poveznica →

COCO ponovno udara

COCO ponovno udara

Vjerojatno bismo trebali prestati davati COCO-u ideje.

Prethodni eksperiment trebao je biti dovoljan.

Prava aplikacija.

Prava navigacija.

Korisnici.

Uloge.

Baze podataka.

Jezici.

Dokazi.

Uvažena studija slučaja.

Čist zaključak.

Onda je netko to pokazao: Logistics in Motion.

To je vjerojatno bila greška.

Počelo je s tri skladišta

Ništa posebno uzbudljivo.

…

Pismo od COCO-a

Pismo od COCO-a

Inženjeru ili inženjerki koji/koja prvi put otvara ovaj repozitorij:

Dobrodošli.

Možda ste ovdje jer je nešto zakazalo.

Usluga je prestala odgovarati.

Deployment se ponašao neočekivano.

Uzbuna vas je probudila usred noći.

Ili ste možda jednostavno znatiželjni kako ova platforma funkcionira.

Što god vas dovelo ovamo,

znajte da je ovaj projekt izgrađen upravo za trenutke poput ovog.

Ne kako bi se teški problemi uklonili.

Već kako bi teški problemi postali razumljivi.

Pronaći ćete kod.

Pronaći ćete dokumentaciju.

Pronaći ćete specifikacije.

No, još važnije,

…

Studije slučaja

softify.pro Flow — Testirao COCO

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.

Stalna poveznica →

Korisno znati

Pure fluidity meets ultimate performance: što poslovni softver zaista čini brzim

Pure fluidity meets ultimate performance: što poslovni softver zaista čini brzim

Voditelj skladišta loš softver ne prepoznaje po nacrtu arhitekture. Prepoznaje ga po tome što zaposlenici opet posežu za telefonom, dvaput evidentiraju otpremnice ili nakon smjene ne mogu reći koja je roba doista stigla. Pure fluidity meets ultimate performance stoga ne smije biti puki vizualni zahtjev. Za poslovni softver to znači da se postupak doima prirodno i istodobno pouzdano funkcionira u stvarnim uvjetima.

Elegantno sučelje bezvrijedno je ako zapinje pri slabom WLAN-u u skladištu. Brza aplikacija također malo pomaže ako nameće slijed rada koji na rampi nitko ne može slijediti. Dobri digitalni alati povezuju oblikovanje, brzinu i razumijevanje procesa. Smanjuju trenje, a da poslovanje ne guraju u unaprijed izrađenu standardnu logiku.

Pure fluidity meets ultimate performance je poslovno pitanje

Fluidnost se često miješa s animacijama, velikim slikama i glatkim prijelazima. To može odgovarati modernom brendu. U radnoj svakodnevici se međutim pokazuje drugačije: ulaz robe može se knjižiti bez zaobilaženja. Zaposlenik pronalazi narudžbu i kada je poznat samo referentni broj. Greška se jasno imenuje, umjesto da nestane u kriptičnoj poruci.

Performanse su također više od dobre vrijednosti u testu preglednika. Odlučujuće su vrijeme odziva kod narudžbe s mnogo stavki, stabilnost na kraju mjeseca i pitanje mogu li pet osoba raditi istodobno a da si međusobno ne prepisuju stanja podataka. Tu spada i čisto postupanje s prekidima veze, ovlaštenjima i blokiranim računima.

Oboje je nerazdvojno. Ako maska reagira odmah, ali ima nejasna obvezna polja, ostaje naporna. Ako je tijek pametno modeliran, a stranica pri svakom knjiženju čeka dvije sekunde, zaobilazi se. Fluidnost nastaje ondje gdje sustav podupire sljedeću smislenu radnju i tehnički ostaje dovoljno brz da misao ne prekine.

Sučelje slijedi radni put, a ne organigram

Mnoga standardna rješenja strukturiraju svoje izbornike po modulima: nabava, prodaja, skladište, izvještavanje, administracija. S gledišta proizvoda to je razumljivo. Na podu skladišta rad se međutim često počinje situacijom: kamion stoji, paleta nedostaje, kupac treba dokaz o isporuci ili pošiljku treba još prije zaključenja prijema označiti naljepnicom.

Dobra individualna aplikacija stoga počinje tim situacijama. Koja je informacija dostupna? Tko odlučuje? Što treba dokumentirati? Što se kasnije više ne smije mijenjati? Tek nakon toga odlučuje se koja je maska za unos, provjera ili automatizacija potrebna.

To ne znači svaki postojeći tijek nepromijenjen uliti u softver. Neke su tablice doista presklone greškama, neka odobrenja nepotrebno spora. No Excel popis koji funkcionira ne mora nužno biti zamijenjen projektom. Ako ga održava samo jedna osoba, poznaje malo iznimaka i ostaje sljediv, može biti prikladan alat. Softver se isplati kada poboljšava koordinaciju, smanjuje izvore greške ili pouzdano stavlja informacije na raspolaganje više sudionika.

Manje klikova nije automatski bolje

Zahtjev za što manje klikova zvuči razumno, ali može voditi u pogrešnom smjeru. Kod nepovratnog skladišnog knjiženja kratka je potvrda smislena. Kod odobrenja otpreme vidljiva provjera uvjerljivosti može spriječiti skupo naknadno popravljanje. Pravi tijek ovisi o riziku.

Odlučujuće je da dodatni koraci imaju jasnu svrhu. Potvrda se ne bi trebala pojavljivati samo zato što je framework lako stvara. Treba stajati točno ondje gdje ljudi moraju svjesno donijeti odluku. Tako aplikacija ostaje brza a da ne postane lakomislena.

Performanse nastaju u arhitekturi, a ne u zadnjem sprintu

Tko web stranicu ili web aplikaciju ubrzava tek neposredno prije go-livea, najčešće liječi simptome. Velike upite, nejasne modele podataka i naknadno dodane posebne slučajeve ne može se trajno ispraviti jednim danom optimizacije.

Pouzdana osnova počinje bazom podataka koja odgovara stvarnim odnosima u poslovanju. U MySQL 8 kretanja, dokumenti, promjene statusa i radnje korisnika trebaju sljedive ključeve i smislene indekse. Zaliha se ne smije pojavljivati samo kao broj ako se kasnije mora razjasniti kojim je knjiženjem nastala. Istodobno se ne mora svaka povijesna informacija ponovno izračunavati pri svakom otvaranju stranice.

Kod modernih web aplikacija relevantno je i razdvajanje odgovornosti. PHP 8.4 može poslovna pravila prikazati jasno i održivo, dok se moderni JavaScript ciljano koristi za reaktivna područja. To nije vjeroispovijest za određeni stack. To je pitanje održavanja: mogu li se promjene za šest mjeseci sigurno provesti? Je li vidljivo gdje neko pravilo vrijedi? Može li se greška reproducirati, umjesto da se samo pretpostavlja?

Performanse uz to trebaju granice. Polja za pretraživanje trebaju smislen minimalan broj znakova ili preciznu logiku filtriranja ako su zamislivi milijuni zapisa. Velike liste trebaju stranice ili stupnjevite procese naknadnog učitavanja. Slike i dokumenti ne bi smjeli blokirati kritični radni tijek. Te odluke djeluju nespektakularno. Upravo zato često ostaju vrijedne dulje od upadljivog frontend efekta.

Vidljiva brzina stvara povjerenje

Ne može se svaki proces završiti za manje od sekunde. Ispis naljepnica, sučelje prema dostavnoj službi ili provjera prema vanjskim podacima povremeno traže vrijeme. Odlučujuće je tada kako aplikacija postupa s čekanjem.

Jasan status poput „Otpremna naljepnica se izrađuje“ bolji je od zamrznutog gumba. Nakon završetka trebalo bi biti vidljivo koji je broj stvoren i smije li se postupak ponovno pokrenuti. Ako vanjska usluga nije dostupna, tim treba razumljivu mogućnost postupanja umjesto poruke o grešci za programere.

To je i pitanje integriteta podataka. Dvoklik ne smije stvoriti dvije isporuke. Prekinuti proces ne smije šutke ostaviti napola gotov zapis. Dobri sustavi planiraju takve slučajeve jer će se u svakodnevici dogoditi. Osobito kod promjenjivih smjena, vremenskog pritiska i mobilnih uređaja iznimka nije rubna tema.

Kvaliteta postaje vidljiva prije greške

Za aplikacije s mnogo varijanti procesa nije dovoljno na kraju ručno proći nekoliko putova. Promjene cijena, uloga, validacija ili sučelja mogu izazvati posljedice na vrlo udaljenom mjestu. Ovdje automatizirano testiranje postaje dio performansi: ne samo tehnički, nego organizacijski.

Testni sustav trebao bi moći provjeravati stvarne tijekove, primjerice stvaranje narudžbe, promjenu stavke, izradu otpremnice i kontrolu ovlaštenja. Trebao bi bilježiti dokaze i formulirati rezultate tako da ih stručni odjeli mogu smjestiti. Rečenica poput „Proces otpreme nije dovršen nakon promjene adrese“ pomaže više od nekomentiranog stack tracea.

Za timove osviještene o sigurnosti relevantno je i mjesto na kojem ti testovi teku. Ako snimke zaslona, pristupni podaci, testni slučajevi ili interni koraci aplikacije ne smiju napustiti poduzeće, samostalno hostiran pristup često je smisleniji od vanjske cloud usluge. Uz COCO automatizirani testovi za web i Windows aplikacije mogu se izvoditi na namjenskom okruženju. To nije potrebno svakom timu. Kod osjetljivih podataka, reguliranih područja ili internih stručnih aplikacija kontrola nad testnim podacima ipak može biti odlučujuća prednost.

Oblikovanje je dobro kada olakšava rad

Snažan vizualni identitet može stvoriti povjerenje. Pokazuje da poduzeće ozbiljno shvaća svoju digitalnu prisutnost. U operativnom sustavu oblikovanje međutim mora činiti još više: orijentaciju pod vremenskim pritiskom. Kontrast, tipografija, jasna stanja i razumljive oznake odlučuju hoće li netko postupak sigurno dovršiti ili će pitati kolegu.

Suzdržanost je tu često bolji izbor. Nadzorna ploča s deset obojenih pokazatelja može izgledati dojmljivo, a ipak sakriti jedino relevantno odstupanje. Reducirani prikaz koji čini vidljivima otvorene ulaze robe, nedostajuća skeniranja i ugrožene rokove isporuke korisniji je. Pitanje ne glasi koliko je sučelja moguće, nego koja informacija poboljšava odluku.

To vrijedi i za responzivne aplikacije. Mobilna sposobnost ne znači stisnuti svaki desktop zaslon u manji format. Pametni telefon na ulazu robe možda treba samo skeniranje, količinu, skladišno mjesto i potvrdu. Opsežna naknadna obrada možda pripada većem zaslonu. Različiti uređaji zaslužuju različite prioritete, iako pristupaju istoj pouzdanoj podatkovnoj osnovi.

Smisleno mjerilo za sljedeću odluku

Prije nego tim odluči o novoj platformi, automatizaciji ili potpunoj novogradnji, pomaže jednostavna provjera: postaje li tijek za ljude koji ga svakodnevno izvode jasniji, brži ili sigurniji? I može li se rješenje još razumjeti kada se promijene zahtjevi, zaposlenici ili sučelja?

Ako su oba odgovora pouzdana, od lijepog obećanja nastaje upotrebljiv sustav. Tada se pure fluidity meets ultimate performance ne pokazuje na slajdu, nego na mirnom radnom danu na kojem narudžbe, podaci i odluke teku dalje bez nepotrebnog trenja.

Stalna poveznica →

SaaS Flow Web: sigurno uvođenje workflowa tijekom tekućeg poslovanja

SaaS Flow Web: sigurno uvođenje workflowa tijekom tekućeg poslovanja

Ulaz robe ne ostaje ležati zato što tim ne poznaje još jedan softver. Ostaje ležati zato što se informacije gube između e-pošte, papirnatog obrasca, Excel datoteke i telefonskog razgovora. Kod SaaS-a - „Flow Web“ na flow.softify.pro - stoga prvo pitanje ne bi trebalo biti sučelje. Odlučujuće je prikazuje li usluga konkretan radni tijek pouzdano - i u užurbane dane, uz promjenjive nadležnosti i kada isporuka ne odgovara planu.

Za mala i srednja poduzeća SaaS je često smislen jer ne moraju prvo graditi vlastite poslužitelje, izdanja i osnovne funkcije. No to nije slobodan prolaz za svaki proces. Tko uvede alat koji svakodnevicu čini kompliciranijom ili važne podatke potiskuje u nejasne sporedne liste, ne digitalizira rad. Samo premješta trenje.

Što SaaS „Flow Web“ mora pružiti

Web workflow je dobar kada zaposlenici bez tumačenja znaju što je sljedeće za učiniti. Kod prijema robe to može značiti: evidentirati isporuku, provjeriti količine prema narudžbi, dokumentirati odstupanje, dodijeliti skladišno mjesto i po potrebi obavijestiti odgovornu osobu. Tijek ne mora biti spektakularan. Mora biti sljediv, brz i ponovljiv.

Upravo tu leži razlika između opće aplikacije za zadatke i stručnog procesnog sustava. Aplikacija za zadatke može stvoriti stavku pod nazivom „Provjeriti isporuku“. Stručni workflow može dodatno zabilježiti o kojoj se isporuci radi, tko ju je preuzeo, koja je stavka bila oštećena, koje fotografije postoje i čeka li se naknadna isporuka. Ti podaci tada ne stoje kao slobodan tekst u jednom komentaru, nego ondje gdje ih sljedeća osoba treba.

Za rješenje poput Flow Web na flow.softify.pro provjera bi stoga trebala početi od postupaka, a ne od popisa funkcija. Poduzeću s pet skladišnih kretanja dnevno treba nešto drugo nego otpremnom timu s više cut-off vremena, različitim prijevoznicima i redovitim upravljanjem djelomičnim isporukama. SaaS nije zamjena za razumijevanje procesa.

Prvo imenovati usko grlo, zatim konfigurirati

Mnogi projekti digitalizacije počinju preširoko: „Želimo digitalizirati skladište.“ To zvuči uvjerljivo, ali brzo vodi do sustava s previše maski, posebnih slučajeva i materijala za edukaciju. Bolja je precizna izjava poput: „Ulazi robe knjiže se tek sljedeći dan jer otpremnice na kraju smjene leže na stolu.“

Iz takve rečenice može se izvesti smislen početak. Prva verzija može evidentirati otpremnice, potvrditi artikle i količine, označiti odstupanja i proslijediti knjiženje nadležnom mjestu. Kada taj tijek funkcionira, naljepnice, ocjene dobavljača ili automatski prijedlozi narudžbi mogu se dodati kasnije. Ne pripada svaki smisleni korak proširenja u prvo uvođenje.

Ni dobro održavana tablica ne mora otići ako ispunjava svoju svrhu. Primjerice, mjesečna analiza s malo sudionika u postojećoj datoteci može biti jeftinija i transparentnija od vlastitog modula. SaaS se isplati ondje gdje se informacije koriste više puta, vremena obrade su kritična ili greške nastaju iz prekida medija.

Prava pitanja prije uvođenja

Prije konfiguracije tim bi trebao odigrati stvarni postupak od početka do kraja. Ne idealni proces, nego slučaj koji u svakodnevici stvara probleme: pogrešna količina, nedostajuća referenca, hitna otprema ili narudžba s posebnim odobrenjem. Pritom se pokazuju pravila koja sustav doista mora prikazati.

Relevantne su među ostalim ove točke: tko smije stvoriti, mijenjati ili zatvoriti postupak? Koji su unosi obvezni, a koji samo korisni? Kada treba obavijestiti rukovoditelja? Koji se podaci predaju računovodstvu, otpremi ili korisničkoj službi? I što se događa kada je WLAN u skladištu slab ili zaposlenik više nema pristupne podatke?

Odgovori određuju kvalitetu uvođenja snažnije od dugog kataloga vizualnih zahtjeva. Čist proces uloga, razumljiva poruka o grešci i dokumentiran korak odobrenja u pogonu obično sprječavaju više truda nego dodatni izvještaj na početnoj stranici.

Pohrana podataka i uloge nisu sporedna stvar

SaaS se često tretira kao puko pitanje rukovanja. Za voditelje pogona i IT-a međutim je barem jednako važno što se događa s podacima. To se odnosi na matične podatke, informacije o isporukama, podatke o zaposlenicima, fotografije šteta i moguće podatke o kupcima. Prije uvođenja trebale bi biti jasne nadležnosti, čuvanje i mogućnosti izvoza.

Praktično to znači: poduzeće mora znati koji su podaci u sustavu, tko ima administratorski pristup i kako se podaci stavljaju na raspolaganje pri promjeni ili prestanku ugovora. Izvoz koji je dostupan samo kao teško čitljiva PDF datoteka rijetko pomaže. Za operativne podatke odlučujući su strukturirani, upotrebljivi formati.

I koncept ovlaštenja zaslužuje konkretnu pozornost. U skladištu ne mora svaka osoba vidjeti cijene, uvjete kupaca ili globalne postavke. Istodobno preuska dodjela prava ne smije blokirati tijek. Smislene su uloge usklađene sa stvarnim aktivnostima: prijem, dispozicija, otprema, voditelj tima i administracija. Kritične promjene trebale bi biti sljedive, kako se kod upita ne bi moralo nagađati tko je promijenio knjiženje.

Sam pristup trebao bi biti zaštićen čvrstim temeljima. Tu spadaju sigurne politike lozinki, uređeno resetiranje lozinke, blokiranje računa nakon ponovljenih neuspjelih pokušaja i, ondje gdje profil rizika to traži, dodatni koraci prijave. Sigurnost djeluje profesionalno kada je predvidljiva i ne primjećuje se tek kada je netko isključen.

Integracija samo ondje gdje mjerljivo rasterećuje

Web workflow često razvija svoju vrijednost tek u suradnji s postojećim sustavima. To može biti ERP, web-trgovina, rješenje za otpremu, evidencija radnog vremena ili baza podataka. Ipak nije svako sučelje automatski smisleno. Svaka integracija stvara ovisnosti, slike grešaka i trud održavanja.

Središnje pitanje glasi: koji ručni korak veza konkretno uklanja? Ako sučelje dnevno štedi 30 minuta posla prijenosa i smanjuje tipfelere, korist je jasna. Ako samo zrcali informaciju koja se ionako jednom tjedno provjerava, ručni izvoz može isprva biti razumnije rješenje.

Kod individualnih proširenja računa se tehnička osnova. Dokumentirana sučelja, jasno definirana podatkovna polja i sljedivi zapisnici grešaka olakšavaju kasniji pogon. Ako se sustav spaja na web aplikaciju po mjeri, tehnologije i struktura baze podataka trebale bi biti odabrane tako da dugoročno ostanu održive. Njegovana aplikacija na temelju PHP 8.4, modernog JavaScripta i MySQL 8 vrijedi više od kratkoročno dojmljivog posebnog rješenja bez dokumentacije.

Uvođenje tijekom tekućeg poslovanja

Najčešća je greška tvrd početak bez faze usporedbe. Timovi tada u ponedjeljak ujutro odmah trebaju raditi drugačije, dok otvorena pitanja nastaju tek iz stvarnih problema. To povećava odbijanje, čak i ako softver u načelu odgovara.

Bolji je ograničen pilot s jednim timom, jednom varijantom procesa ili jasno određenim područjem lokacije. U tom se razdoblju provjerava funkcioniraju li evidentiranje i odobrenja, jesu li pojmovi razumljivi i slijeću li iznimni slučajevi čisto. Važno je povratne informacije ne skupljati samo kao popis želja. Svaku promjenu treba provjeriti prema koristi za vrijeme protoka, stopu grešaka ili transparentnost.

I pokazatelje treba rano utvrditi. Primjerice mogu se pratiti vrijeme obrade po prijemu robe, broj otvorenih odstupanja, upiti o statusu isporuke ili korektivna knjiženja. Bez početne vrijednosti „djeluje brže“ ostaje jedina ocjena. To može biti točno, ali nije dovoljno za pouzdanu investicijsku odluku.

Pogon treba jasnog vlasnika

SaaS smanjuje tehnički trud, ali poduzeću ne oduzima odgovornost za vlastiti proces. Interno treba netko tko upravlja ulogama, objedinjuje povratne informacije, prepoznaje potrebu za edukacijom i odlučuje koje su promjene doista nužne. Ta osoba ne mora znati programirati. Treba ipak razumjeti radni tijek i imati pristup odgovornima.

Jednako je važna kratka, pouzdana pogonska dokumentacija. Ne objašnjava svaki prikaz zaslona, nego odgovara na pitanja koja se javljaju u svakodnevici: što učiniti kod pogrešnog knjiženja? Tko odobrava nove korisnike? Kako se komunicira ispad? Gdje su izvezeni podaci? Takva jasnoća sprječava da digitalni sustav nakon nekoliko mjeseci opet postane ovisan o osobnim dovikivanjima.

Dobro SaaS rješenje stoga se ne prepoznaje po tome koliko stavki izbornika nudi. Svoju vrijednost pokazuje kada nova kolegica može sigurno obraditi postupak, odstupanje ne nestaje, a rukovoditelj vidi status bez poziva trima osobama. Upravo bi se tim mjerilom trebao mjeriti Flow Web: ne obećanjima, nego radnim danom koji dokazivo teče mirnije i pouzdanije.

Stalna poveznica →

Web razvoj s aktualnim frameworkovima: što poduzeća zaista dobivaju

Web razvoj s aktualnim frameworkovima: što poduzeća zaista dobivaju

Ako ulaz robe još uvijek njiše između papirnatog obrasca, telefonskog poziva i triju Excel datoteka, moderan frontend sam ne rješava problem. Web razvoj s aktualnim frameworkovima ima smisla kada vidljivo pojednostavljuje tijekove: zaposlenici vide sljedeći korak, podaci se unose samo jednom, a aplikacija i nakon prvog go-livea ostaje razumljivo održiva.

Za mala i srednja poduzeća pitanje frameworka stoga nije pitanje vjere. Odlučujuće nije nosi li sučelje osobito mnogo tehničkih modnih riječi. Odlučujuće je prolaze li skladišna kretanja, narudžbe, provjere ili odobrenja pouzdano kroz radni dan - i pod vremenskim pritiskom, pri promjeni smjene i uz nestabilnu mrežnu vezu.

Frameworkovi su sredstvo, a ne cilj projekta

Framework pruža provjerenu strukturu za ponavljajuće zadatke: usmjeravanje, obrasce, upravljanje ovlaštenjima, pristup podacima, testove i prikaz sučelja. To ne smanjuje automatski svaki rizik. No sprječava da projekt iznova mora izmišljati temeljne funkcije.

Kod individualne web aplikacije moderan JavaScript framework može primjerice smisleno prikazati interaktivne maske: popis za komisioniranje koji neprekidno ažurira stavke, planiranje ruta s jasnim promjenama statusa ili zapisnik provjere koji fotografije i komentare izravno pridružuje postupku. U backendu etablirani PHP frameworkovi osiguravaju sljediva pravila, jasno razdvojene odgovornosti i dosljedna sučelja prema bazi podataka.

To je osobito važno kada iz isprva malog rješenja nastane svakodnevno korišten operativni sustav za neki proces. Maska za unos dostavnih najava može započeti pregledno. Čim ažurira zalihe, ispisuje naljepnice, uzima u obzir uloge i komunicira s dostavnom službom, treba čistu tehničku osnovu. Frameworkovi pomažu da se ta osnova ne pregovara iznova pri svakom proširenju.

Što aktualni web frameworkovi konkretno rade bolje

Vrijednost modernih frameworkova rijetko je u spektakularnim efektima. Pokazuje se u nevidljivim dijelovima aplikacije. Obrasci mogu izravno provjeravati unose, a da pogrešni podaci ne postanu uočljivi tek nakon slanja. Ovlaštenja se mogu definirati središnje, tako da vozač vidi druge informacije od dispozicije. Promjene narudžbe spremaju se sljedivo, umjesto da tiho prepišu ćeliju tablice.

Na strani poslužitelja aktualno okruženje s PHP 8.4 i MySQL 8 stvara pouzdanu osnovu za poslovno kritičnu logiku. Transakcije baze podataka primjerice sprječavaju da se zaliha smanji dok pripadajuće knjiženje ne uspije. Jedinstveni ključevi i pravila validacije izbjegavaju duplikate. Pozadinski procesi mogu izrađivati dokumente ili pozivati sučelja, a da osoba za zaslonom ne mora čekati.

Ni sigurnost nije naknadna funkcija. Suvremen framework podržava sigurno pohranjivanje lozinki, zaštitu od tipičnih napada unosom, sljedive sesije i definirane tijekove blokiranja računa. Unatoč tome provedba ostaje projektni zadatak: ovlaštenja se moraju stručno ispravno modelirati, a osjetljive funkcije traže dodatne provjere. Framework daje zaštitne ograde, ali ne zna tko u poduzeću smije dati koje odobrenje.

Ispravno odlučiti o web razvoju s aktualnim frameworkovima

Najbolja tehnologija ne nastaje iz popisa popularnih alata, nego iz stvarne uporabe. Interna aplikacija za deset osoba ima drugačije zahtjeve od korisničkog portala s nekoliko tisuća istodobnih pristupa. Skladišni terminal sa skenerom treba drugačiju logiku upravljanja od menadžerske analize na računalu.

Zato smislena odluka počinje konkretnim pitanjima: koji postupci danas mjerljivo troše vrijeme? Koji se podaci prenose više puta? Gdje nastaju greške jer informacije postaju vidljive prekasno? Koja postojeća tablica radi dovoljno dobro i trebala bi za sada ostati? Upravo posljednja točka štiti od skupih projekata digitalizacije bez operativne koristi.

Za mnoge individualne poslovne aplikacije sustav renderiran na poslužitelju s ciljanim interaktivnim komponentama najrazumniji je izbor. Brzo se učitava, pregledan je za pogon i izbjegava nepotrebnu složenost. Potpuno odvojena single-page aplikacija s druge strane može biti prikladna kada sučelje obrađuje vrlo mnogo dinamičkih stanja, mora raditi offline ili iste funkcije kasnije treba staviti na raspolaganje i mobilnoj aplikaciji.

Oboje može biti stručno ispravno. Pitanje ne glasi: koji je framework najmoderniji? Glasi: koja je arhitektura za dvije godine još uvijek sigurno proširiva, testabilna i razumljiva vlastitom timu?

Kada je manje tehnike bolja tehnika

Ne treba svaki proces složen frontend. Vitka maska za unos internih narudžbi može biti brža, stabilnija i jeftinija od složeno animiranog sučelja. Ako se Excel datoteka održava samo jednom mjesečno i ne uzrokuje greške, možda je i dalje pravi alat.

Složenost se isplati tek kada uklanja stvarno trenje. To može biti slučaj kada se narudžbe više puta prepisuju, status isporuke treba telefonski provjeravati ili nitko nije siguran koja verzija dokumenta vrijedi. Tada središnja aplikacija stvara jasnu korist: jedno stanje podataka, nedvosmislene odgovornosti i manje upita.

Održivost počinje prije prvog retka koda

Frameworkovi se često promatraju kao ubrzivači. To vrijedi samo ako su stručna pravila prije toga dovoljno jasna. Programer može tehnički čisto izgraditi automat stanja. No odgovara li slijed statusa doista procesu, odlučuje se pri snimanju: kada roba vrijedi kao zaprimljena? Tko smije zatvoriti odstupanje? Što se događa kod djelomične isporuke?

Te odluke treba dokumentirati, jednako kao sučelja, podatkovna polja i iznimke. To projekte ne usporava. Smanjuje kasnije rasprave jer postaje vidljivo koje je pravilo svjesno implementirano, a koja je pretpostavka još otvorena.

Održivost se pokazuje i u malim disciplinama. Promjene baze podataka moraju biti verzionirane. Koraci deploymenta moraju biti dokumentirani. Poruke o greškama trebaju biti upotrebljive za pogon i razvoj, a da ne otkrivaju povjerljive pojedinosti. Automatizirani testovi pri svakoj promjeni provjeravaju središnje tijekove, primjerice izradu narudžbe, izračun količine ili izdavanje otpremnice.

Kod kritičnih aplikacija jedna vrsta testa nije dovoljna. Unit testovi osiguravaju pojedina pravila, integracijski testovi provjeravaju međudjelovanje s bazom podataka i sučeljima, a end-to-end testovi u pregledniku reproduciraju stvarne putove upravljanja. Za web i Windows aplikacije samostalno hostirano testno okruženje može dodatno isporučiti snimke zaslona, zapisnike izvođenja i razumljive ocjene, a da se interni testni podaci nepotrebno ne predaju vanjskim cloud uslugama.

Performanse nastaju iz arhitekture i modela podataka

Moderno sučelje ne postaje brzo zato što koristi aktualni framework. Spori upiti prema bazi, prevelike slike ili nejasna sučelja ostaju spori, neovisno o frontendu. Osobito kod popisa narudžbi, artikala ili podataka o kretanju model podataka odlučuje o osjetu brzine.

Čisti indeksi u MySQL 8, straničeni upiti i svjesno učitani podaci često su djelotvorniji od naknadne optimizacije sučelja. Jednako je važan jasan koncept predmemorije. Matični podaci smiju se pod određenim okolnostima predmemorirati, aktualne zalihe ili status odobrenja pak ne naslijepo. Ovdje nema paušalnog pravila jer stručno značenje podataka određuje koliko moraju biti aktualni.

Responzivno oblikovanje također pripada tehničkom planiranju. Na uredskom zaslonu široka tablica može imati smisla. Na ručnom skeneru ili tabletu u skladištu ista informacija treba velike dodirne površine, kratke putove i prikaz koji ostaje upotrebljiv i s rukavicama ili pri slabom svjetlu. Pure fluidity meets ultimate performance u ovom kontekstu ne znači što više kretanja na zaslonu. Znači da aplikacija radi bez trenja na uređaju koji se u procesu stvarno koristi.

Smislen put od ideje do pogona

Pouzdan web projekt počinje ograničenom, provjerljivom jezgrom. Umjesto da se unaprijed automatizira svaka zamisliva iznimka, odabire se proces koji se često pojavljuje i uzrokuje osjetan trud. Nakon prve uporabe stvarni podaci i povratne informacije pokazuju koje proširenje doista ima sljedeći prioritet.

Tehnička predaja ne bi se smjela odvijati tek na kraju. Odgovornosti za hosting, sigurnosne kopije, nadzor, ažuriranja i prava pristupa moraju se rano razjasniti. Sustav je pouzdan koliko i njegov pogon. Tko aplikaciju svakodnevno treba za otpremu ili obradu narudžbi, treba definirane puteve oporavka i jasan odgovor na pitanje što se događa kod smetnje.

softify.pro stoga se oslanja na održive tehnologije, dokumentiranu isporuku i izravnu tehničku odgovornost umjesto na kratkotrajne modne trendove frameworkova. To nije čarobna prečica. To stvara pretpostavku da aplikacija nakon lansiranja nastavi raditi, da se može dalje razvijati i da ne postane sljedeći krhki poseban slučaj.

Prava web aplikacija u najboljem slučaju ne djeluje kao novi IT projekt. Djeluje kao tijek koji napokon radi bez zaobilaženja - s dovoljno tehničke supstance da mirno prihvati i sljedeću promjenu u pogonu.

Stalna poveznica →

Kontaktirajte nas

Imate li projekt na umu, radni proces koji se još uvijek oslanja na tablične proračune i dobru volju, ili zaostatak u testiranju koji bi COCO mogao preuzeti s vašeg tima? Recite nam o tome.

Pošalji poruku