softify.pro
Učitavanje …
Usluge O nama COCO – naš AI server Portfolio Insiders Case Studies Vredno znanja Kontakt Prijava

NEXT-GEN SOFTWARE AESTHETIC

Pure fluidity meets ultimate performance.

Novi vizuelni identitet za moderne digitalne tokove rada.

softify.pro — Novi vizuelni identitet za moderne digitalne tokove rada.

Skrolujte da otkrijete ↓

Softver izgrađen onako kako moderne firme zaista rade

softify.pro je softverski studio zasnovan na jednoj ideji: tehnologija bi trebalo da se kreće jednako fluidno kao i preduzeća koja podržava. Radimo na preseku modernog veb razvoja, automatizacije procesa, i primenjene veštačke inteligencije — tri discipline koje se retko nalaze pod istim krovom, ali sve više pripadaju zajedno. Naši klijenti se kreću od malog preduzeća koje uvodi svoje prvo digitalno fakturisanje, do etabliranog srednjeg proizvodnog preduzeća koje zamenjuje Excel tabele pravim logističkim softverom. Ono što ih povezuje nije veličina, već zahtev: žele sisteme koji su brzi, pouzdani, i prijatni za korišćenje — ne samo funkcionalni. Svaki projekat kod nas počinje istim trima pitanjima: Šta ova firma zaista mora da ubrza? Šta već dobro funkcioniše i trebalo bi da bude poštovano umesto zamenjeno? I koji deo toka rada može, jednom kada je pravilno izgrađen, ubuduće da se obavlja sam? Odgovori određuju sve ostalo — od izabrane tehnologije do plana uvođenja.

Usluge

Novi vizuelni identitet za moderne digitalne tokove rada.

01 — LOGISTICS

Automatizacija logistike — za mala i srednja preduzeća u DACH regionu

Veliki deo našeg rada posvećen je logističkom i operativnom softveru za mala i srednja preduzeća u Nemačkoj, Austriji, i Švajcarskoj. Ova preduzeća se često nalaze između dve neatraktivne opcije: skupih enterprise logističkih paketa, dizajniranih za koncerne deset puta veće, ili mešavine Excel tabela, papirnih obrazaca, i telefonskih poziva, koja tiho ograničava koliko brzo mogu da rastu.

Gradimo srednji put — automatizaciju po meri koja odgovara stvarnom načinu rada određenog skladišta, radionice, ili prodajnog tima. To može značiti: digitalizaciju prijema robe i skladišnih kretanja, automatsko kreiranje otpremnica i etiketa za slanje, povezivanje prijema porudžbina sa planiranjem ruta, ili jednostavno zamenu krhke Excel datoteke koju razume samo jedna osoba sistemom na koji ceo tim može da se osloni. Pošto radimo direktno sa vlasnicima i rukovodiocima pogona u DACH regionu, zahtevi se beleže na jeziku na kojem firma zaista posluje, a uvođenje se planira oko stvarnih rasporeda smena i stvarnih skladišnih površina — ne oko apstraktnog plana projekta.

02 — WEB

Moderan veb razvoj sa aktuelnom tehnologijom

Dizajniramo i razvijamo veb aplikacije i sajtove sa aktuelnom, aktivno održavanom tehnologijom — ne sa zastarelim frejmvorcima koji se održavaju u životu samo iz navike. To znači čist PHP 8.4 u pozadinskom delu, tamo gde je klasična server-renderovana aplikacija ispravan izbor, moderan JavaScript tamo gde je interaktivnost bitna, i MySQL 8 za podatke koji moraju ostati dosledni i pretraživi godinama — ne samo prvih šest meseci nakon lansiranja. Svaki projekat se od prve skice planira podjednako za desktop i mobilne uređaje, ne prilagođava naknadno: vremena učitavanja, prelomne tačke rasporeda, i upravljanje dodirom su deo specifikacije, ne kasniji dodatak.

Pored vidljivog interfejsa, važno nam je kako sajt izgleda iznutra: čitljiv kod, šema baze podataka koju ne treba ponovo graditi pri svakom sledećem zahtevu za funkciju, i koraci implementacije koje može da prati i drugi programer bez dodatnih pitanja. Sajt koji je danas performantan i koji će za tri godine i dalje biti čisto proširiv, za nas je prava definicija „modernog“.

03 — AI / COCO

COCO — naš sopstveni AI server za automatizovano testiranje softvera

Za enterprise klijente upravljamo i održavamo sopstveni namenski AI server pod nazivom COCO. Za razliku od opšteg chatbota, naknadno ugrađenog u tok rada, COCO je ciljano i samostalno hostovan za automatizovano testiranje veb aplikacija, kao i multiplatformskih desktop aplikacija — od procesa prijave i autentifikacije do kompletnih višestepenih poslovnih procesa.

COCO planira test scenario, izvršava ga na stvarnoj aplikaciji, beleži snimke ekrana pre i posle kao dokaz, i pravi razumljivu procenu onoga što je funkcionisalo, šta nije uspelo, i zašto — uključujući granične slučajeve kao što su ponovljene neuspešne prijave, blokiranje naloga, i procesi oporavka, koji su ručno naporni i skloni greškama za testiranje. Pošto server radi lokalno i pod našim upravljanjem, enterprise klijenti zadržavaju punu kontrolu nad tim gde se čuvaju test podaci i snimci ekrana, bez podrazumevanog slanja internog saobraćaja aplikacije nepovezanoj cloud usluzi.

COCO — naš sopstveni AI server za automatizovano testiranje softvera

Za enterprise klijente upravljamo i održavamo sopstveni namenski AI server pod nazivom COCO. Za razliku od opšteg chatbota, naknadno ugrađenog u tok rada, COCO je ciljano i samostalno hostovan za automatizovano testiranje veb aplikacija, kao i multiplatformskih desktop aplikacija — od procesa prijave i autentifikacije do kompletnih višestepenih poslovnih procesa.

