Testiranje softvera obuhvata različite vrste testiranja kako bi se osiguralo da softverski proizvod neće imati funkcionalne i nefunkcionalne nedostatke, a sve u cilju smanjenja ukupnih troškova razvoja softvera, poboljšanja njegovog kvaliteta i udobnosti korišćenja. Ako program ne obavlja funkciju za koju je razvijen, postaje neprofitabilan i postoji šansa da će ga potencijalni korisnik zameniti konkurentnim softverom. Da bi se sprečio ovakav scenario, našim klijentima nudimo uslugu testiranja softvera bez obzira na vrstu aplikacije (web, desktop i mobilne aplikacije). Najčešće smo uključeni u BlackBox testiranje, a u slučaju da nam klijent dozvoli pristup nekim integracionim tačkama gde je moguće testiranje trenutne faze razvoja, moguće je predvideti Grey ili WhiteBox testiranje.

Alati i Tehnologije

Prema klijentovim potrebama i zahtevima, DTC koristi razne alate za kreiranje test scenarija i praćenje defekata. Naše ogromno iskustvo na ovom polju može potvrditi više od 30.000 razvijenih i testiranih test scenarija.

Za potrebe regresionog testiranja, na različitim projektima, radimo na razvoju automatskih testova. Na taj način pomažemo našim klijentima da u potpunosti ubrzaju testiranje i provere konzistentnost ranije razvijenih funkcionalnih jedinica testirane aplikacije.

Za automatsko testiranje koristimo raznovrsne programske jezike i alate i pokrivamo automatsko testiranje na svim platformama: Web, Desktop i mobilne (Android, iOS, Windows Phone). Takođe, nudimo testiranje API slojeva kao i performans testiranje web i mobilnih platformi.

Za sve platforme, moguće je izvršiti testiranje prilagodljivosti web dizajna na različitim uređajima i rezolucijama (različiti operativni sistemi za mobilne uređaje u kombinaciji sa različitim pretraživačima, različiti operativni sistemi na desktop računarima u kombinaciji sa različitim pretraživačima, testiranje prilagodljivosti aplikacija na različite rezolucije uređaja).

Tehnike Testiranja
Bez uvida u 'source code'
Testiranje kao krajnji korisnik
Bez uvida u 'source code'
Testiranje kao krajnji korisnik
Bez uvida u 'source code'
Testiranje kao krajnji korisnik
Bez uvida u 'source code'
Testiranje kao krajnji korisnik
Bez uvida u 'source code'
Testiranje kao krajnji korisnik
Bez uvida u 'source code'
Testiranje kao krajnji korisnik
black box

BlackBox testiranje je metod softverskog testiranja u kojem unutrašnja struktura sistema koji se testira nije poznata testeru (tester je vidi kao crnu kutiju i ne zna kako je softver implementiran). Koristeći ovu tehniku možemo da nađemo greške u netačnim ili nedostajućim funkcijama, greške interfejsa, greške pristupa bazama podataka, greške performansi, itd. Prednost ovog metoda testiranja je da se lako izvodi i ne zahteva znanje o programiranju ni o unutrašnjoj strukturi sistema. Jedna od mana jeste da testovi mogu biti teški za dizajniranje i redudantni. Takođe ova tehnika ne može da testira sve moguće funkcionalnosti detaljno, a jedan deo razvijenog koda može ostati netestiran.

Potpuno poznavanje 'source code'
Testiranje kao Developer
Potpuno poznavanje 'source code'
Testiranje kao Developer
Potpuno poznavanje 'source code'
Testiranje kao Developer
Potpuno poznavanje 'source code'
Testiranje kao Developer
Potpuno poznavanje 'source code'
Testiranje kao Developer
Potpuno poznavanje 'source code'
Testiranje kao Developer
white box

WhiteBox testiranje je metod softverskog testiranja u kojem su unutrašnja struktura i svi implementirani detalji sistema koje obuhvata testiranje, u potpunosti poznati testeru. Prednost ovog načina testiranja je što testovi koriste ulaze kako bi pokrili sva grananja u kodu. Na taj način redudantnost je smanjena na minimum a pokrivenost test slučajeva je velika. Mana je da su testovi jako kompleksni i potrebno je da ih piše i testira veoma stručan tester koji dobro poznaje razvoj softvera. Takođe, ovaj metod podrazumeva detaljnu analizu, što podrazumeva puno utrošenog vremena.