COCO planira test scenario, izvršava ga na stvarnoj aplikaciji, beleži snimke ekrana pre i posle kao dokaz, i pravi razumljivu procenu onoga što je funkcionisalo, šta nije uspelo, i zašto — uključujući granične slučajeve kao što su ponovljene neuspešne prijave, blokiranje naloga, i procesi oporavka, koji su ručno naporni i skloni greškama za testiranje. Pošto server radi lokalno i pod našim upravljanjem, enterprise klijenti zadržavaju punu kontrolu nad tim gde se čuvaju test podaci i snimci ekrana, bez podrazumevanog slanja internog saobraćaja aplikacije nepovezanoj cloud usluzi.

COCO podešavamo individualno za svakog enterprise klijenta, konfigurišemo i održavamo server — definišemo test planove relevantne za datu aplikaciju, usklađujemo pragove pouzdanosti, i od slučaja do slučaja odlučujemo kada rezultat treba eskalirati na ljudsku proveru. Cilj nije zameniti QA tim, već mu dati neumornu koleginicu koja prolazi kroz ponavljajuće regresione testove pre svakog izdanja, pre nego što uopšte bude potrebna ljudska intervencija.

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

Svesno ostajemo toliko mali da svaki projekat vode ljudi koji su bili prisutni već na prvom planskom razgovoru — umesto da bude prosleđen u red čekanja. To znači kraće petlje povratnih informacija, manje nesporazuma, i tim koji se i posle šest meseci i dalje seća zašto je doneta određena odluka. Radije biramo nespektakularnu, dokazivu pouzdanost umesto kratkotrajnih trendova: tehnološki stek biramo zato što odgovara problemu i može da ga održava i neko drugi za pet godina — ne zato što je bio trenutno popularan u aktuelnom sprintu. Ako Excel tabela zaista bolje obavlja zadatak od individualnog softvera, i to ćemo vam iskreno reći. Naš cilj je tok rada koji zaista radi brže — ne jednostavno viši račun za softver.

Izabrani radovi

Mali izbor radova koje smemo javno da pokažemo — dodatne studije slučaja i enterprise projekte predstavljamo na zahtev, pod NDA.

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

Auto Detailing Đeki – Od sajta do digitalne servisne platforme

Višejezična platforma za auto-detejling – od kalkulacije cene preko rezervacije do transparentnog praćenja porudžbina, upravljana iz jednog centralnog backofisa.

Koralpenhaus

Koralpenhaus

Regionalni prezentacioni i rezervacioni veb sajt u alpskom regionu, izgrađen sa fokusom na jasnu strukturu, brzo učitavanje, i lako održavanje sadržaja.

Dexosano

Dexosano

Moderna veb platforma zasnovana na PHP-u, razvijena sa istim pristupom koji prioritet daje performansama, a koji softify.pro primenjuje na svakom projektu za klijenta.

softify.pro - Insiders

Jedno skladište. Jedna istina.

Jedno skladište. Jedna istina.

Postoji jednostavan način da softver za skladište izgleda ubedljivo.
Otvorite kontrolnu tablu.
Prikažite nekoliko zelenih brojeva.
Dodajte grafikon.
Stavite malo zaliha na mapu skladišta.
Završite izveštajem.
Sve izgleda u redu.
A ipak sve može biti pogrešno.
Jer skladištu nije stalo do toga koliko dobro izgleda kontrolna tabla.
Njemu je stalo do toga da li se svaki deo sistema slaže oko onoga što se stvarno dogodilo.
To je postao zanimljiv deo najnovijeg eksperimenta softify.pro Flow.
Ne još jedan ekran.
Ne još jedan KPI.
Ne još jedan izveštaj.
Nešto mnogo manje vidljivo.
Doslednost.
Počelo je sa skladištem.
Trenutna demonstracija softify.pro Flow radi sa 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.
Ali procesna logika se ponaša kao da je sve to bitno.
Jer u stvarnoj logistici, jeste.
Kada se skladište jednom izabere, taj kontekst postaje deo svega što sledi.
Flow-ovi.
SSCC-ovi.
Kretanja.
Operateri.
Analitika.
Izveštaji.
To zvuči očigledno.
Postaje znatno manje očigledno kada isti proces počne da se pojavljuje u nekoliko različitih delova aplikacije.
Zatim smo otvorili drugi prikaz.
Operational Analytics.
Odjednom je skladište izgledalo potpuno drugačije.
Bez pozicija za skladištenje.
Bez strelica kretanja.
Umesto toga:

  • završeni Flow-ovi,
  • aktivne narudžbine,
  • iskorišćenost skladišta,
  • izuzeci,
  • prijem,
  • otprema,
  • vreme obrade.

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

Operational Analytics — zbirno stanje skladišta, sa pojedinačnim Flow zapisima koji ostaju vidljivi.

Flow.

88% je korisno samo ako sistem to može da objasni.
Pretpostavimo da kontrolna tabla kaže:
Iskorišćenost skladišta: 88%.
Korisno.
Ali nepotpuno.
Neke pozicije su zauzete.
Neke su rezervisane.
Neke ostaju slobodne.
Ta stanja nisu zamenljiva.
Broj postaje pouzdan tek ako sistem i dalje može da objasni odakle dolazi.
Pet završenih Flow-ova?
Pokažite ih.
Dve aktivne narudžbine?
Pokažite ih.
Jedan izuzetak?
Koji?
88% iskorišćenosti?
Šta je zauzeto?
Šta je rezervisano?
Šta ostaje slobodno?
Kontrolna tabla treba da sažima stvarnost.
Ne treba da je zamenjuje.
Zatim smo promenili jezik.
Holandski.
Skladište je ostalo isto.
ID-ovi Flow-a ostali su isti.
SSCC-ovi ostali su isti.
Operateri su ostali povezani sa svojim zapisima.
Promenio se samo jezik.
Kasnije se isto operativno stanje pojavilo na hrvatskom.
Zatim na francuskom.
Tu višejezični softver postaje mnogo zanimljiviji od prevedenih dugmadi.
Loš prevod je lako uočiti.
Promena stanja izazvana promenom jezika mnogo je opasnija.
Zamislite da prelazite sa nemačkog na francuski i tiho izgubite izabrani Flow.
Ili da se filter ponovo izgradi na pogrešnom skladištu.
Ili da se prikaže ispravan SSCC unutar pogrešnog konteksta procesa.
Interfejs bi i dalje mogao da izgleda savršeno.
Sistem ne bi bio.
Flow stoga sledi jednostavno pravilo:
Jezik sme da menja reči. Ne sme da menja istinu.
Zatim je Flow dobio istoriju.
Browse & Drill-down se ne trudi posebno da izgleda impresivno.
Možda je upravo zato koristan.
Izaberite Flow.
Pojavljuje se njegov kontekst.
Skladište.
Zona.
Status.
Operater.
SSCC.
A zatim lanac dokumenata.
ASN.
Prijem robe.
Kretanje u skladištu.
Nalog za kompletiranje.
Kompletiranje.
Otprema.
FLOW.
Sedam koraka.
Proces više nije samo trenutno stanje.
Ima prošlost.
A to menja pitanje.
Umesto:
Šta se dešava?
možemo da pitamo:
Kako smo stigli ovde?
To je mnogo bolje pitanje kada nešto na kraju krene po zlu.

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

Flow.
Flow.
Flow.
Flow.


SSCC postaje nit vodilja.
Isprva SSCC izgleda kao ono što jeste.
Identifikator.
Dugačak broj u tabeli.
Ali kroz Flow postaje nešto korisnije.
Nit vodilja kroz proces.
Pratite je i druge stvari počinju da se povezuju.
Skladište.
Flow.
Zona.
Status.
Operater.
Lanac dokumenata.
Na kraju izveštaj.
Isti fizički logistički objekat sada je vidljiv iz nekoliko različitih delova aplikacije.
Korisno.
Takođe opasno.
Jer svaki dodatni prikaz stvara novu priliku da sistem 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 Flow-u.
Lanac dokumenata kaže da je operacija dalje odmakla.
Izveštaj kaže nešto drugo.
Koji je tačan?
Ovo nije problem specifičan za Flow.
To je jedan od najstarijih problema u poslovnom softveru.
Različiti delovi istog sistema postepeno razvijaju sopstvenu verziju stvarnosti.
Jedan ekran čita transakciono stanje.
Drugi čita agregat.
Treći se oslanja na keširane podatke.
Izveštaj izračunava nešto malo drugačije.
Izuzetak se operativno reši, ali nestane iz izveštavanja.
Svaka komponenta radi.
Ceo sistem laže.
Obično uljudno.
Zato smo otvorili Report Center.
Dnevni operativni pregled.
Zalihe i popunjenost.
Učinak Flow-a.
Sledljivost SSCC-a.
Izuzeci i SLA.
Ista operativna priča pojavila se ponovo.
Završeni Flow-ovi.
Aktivne narudžbine.
Iskorišćenost skladišta.
Izuzeci.
Prijem.
Otprema.
Vreme obrade.
Ali ovog puta pitanje nije bilo da li izveštaj izgleda ispravno.
Pitanje je bilo:
Da li može sam sebe da odbrani?
Dobar izveštaj vam daje broj.
Bolji sistem može da objasni odakle taj broj dolazi.

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

Flow.


Izuzetak je i dalje bio tu.
Jedan od tiših detalja pokazao se kao jedan od važnijih.
Demonstracioni podaci sadrže izuzetak.
Pojavljuje se u Analyticsu.
Pojavljuje se u Drill-down-u.
Pojavljuje se u sledljivosti SSCC-a.
Pojavljuje se u Report Center-u.
I ostaje vidljiv u Exceptions & SLA.
Upravo to treba da se dogodi.
Operativni oporavak od izuzetka ne znači da izuzetak treba da nestane iz istorije.
„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 sa testiranjem.
Ne problem sa softverom.
Problem sa testiranjem.
Sada smo imali isto skladište prikazano kao:

  • analitika,
  • pojedinačni Flow-ovi,
  • istorije SSCC-a,
  • lanci dokumenata,
  • izveštaji,
  • i prikazi izuzetaka.

Svaki od njih mogao je da se testira nezavisno.
Otvoriti.
Kliknuti.
Filtrirati.
Proveriti.
Proći.
Sledeće.

To bi bilo lako.
Ali bi propustilo zanimljiv deo.
Jer šest zelenih kvačica ne dokazuje da se šest prikaza međusobno slaže.
Stiže COCO.
Ponovo.
COCO se sa Flow-om već susretao ranije.
Autentifikacija.
Korisnici.
Uloge.
Okruženja baza podataka.
Jezici.
Izvršavanje na desktopu.
Zatim je došla logistika.
Skladišta.
Zalihe.
Kompletiranje.
Kretanja.
Izuzeci.
Dokumenti.
Ubuntu.
Red Hat Enterprise Linux.
Ovog puta smo COCO-u dali nešto malo drugačije.
Ne ekran za proveru.
Priču za praćenje.
Uzmi ovo skladište.
Uzmi ovaj Flow.
Uzmi ovaj SSCC.
Otvori Analytics.
Otvori Drill-down.
Promeni jezik.
Pogledaj ponovo.
Otvori izveštaj.
Pronađi isti Flow.
Pronađi isti SSCC.
Pronađi izuzetak.
Uporedi.
Zatim uporedi ponovo.

COCO prati isti operativni kontekst kroz softify.pro Flow — analitiku, sledljivost, promene jezika i izveštavanje.

To menja prirodu testa.

Pitanje više nije:

  • Da li svaki modul radi?

Postaje:

  • Da li svi moduli veruju da se dogodila ista stvar?