Delimično poznavanje 'source code'
Testiranje kao Tester
Delimično poznavanje 'source code'
Testiranje kao Tester
Delimično poznavanje 'source code'
Testiranje kao Tester
Delimično poznavanje 'source code'
Testiranje kao Tester
Delimično poznavanje 'source code'
Testiranje kao Tester
Delimično poznavanje 'source code'
Testiranje kao Tester
grey box

GreyBox testiranje je metod softverskog testiranja koji kombinuje BlackBox i WhiteBox metode. U ovoj metodologiji unutrašnja struktura sistema je delimično poznata testeru a tester poznaje strukturu podataka i algoritme koji su korišćeni za razvijanje softvera. Primer ovog metoda je analiza koda testirane aplikacije, formiranje funkcionalnih test scenarija na osnovu te analize i kasnijim testiranjem primenom BlackBox metoda testiranja. Prednost ovog načina testiranja jeste da se sa manjim brojem testova mogu pronaći potencijalne greške u odnosu na primenu BlackBox metoda testiranja. Ograničenje GreyBox metode je što pojedini delovi interne strukture moraju biti poznati.

Metode Testiranja
01
Manuelno

Manuelno testiranje je proces nalaženja defekata unutar softverskog programa, aplikacije ili proizvoda, kada se tester ponaša kao krajnji korisnik i manuelno izvršava test slučajeve bez korišćenja automatizovanih alata. Rezultat izvršavanja koji nije očekivan je zapisan i analiziran u formi test izveštaja. Manuelni testovi mogu da se naprave tako da pokrivaju skoro sve aspekte softverske aplikacije ali izvršavanje ovih testova podrazumeva veće resurse i puno potrebnog vremena.

02
Automatsko

Automatsko testiranje softvera je proces u kojem se izvršavaju pripremljeni automatski test scenariji kako bi se pronašli defekti. Automatski i skript alati koji se koriste za ovu vrstu testiranja su Selenium, Ruby, TestComplete, itd. Testovi koji treba da se repetativno izvršavaju (regresiono testiranje) mogu da se automatizuju kako bi se smanjila ukupna cena manuelnog testiranja. Ovo je razumno kod test scenarija koji se odnose na funkcionalne zahteve koji se ne menjaju toliko često, a oduzimaju dosta napora za manuelno testiranje. Automatizacija se može izvršiti bez obzira na to da li je aplikacija web, mobilna ili desktop. Takođe, moguće je i testiranje više međuzavisnih aplikacija, nezavisno od platforme. Automatizacija testova može da se izvrši imitirajući prave akcije klijenta tokom testiranja razvijene aplikacije ili kroz testiranje ne grafičkih nivoa aplikacije (API funkcionalno testiranje). Automatizacija testova sprečava ljudske greške u ručnom izvršavanju i smanjuje troškove procesa regresionog testiranja. Otežavajući faktor za automatizaciju je činjenica da se pojedine funkcionalnosti menjaju često i samim tim nisu pogodne za automatizaciju, a održavanje takvih test scenarija bi oduzimalo previše vremena i stručnih resursa.

Nivoi Testiranja
“Unit”

Testiranje osnovnih delova razvojnog koda obezbeđuje da dizajnirane modularne funkcionalnosti rade ispravno. To omogućava detekciju defekata u ranim fazama razvoja. Ovi osnovni delovi razvojnog koda ne mogu uvek da se testiraju bez upotrebe odgovarajućih drajvera ili alata. Za ovaj nivo testiranja se najčešće koristi WhiteBox metod, što znači da je unutrašnja struktura i implementacija dobro poznata test timu.

Integraciono

Integraciono testiranje pruža proveru da li interakcija između implementiranih funkcija funkcioniše kako je i specificirano zahtevom. To bi bila provera da su dva ili više modula ispravno integrisana a njihova interakcija funkcioniše na planirani način. To se obično radi posle testiranja pojedinačnih modula i ovim testiranjem se mogu pronaći potencijalni problemi interakcije pojedinačnih komponenti aplikacije.

Sistemsko