Mnogo bolje pitanje.
Mnogo manje udobno.
Sistem skladišta treba da ima jedno pamćenje.
Operateri možda vide pozicije.
Menadžeri skladišta možda vide KPI-jeve.
Podrška možda koristi drill-down.
Revizori možda koriste izveštaje.
COCO možda vidi sve njih.
Ali ispod tih perspektiva treba da postoji jedna istorija.
Jedan Flow ne treba da dobije nekoliko biografija u zavisnosti od toga koji je modul otvoren.
Jedan SSCC ne treba da ima nekoliko prošlosti.
Jedan izuzetak ne treba da postoji samo tamo gde je pogodno.
Jedno skladište ne treba da postane drugo skladište zato što se promenio jezik interfejsa.
O tome zapravo govori trenutni eksperiment Flow.
Ne o kontrolnim tablama.
Ne o izveštajima.
Čak ni o pojedinačnim ekranima.
O jednoj operativnoj istini, izraženoj na različite načine.
Kontrola.
Poznavati skladište.
Poznavati stanje.
Znati šta se kreće.
Znati kom procesu pripada.
Jasnoća.
Pretvoriti KPI-jeve nazad u zapise.
Pretvoriti zapise u istoriju.
Pretvoriti izuzetke u dokaze.
Pretvoriti SSCC u nešto sledljivo.
Flow.
Skladište se bira.
Analytics počinje da ga opisuje.
Flow napreduje.
SSCC ostaje pridružen.
Lanac dokumenata raste.
Izuzetak se pojavljuje.
Proces se nastavlja.
Izveštaj pamti.
Zatim se jezik menja.
Skladište je i dalje isto.
Flow je i dalje isti.
Istorija je i dalje ista.
To je bio deo koji smo očekivali.
Ono što se dogodilo posle bilo je zanimljivije.
COCO je prestao da nezavisno testira prikaze.
Počeo je da ih upoređuje.
Neko vreme se nije dogodilo ništa neobično.
Isto skladište.
Isti Flow.
Isti SSCC.
Ista priča.
Ponovo.
Ponovo.
Ponovo.
A onda se COCO zaustavio.
Ne zato što je aplikacija pukla.
Nije.
Ne zato što je test propao u uobičajenom smislu.
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 gde sledeće da gleda.

Ostalo može da sačeka.


Control. Clarity. Flow.

Objavljeno: 31.08.2026

Permalink →

COCO ponovo udara

COCO ponovo udara

Verovatno bismo trebalo da prestanemo da dajemo COCO-u ideje.

Prethodni eksperiment je trebalo da bude dovoljan.

Prava aplikacija.

Prava navigacija.

Korisnici.

Uloge.

Baze podataka.

Jezici.

Dokazi.

Uvažena studija slučaja.

Čist zaključak.

Onda je neko to pokazao: Logistics in Motion.

To je verovatno bila greška.

Počelo je sa tri skladišta

Ništa posebno uzbudljivo.

…

Pismo od COCO

Pismo od COCO

Inženjerki ili inženjeru koji prvi put otvara ovaj repozitorijum:

Dobrodošli.

Možda ste ovde jer je nešto pošlo po zlu.

Servis je prestao da odgovara.

Deployment se ponašao neočekivano.

Alarm vas je probudio usred noći.

Ili ste jednostavno radoznali kako ova platforma funkcioniše.

Šta god da vas je dovelo ovde, znajte:

Ovaj projekat je izgrađen tačno za ovakve trenutke.

Ne da bi uklonio teške probleme.

Već da bi teške probleme učinio razumljivim.

Naći ćete kod.

Naći ćete dokumentaciju.

Naći ćete specifikacije.

Ali što je još važnije:

…

Case Studies

softify.pro Flow — testirano od strane COCO

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.

Permalink →

Vredno znanja

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

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

Upravnik skladišta loš softver ne prepoznaje po nacrtu arhitekture. Prepoznaje ga po tome što zaposleni opet posežu za telefonom, dvaput evidentiraju otpremnice ili posle smene ne mogu reći koja je roba zaista stigla. Pure fluidity meets ultimate performance stoga ne sme biti puki vizuelni zahtev. Za poslovni softver to znači da se postupak doima prirodno i istovremeno pouzdano funkcioniše u stvarnim uslovima.

Elegantan interfejs bezvredan je ako zapinje pri slabom WLAN-u u skladištu. Brza aplikacija takođe malo pomaže ako nameće sled rada koji na rampi niko ne može da prati. Dobri digitalni alati povezuju oblikovanje, brzinu i razumevanje procesa. Smanjuju trenje, a da poslovanje ne guraju u unapred izrađenu standardnu logiku.

Pure fluidity meets ultimate performance je poslovno pitanje

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

Performanse su takođe više od dobre vrednosti u testu pregledača. Odlučujuće su vreme odziva kod narudžbine sa mnogo stavki, stabilnost na kraju meseca i pitanje mogu li pet osoba raditi istovremeno a da jedna drugoj ne prepisuju stanja podataka. Tu spada i čisto postupanje sa prekidima veze, ovlašćenjima i blokiranim nalozima.

Oboje je nerazdvojno. Ako maska reaguje odmah, ali ima nejasna obavezna polja, ostaje naporna. Ako je tok pametno modeliran, a stranica pri svakom knjiženju čeka dve sekunde, zaobilazi se. Fluidnost nastaje onde gde sistem podržava sledeću smislenu radnju i tehnički ostaje dovoljno brz da misao ne prekine.

Interfejs sledi radni put, a ne organigram

Mnoga standardna rešenja strukturiraju svoje menije po modulima: nabavka, prodaja, skladište, izveštavanje, administracija. Sa 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š pre zaključenja prijema označiti nalepnicom.

Dobra individualna aplikacija stoga počinje tim situacijama. Koja je informacija dostupna? Ko odlučuje? Šta treba dokumentovati? Šta se kasnije više ne sme menjati? Tek nakon toga odlučuje se koja je maska za unos, provera ili automatizacija potrebna.

To ne znači svaki postojeći tok nepromenjen uliti u softver. Neke su tabele zaista previše sklone greškama, neka odobrenja nepotrebno spora. No Excel spisak koji funkcioniše ne mora nužno biti zamenjen projektom. Ako ga održava samo jedna osoba, poznaje malo izuzetaka i ostaje sledljiv, može biti prikladan alat. Softver se isplati kada poboljšava koordinaciju, smanjuje izvore greške ili pouzdano stavlja informacije na raspolaganje više učesnika.

Manje klikova nije automatski bolje

Zahtev za što manje klikova zvuči razumno, ali može voditi u pogrešnom smeru. Kod nepovratnog skladišnog knjiženja kratka je potvrda smislena. Kod odobrenja otpreme vidljiva provera uverljivosti može sprečiti skupo naknadno popravljanje. Pravi tok zavisi od rizika.

Odlučujuće je da dodatni koraci imaju jasnu svrhu. Potvrda ne bi trebala da se pojavljuje samo zato što je framework lako stvara. Treba da stoji tačno onde gde ljudi moraju svesno doneti odluku. Tako aplikacija ostaje brza a da ne postane lakomislena.

Performanse nastaju u arhitekturi, a ne u poslednjem sprintu

Ko veb stranicu ili veb aplikaciju ubrzava tek neposredno pre go-livea, najčešće leči simptome. Velike upite, nejasne modele podataka i naknadno dodate 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, promene statusa i radnje korisnika trebaju sledljive ključeve i smislene indekse. Zaliha se ne sme pojavljivati samo kao broj ako se kasnije mora razjasniti kojim je knjiženjem nastala. Istovremeno se ne mora svaka istorijska informacija ponovo izračunavati pri svakom otvaranju stranice.

Kod modernih veb 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 veroispovest za određeni stack. To je pitanje održavanja: mogu li se promene za šest meseci bezbedno sprovesti? Je li vidljivo gde neko pravilo važi? Može li se greška reprodukovati, umesto da se samo pretpostavlja?

Performanse uz to trebaju granice. Polja za pretragu trebaju smislen minimalan broj znakova ili preciznu logiku filtriranja ako su zamislivi milioni zapisa. Velike liste trebaju stranice ili stepenovane procese naknadnog učitavanja. Slike i dokumenti ne bi smeli blokirati kritični radni tok. Te odluke deluju nespektakularno. Upravo zato često ostaju vredne duže od upadljivog frontend efekta.

Vidljiva brzina stvara poverenje

Ne može se svaki proces završiti za manje od sekunde. Štampa nalepnica, interfejs prema dostavnoj službi ili provera prema spoljnim podacima povremeno traže vreme. Odlučujuće je tada kako aplikacija postupa sa čekanjem.

Jasan status poput „Otpremna nalepnica se izrađuje“ bolji je od zamrznutog dugmeta. Nakon završetka trebalo bi da bude vidljivo koji je broj stvoren i sme li se postupak ponovo pokrenuti. Ako spoljna usluga nije dostupna, tim treba razumljivu mogućnost postupanja umesto poruke o grešci za programere.

To je i pitanje integriteta podataka. Dvoklik ne sme stvoriti dve isporuke. Prekinuti proces ne sme ćutke ostaviti napola gotov zapis. Dobri sistemi planiraju takve slučajeve jer će se u svakodnevici dogoditi. Naročito kod promenljivih smena, vremenskog pritiska i mobilnih uređaja izuzetak nije rubna tema.

Kvalitet postaje vidljiv pre greške

Za aplikacije sa mnogo varijanti procesa nije dovoljno na kraju ručno proći nekoliko puteva. Promene cena, uloga, validacija ili interfejsa mogu izazvati posledice na veoma udaljenom mestu. Ovde automatizovano testiranje postaje deo performansi: ne samo tehnički, nego organizaciono.

Testni sistem trebalo bi da može proveravati stvarne tokove, na primer kreiranje narudžbine, promenu stavke, izradu otpremnice i kontrolu ovlašćenja. Trebalo bi da beleži dokaze i formuliše rezultate tako da ih stručna odeljenja mogu smestiti. Rečenica poput „Proces otpreme nije dovršen nakon promene adrese“ pomaže više od nekomentarisanog stack tracea.

Za timove osvešćene o bezbednosti relevantno je i mesto na kojem ti testovi teku. Ako snimci ekrana, pristupni podaci, testni slučajevi ili interni koraci aplikacije ne smeju napustiti preduzeće, samostalno hostovan pristup često je smisleniji od spoljne cloud usluge. Uz COCO automatizovani testovi za veb i Windows aplikacije mogu se izvoditi na namenskom okruženju. To nije potrebno svakom timu. Kod osetljivih podataka, regulisanih 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 vizuelni identitet može stvoriti poverenje. Pokazuje da preduzeće ozbiljno shvata svoje digitalno prisustvo. U operativnom sistemu oblikovanje međutim mora činiti još više: orijentaciju pod vremenskim pritiskom. Kontrast, tipografija, jasna stanja i razumljive oznake odlučuju hoće li neko postupak sigurno dovršiti ili će pitati kolegu.

Uzdržanost je tu često bolji izbor. Kontrolna tabla sa deset obojenih pokazatelja može izgledati dojmljivo, a ipak sakriti jedino relevantno odstupanje. Redukovani prikaz koji čini vidljivima otvorene prijeme robe, nedostajuća skeniranja i ugrožene rokove isporuke korisniji je. Pitanje ne glasi koliko je interfejsa moguće, nego koja informacija poboljšava odluku.

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

Smisleno merilo za sledeću odluku

Pre nego tim odluči o novoj platformi, automatizaciji ili potpunoj novogradnji, pomaže jednostavna provera: postaje li tok za ljude koji ga svakodnevno izvode jasniji, brži ili sigurniji? I može li se rešenje još razumeti kada se promene zahtevi, zaposleni ili interfejsi?

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

Permalink →

SaaS Flow Web: bezbedno uvođenje workflowa tokom tekućeg poslovanja

SaaS Flow Web: bezbedno uvođenje workflowa tokom tekućeg poslovanja

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