Testiranje sistema obezbeđuje proveru funkcionalnosti celokupnog sistema kako bi potvrdilo da sve funkcionalnosti rade kao što je očekivano i da kvalitet sistema ispunjava sve ispostavljene zahteve. Ova aktivnost podrazumeva testiranje različitih aspekata ponašanja sistema: stabilnost - u trenucima neočekivanog povećanja opterećenja, pouzdanost - kada je sistem u recovery ili failure modu, bezbednost - od potencijalnog hakovanja sistema i performanse - vremenski odziv sistema kada je opterećen različitim nivoima opterećenja. Bilo koje od ovih karakteristika mogu da se testiraju istovremeno sa drugim karakteristikama ili individualno.

Tipovi Testiranja
Bezbednosno testiranje

Bezbednosno testiranje podrazumeva izvršavanje nefunkcionalnih tipova testova kako bi se otkrili sigurnosni nedostaci. Ono se radi kako bi se sprečili različiti hakerski napadi. Ovaj tip testiranja je obavezan za bilo koju aplikaciju koja je dostupna na Internetu.

Testiranje performansi

Testiranje performansi obuhvata obavljanje simulacije različitih opterećenja nad sistemom kako bi se konstatovalo kako sistem radi u smislu njegovog odziva i stabilnosti. Postoji mnogo podvrsta testiranja performansi kao što su Test opterećenja (kada se opterećenje povećava u normalnim uslovima), Stress test (kada su opterećenja izvan granica normale), Spike testiranje (kad se preopterećenje povećava samo u datom trenutku), itd. Rezultat izvršavanja ovih testova se obično daje u formi izveštaja koji analizira kapacitet servera.

Regresivno testiranje

Regresivno testiranje podrazumeva obavljanje funkcionalnog i nefunkcionalnog testiranja nad već testiranim delovima softvera kada su razvijene nove funkcionalnosti ili izvršeno unapređenje razvojnog koda. Ovaj proces se obavlja kako bi se osiguralo da promena razvojnog koda nema neželjene efekte na stare funkcionalnosti. U svrhu izvršavanja ovih testova, ne pišu se novi, nego se koriste već postojeći testovi. Ako se često menja razvojni kod aplikacije, resursno bi bilo zahtevno da se iznova manuelno izvršavaju svi test slučajevi tako da se test slučajevi automatiziju kako bi se uštedelo na vremenu i angažovanim resursima. Automatizacija u svrhu regresionog testiranja se ne radi samo za testove najvećeg prioriteta, nego i za testove čije je manuelno testiranje izuzetno vremenski i resursno zahtevno.

Statičko testiranje

Statičko testiranje obuhvata testiranje softverskog zahteva. Planirane aplikativne funkcionalnosti se analiziraju na postojanje nejasnoća, dvosmislenosti, kao i da li se uopšte mogu testirati. Svaki zahtevani detalj koji može dovesti do pogrešnog tumačenja je razjašnjen. Ovaj proces je poznat kao statična analiza.

Smoke testiranje

Smoke testiranje obuhvata niz jednostavnih testova koji za cilj imaju potvrdu rada najvažnijih funkcija sistema. Ovaj tip testiranja se radi kako bi se ispitalo da li je sistem dovoljno stabilan da podrži dalje testiranje tako da se ne ulazi u "dublji" test ako ključne funkcije ne rade.

Funkcionalno testiranje

Funkcionalno testiranje obuhvata proveru da li je softver razvijen u skladu sa funkcionalnom specifikacijom. Formiraju se detaljni test scenariji i koriste se kao osnova za čitav proces funkcionalnog testiranja - najčešće BlackBox metodologijom. Rezultat testiranja se dostavlja u formi izveštaja koji tačno navodi koje funkcije ne rade u skladu sa aplikativnim zahtevom.

Testiranje upotrebljivosti

Bilo da se neki softverski proizvod koristi na više platformi i različitim uređajima(desktop, web, Android, iOS, itd.) ili ne, važno je proveriti da li svi korisnici mogu da ga koriste lako i jednostavno. Ovaj proces je poznat kao testiranje upotrebljivosti. Ako korisnik ne može lako da koristi aplikaciju postoji velika šansa da će koristiti neku drugu konkurentu aplikaciju. Ovaj tip testiranja je obavezan kad je reč o web i mobilnim aplikacijama.