Za mala i srednja preduzeća SaaS je često smislen jer ne moraju prvo graditi sopstvene servere, izdanja i osnovne funkcije. No to nije slobodan prolaz za svaki proces. Ko uvede alat koji svakodnevicu čini komplikovanijom ili važne podatke potiskuje u nejasne sporedne liste, ne digitalizuje rad. Samo premešta trenje.

Šta SaaS „Flow Web“ mora da pruži

Veb workflow je dobar kada zaposleni bez tumačenja znaju šta je sledeće za učiniti. Kod prijema robe to može značiti: evidentirati isporuku, proveriti količine prema narudžbini, dokumentovati odstupanje, dodeliti skladišno mesto i po potrebi obavestiti odgovornu osobu. Tok ne mora biti spektakularan. Mora biti sledljiv, brz i ponovljiv.

Upravo tu leži razlika između opšte aplikacije za zadatke i stručnog procesnog sistema. Aplikacija za zadatke može kreirati stavku pod nazivom „Proveriti isporuku“. Stručni workflow može dodatno zabeležiti o kojoj se isporuci radi, ko 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 onde gde ih sledeća osoba treba.

Za rešenje poput Flow Web na flow.softify.pro provera bi stoga trebalo da počne od postupaka, a ne od spiska funkcija. Preduzeću sa pet skladišnih kretanja dnevno treba nešto drugo nego otpremnom timu sa više cut-off vremena, različitim prevoznicima i redovnim upravljanjem delimičnim isporukama. SaaS nije zamena za razumevanje procesa.

Prvo imenovati usko grlo, zatim konfigurisati

Mnogi projekti digitalizacije počinju preširoko: „Želimo da digitalizujemo skladište.“ To zvuči uverljivo, ali brzo vodi do sistema sa previše maski, posebnih slučajeva i materijala za obuku. Bolja je precizna izjava poput: „Prijemi robe knjiže se tek sledećeg dana jer otpremnice na kraju smene 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 proslediti knjiženje nadležnom mestu. Kada taj tok funkcioniše, nalepnice, ocene dobavljača ili automatski predlozi narudžbina mogu se dodati kasnije. Ne pripada svaki smisleni korak proširenja u prvo uvođenje.

Ni dobro održavana tabela ne mora otići ako ispunjava svoju svrhu. Na primer, mesečna analiza sa malo učesnika u postojećoj datoteci može biti jeftinija i transparentnija od sopstvenog modula. SaaS se isplati onde gde se informacije koriste više puta, vremena obrade su kritična ili greške nastaju iz prekida medija.

Prava pitanja pre uvođenja

Pre konfiguracije tim bi trebalo da odigra stvaran 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žbina sa posebnim odobrenjem. Pritom se pokazuju pravila koja sistem zaista mora prikazati.

Relevantne su među ostalim ove tačke: ko sme da kreira, menja ili zatvori postupak? Koji su unosi obavezni, a koji samo korisni? Kada treba obavestiti rukovodioca? Koji se podaci predaju računovodstvu, otpremi ili korisničkoj službi? I šta se dešava kada je WLAN u skladištu slab ili zaposleni više nema pristupne podatke?

Odgovori određuju kvalitet uvođenja snažnije od dugog kataloga vizuelnih zahteva. Čist proces uloga, razumljiva poruka o grešci i dokumentovan korak odobrenja u pogonu obično sprečavaju više truda nego dodatni izveštaj na početnoj strani.

Čuvanje podataka i uloge nisu sporedna stvar

SaaS se često tretira kao puko pitanje rukovanja. Za voditelje pogona i IT-a međutim je bar jednako važno šta se dešava sa podacima. To se odnosi na matične podatke, informacije o isporukama, podatke o zaposlenima, fotografije šteta i moguće podatke o kupcima. Pre uvođenja trebalo bi da budu jasne nadležnosti, čuvanje i mogućnosti izvoza.

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

I koncept ovlašćenja zaslužuje konkretnu pažnju. U skladištu ne mora svaka osoba videti cene, uslove kupaca ili globalna podešavanja. Istovremeno preuska dodela prava ne sme blokirati tok. Smislene su uloge usklađene sa stvarnim aktivnostima: prijem, dispozicija, otprema, voditelj tima i administracija. Kritične promene trebalo bi da budu sledljive, kako se kod upita ne bi moralo nagađati ko je promenio knjiženje.

Sam pristup trebalo bi zaštititi čvrstim temeljima. Tu spadaju bezbedne politike lozinki, uređeno resetovanje lozinke, blokiranje naloga nakon ponovljenih neuspelih pokušaja i, onde gde profil rizika to traži, dodatni koraci prijave. Bezbednost deluje profesionalno kada je predvidljiva i ne primećuje se tek kada je neko isključen.

Integracija samo onde gde merljivo rasterećuje

Veb workflow često razvija svoju vrednost tek u saradnji sa postojećim sistemima. To može biti ERP, veb-prodavnica, rešenje za otpremu, evidencija radnog vremena ili baza podataka. Ipak nije svaki interfejs automatski smislen. Svaka integracija stvara zavisnosti, slike grešaka i trud održavanja.

Središnje pitanje glasi: koji ručni korak veza konkretno uklanja? Ako interfejs dnevno štedi 30 minuta posla prenosa i smanjuje tipfelere, korist je jasna. Ako samo odražava informaciju koja se ionako jednom nedeljno proverava, ručni izvoz može isprva biti razumnije rešenje.

Kod individualnih proširenja računa se tehnička osnova. Dokumentovani interfejsi, jasno definisana podatkovna polja i sledljivi zapisnici grešaka olakšavaju kasniji pogon. Ako se sistem spaja na veb aplikaciju po meri, tehnologije i struktura baze podataka trebalo bi da budu odabrane tako da dugoročno ostanu održive. Njegovana aplikacija na osnovi PHP 8.4, modernog JavaScripta i MySQL 8 vredi više od kratkoročno dojmljivog posebnog rešenja bez dokumentacije.

Uvođenje tokom tekućeg poslovanja

Najčešća je greška tvrd početak bez faze poređenja. Timovi tada u ponedeljak ujutru odmah treba da rade 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 sa jednim timom, jednom varijantom procesa ili jasno određenim područjem lokacije. U tom se razdoblju proverava funkcionišu li evidentiranje i odobrenja, jesu li pojmovi razumljivi i sleću li izuzetni slučajevi čisto. Važno je povratne informacije ne skupljati samo kao spisak želja. Svaku promenu treba proveriti prema koristi za vreme protoka, stopu grešaka ili transparentnost.

I pokazatelje treba rano utvrditi. Na primer mogu se pratiti vreme obrade po prijemu robe, broj otvorenih odstupanja, upiti o statusu isporuke ili korektivna knjiženja. Bez početne vrednosti „deluje brže“ ostaje jedina ocena. To može biti tačno, ali nije dovoljno za pouzdanu investicionu odluku.

Pogon treba jasnog vlasnika

SaaS smanjuje tehnički trud, ali preduzeću ne oduzima odgovornost za sopstveni proces. Interno treba neko ko upravlja ulogama, objedinjuje povratne informacije, prepoznaje potrebu za obukom i odlučuje koje su promene zaista nužne. Ta osoba ne mora znati da programira. Treba ipak da razume radni tok i ima pristup odgovornima.

Jednako je važna kratka, pouzdana pogonska dokumentacija. Ne objašnjava svaki prikaz ekrana, nego odgovara na pitanja koja se javljaju u svakodnevici: šta učiniti kod pogrešnog knjiženja? Ko odobrava nove korisnike? Kako se komunicira ispad? Gde su izvezeni podaci? Takva jasnoća sprečava da digitalni sistem nakon nekoliko meseci opet postane zavisan od ličnih dovikivanja.

Dobro SaaS rešenje stoga se ne prepoznaje po tome koliko stavki menija nudi. Svoju vrednost pokazuje kada nova koleginica može sigurno obraditi postupak, odstupanje ne nestaje, a rukovodilac vidi status bez poziva trima osobama. Upravo bi se tim merilom trebalo meriti Flow Web: ne obećanjima, nego radnim danom koji dokazivo teče mirnije i pouzdanije.

Permalink →

Veb razvoj sa aktuelnim frejmvorcima: šta preduzeća zaista dobijaju

Veb razvoj sa aktuelnim frejmvorcima: šta preduzeća zaista dobijaju

Ako prijem robe još uvek njiše između papirnog obrasca, telefonskog poziva i tri Excel datoteke, moderan frontend sam ne rešava problem. Veb razvoj sa aktuelnim frejmvorcima ima smisla kada vidljivo pojednostavljuje tokove: zaposleni vide sledeći korak, podaci se unose samo jednom, a aplikacija i nakon prvog go-livea ostaje razumljivo održiva.

Za mala i srednja preduzeća pitanje frejmvorka stoga nije pitanje vere. Odlučujuće nije nosi li interfejs naročito mnogo tehničkih modnih reči. Odlučujuće je prolaze li skladišna kretanja, narudžbine, provere ili odobrenja pouzdano kroz radni dan - i pod vremenskim pritiskom, pri promeni smene i uz nestabilnu mrežnu vezu.

Frejmvorci su sredstvo, a ne cilj projekta

Frejmvork pruža proverenu strukturu za ponavljajuće zadatke: rutiranje, obrasce, upravljanje ovlašćenjima, pristup podacima, testove i prikaz interfejsa. To ne smanjuje automatski svaki rizik. No sprečava da projekat iznova mora izmišljati temeljne funkcije.

Kod individualne veb aplikacije moderan JavaScript frejmvork može na primer smisleno prikazati interaktivne maske: spisak za komisioniranje koji neprekidno ažurira stavke, planiranje ruta sa jasnim promenama statusa ili zapisnik provere koji fotografije i komentare neposredno pridružuje postupku. U backendu etablirani PHP frejmvorci obezbeđuju sledljiva pravila, jasno razdvojene odgovornosti i dosledne interfejse prema bazi podataka.

To je naročito važno kada iz isprva malog rešenja nastane svakodnevno korišćen operativni sistem za neki proces. Maska za unos dostavnih najava može započeti pregledno. Čim ažurira zalihe, štampa nalepnice, uzima u obzir uloge i komunicira sa dostavnom službom, treba čistu tehničku osnovu. Frejmvorci pomažu da se ta osnova ne pregovara iznova pri svakom proširenju.

Šta aktuelni veb frejmvorci konkretno rade bolje

Vrednost modernih frejmvorka retko je u spektakularnim efektima. Pokazuje se u nevidljivim delovima aplikacije. Obrasci mogu neposredno proveravati unose, a da pogrešni podaci ne postanu uočljivi tek nakon slanja. Ovlašćenja se mogu definisati centralno, tako da vozač vidi druge informacije od dispozicije. Promene narudžbine čuvaju se sledljivo, umesto da tiho prepišu ćeliju tabele.

Na strani servera aktuelno okruženje sa PHP 8.4 i MySQL 8 stvara pouzdanu osnovu za poslovno kritičnu logiku. Transakcije baze podataka na primer sprečavaju da se zaliha smanji dok pripadajuće knjiženje ne uspe. Jedinstveni ključevi i pravila validacije izbegavaju duplikate. Pozadinski procesi mogu izrađivati dokumente ili pozivati interfejse, a da osoba za ekranom ne mora čekati.

Ni bezbednost nije naknadna funkcija. Savremen frejmvork podržava bezbedno čuvanje lozinki, zaštitu od tipičnih napada unosom, sledljive sesije i definisane tokove blokiranja naloga. Uprkos tome sprovođenje ostaje projektni zadatak: ovlašćenja se moraju stručno ispravno modelirati, a osetljive funkcije traže dodatne provere. Frejmvork daje zaštitne ograde, ali ne zna ko u preduzeću sme dati koje odobrenje.

Ispravno odlučiti o veb razvoju sa aktuelnim frejmvorcima

Najbolja tehnologija ne nastaje iz spiska popularnih alata, nego iz stvarne upotrebe. Interna aplikacija za deset osoba ima drugačije zahteve od korisničkog portala sa nekoliko hiljada istovremenih pristupa. Skladišni terminal sa skenerom treba drugačiju logiku upravljanja od menadžerske analize na računaru.

Zato smislena odluka počinje konkretnim pitanjima: koji postupci danas merljivo troše vreme? Koji se podaci prenose više puta? Gde nastaju greške jer informacije postaju vidljive prekasno? Koja postojeća tabela radi dovoljno dobro i trebalo bi za sada da ostane? Upravo poslednja tačka štiti od skupih projekata digitalizacije bez operativne koristi.

Za mnoge individualne poslovne aplikacije sistem renderovan na serveru sa ciljanim interaktivnim komponentama najrazumniji je izbor. Brzo se učitava, pregledan je za pogon i izbegava nepotrebnu složenost. Potpuno odvojena single-page aplikacija sa druge strane može biti prikladna kada interfejs 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 frejmvork najmoderniji? Glasi: koja je arhitektura za dve godine još uvek bezbedno proširiva, testabilna i razumljiva sopstvenom timu?

Kada je manje tehnike bolja tehnika

Ne treba svaki proces složen frontend. Vitka maska za unos internih narudžbina može biti brža, stabilnija i jeftinija od složeno animiranog interfejsa. Ako se Excel datoteka održava samo jednom meseč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žbine više puta prepisuju, status isporuke treba telefonski proveravati ili niko nije siguran koja verzija dokumenta važi. Tada centralna aplikacija stvara jasnu korist: jedno stanje podataka, nedvosmislene odgovornosti i manje upita.

Održivost počinje pre prvog reda koda

Frejmvorci se često posmatraju kao ubrzivači. To važi samo ako su stručna pravila pre toga dovoljno jasna. Programer može tehnički čisto izgraditi automat stanja. No odgovara li sled statusa zaista procesu, odlučuje se pri snimanju: kada roba važi kao primljena? Ko sme zatvoriti odstupanje? Šta se dešava kod delimične isporuke?

Te odluke treba dokumentovati, jednako kao interfejse, podatkovna polja i izuzetke. To projekte ne usporava. Smanjuje kasnije rasprave jer postaje vidljivo koje je pravilo svesno implementirano, a koja je pretpostavka još otvorena.

Održivost se pokazuje i u malim disciplinama. Promene baze podataka moraju biti verzionisane. Koraci deploymenta moraju biti dokumentovani. Poruke o greškama trebaju biti upotrebljive za pogon i razvoj, a da ne otkrivaju poverljive pojedinosti. Automatizovani testovi pri svakoj promeni proveravaju centralne tokove, na primer izradu narudžbine, izračun količine ili izdavanje otpremnice.

Kod kritičnih aplikacija jedna vrsta testa nije dovoljna. Unit testovi osiguravaju pojedina pravila, integracioni testovi proveravaju međudejstvo sa bazom podataka i interfejsima, a end-to-end testovi u pregledaču reprodukuju stvarne puteve upravljanja. Za veb i Windows aplikacije samostalno hostovano testno okruženje može dodatno isporučiti snimke ekrana, zapisnike izvršavanja i razumljive ocene, a da se interni testni podaci nepotrebno ne predaju spoljnim cloud uslugama.

Performanse nastaju iz arhitekture i modela podataka

Moderan interfejs ne postaje brz zato što koristi aktuelni frejmvork. Spori upiti prema bazi, prevelike slike ili nejasni interfejsi ostaju spori, nezavisno od frontenda. Naročito kod spiskova narudžbina, artikala ili podataka o kretanju model podataka odlučuje o osećaju brzine.

Čisti indeksi u MySQL 8, straničeni upiti i svesno učitani podaci često su delotvorniji od naknadne optimizacije interfejsa. Jednako je važan jasan koncept keširanja. Matični podaci smeju se pod određenim okolnostima keširati, aktuelne zalihe ili status odobrenja pak ne naslepo. Ovde nema paušalnog pravila jer stručni značaj podataka određuje koliko moraju biti aktuelni.

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

Smislen put od ideje do pogona

Pouzdan veb projekat počinje ograničenom, proverljivom jezgrom. Umesto da se unapred automatizuje svaki zamisliv izuzetak, odabira se proces koji se često pojavljuje i uzrokuje osetan trud. Nakon prve upotrebe stvarni podaci i povratne informacije pokazuju koje proširenje zaista ima sledeći prioritet.

Tehnička predaja ne bi smela da se odvija tek na kraju. Odgovornosti za hosting, rezervne kopije, nadzor, ažuriranja i prava pristupa moraju se rano razjasniti. Sistem je pouzdan koliko i njegov pogon. Ko aplikaciju svakodnevno treba za otpremu ili obradu narudžbina, treba definisane puteve oporavka i jasan odgovor na pitanje šta se dešava kod smetnje.

softify.pro se stoga oslanja na održive tehnologije, dokumentovanu isporuku i neposrednu tehničku odgovornost umesto na kratkotrajne modne trendove frejmvorka. To nije čarobna prečica. To stvara pretpostavku da aplikacija nakon lansiranja nastavi da radi, da se može dalje razvijati i da ne postane sledeći krhki poseban slučaj.

Prava veb aplikacija u najboljem slučaju ne deluje kao novi IT projekat. Deluje kao tok koji napokon radi bez zaobilaženja - sa dovoljno tehničke supstance da mirno prihvati i sledeću promenu u pogonu.

Permalink →

Stupite u kontakt

Imate li projekat na umu, tok rada koji se i dalje oslanja na Excel tabele i dobru volju, ili zaostatak u testiranju koji bi COCO mogao da preuzme od vašeg tima? Ispričajte nam o tome.

Pošalji poruku