Testiranje programa je proces otkrivanja pogrešaka u softverskom proizvodu
Pri razvoju softvera značajan dio procesa proizvodnje temelji se na testiranju programa. Ono što je to i kako se ova aktivnost provodi bit će raspravljano u ovom članku.
sadržaj
Što se zove testiranje?
To se podrazumijeva kao postupak tijekom kojeg se pokreće softver za pronalaženje mjesta pogrešnog funkcioniranja koda. Da bi se postigao najbolji rezultat, teško se skupi ulaznih podataka namjerno konstruira. Glavni cilj revizora je stvoriti optimalne mogućnosti za neuspjeh softverski proizvod. Iako ponekad testiranje razvijenog programa može biti pojednostavljeno na rutinsku provjeru operativnosti i izvedbe funkcija. To štedi vrijeme, ali često je popraćeno nepouzdanim softverom, nezadovoljstvom korisnika i tako dalje.
efikasnost
Koliko dobro i brzo pogreške imaju značajan utjecaj na cijenu i trajanje razvoja softvera potrebne kvalitete. Dakle, unatoč činjenici da testeri primaju plaće nekoliko puta manje od programera, trošak njihovih usluga obično doseže 30-40% troškova cijelog projekta. To je zbog snage osoblja, jer je traženje pogreške neuobičajen i prilično težak proces. Ali čak i ako je softver prošao solidan broj testova, onda ne postoji 100% jamstvo da neće biti grešaka. Jednostavno se ne zna kada će se očitovati. Kako bi potaknuli ispitivače da odaberu vrste verifikacija koje će vjerojatno pronaći pogrešku, koriste se različite metode motivacije: moralne i materijalne.
Pristup radu
Optimalna situacija je kada se implementiraju različiti mehanizmi kako bi se osiguralo da u softveru nema većih pogrešaka od samog početka. Zbog toga je potrebno voditi brigu o pravilnom dizajnu arhitekture, preciznom tehničkom zadatku, a također je važno ne napraviti prilagodbe kada je projekt već započeo. U tom slučaju, tester je suočen s zadatkom pronalaženja i određivanja malog broja pogrešaka koje ostaju u konačnom rezultatu. To će uštedjeti vrijeme i novac.
Što je test?
Ovo je važan aspekt inspektorske aktivnosti, što je neophodno za uspješno otkrivanje nedostataka programskog koda. Potrebni su za kontrolu točnosti aplikacije. Što je uključeno u test? Sastoji se od svojih početnih podataka i vrijednosti, koje bi se trebale dobiti kao rezultat (ili srednji). Da bi se uspješno identificirali problemi i nedosljednosti, testovi bi se trebali sastaviti nakon što je algoritam razvijen, ali programiranje nije započelo. I poželjno je koristiti nekoliko pristupa pri izračunavanju potrebnih podataka. U ovom slučaju, vjerojatnost otkrivanja pogrešaka povećava se zbog činjenice da je moguće pregledati kod s drugačije točke gledišta. Kompleksni testovi trebaju osigurati provjeru vanjskih učinaka gotovog softverskog proizvoda, kao i algoritme rada. Poseban je interes ograničavajućim i degeneriranim slučajevima. Dakle, u praksi aktivnosti s pogreškama, često se može otkriti da ciklus radi jedanput manje ili više nego što je planirano. Također je važno testirati računalo, zbog čega možete provjeriti sukladnost željenom rezultatu na različitim strojevima. To je neophodno kako bi se osiguralo da softver može raditi na svim računalima. Osim toga, testiranje računala na kojem će se izvršiti razvoj važan je u razvoju razvoja više platformi.
Umjetnost pronalaženja pogrešaka
Programi su često usmjereni na rad s velikim brojem podataka. Je li stvarno potrebno stvoriti ga u potpunosti? Ne, nije. Praksa "minijaturizacije" programa postala je široko rasprostranjena. U tom slučaju postoji razumno smanjenje količine podataka u usporedbi s onim što treba koristiti. Pogledajmo ovaj primjer: postoji program u kojem se kreira matrica od 50x50. Drugim riječima - trebate ručno unijeti 2500 tisuća vrijednosti. To je, naravno, moguće, ali će trebati jako dugo vremena. No, za testiranje performansi, softverski proizvod prima matricu, čija je dimenzija 5x5. Da biste to učinili, morat ćete unijeti već 25 vrijednosti. Ako u ovom slučaju postoji normalan rad bez grešaka, to znači da je sve u redu. Iako ovdje postoje zamke, koje se sastoje u činjenici da se u slučaju minijaturizacije događa situacija, zbog čega promjene postaju implicitne i privremeno nestaju. Također je vrlo rijetko, ali također se događa da postoje nove pogreške.
Postići ciljeve
Softver za testiranje nije jednostavan zadatak jer se proces ne može potpuno formalizirati. Veliki programi gotovo nikada nemaju potrebni točan standard. Stoga, kao vodič, upotrebljava se niz neizravnih podataka koji, međutim, ne mogu u potpunosti odražavati karakteristike i funkcije razvoja softvera koji se debugiraju. I treba ih odabrati na takav način da se točan rezultat izračuna čak i prije testiranja softverskog proizvoda. Ako to nije učinjeno unaprijed, onda postoji napast da sve uzmemo u obzir, a ako rezultat stroja padne u očekivani raspon, onda je pogrešna odluka da je sve u redu.
Provjerite u različitim uvjetima
Tipično, testiranje programa događa se u količinama potrebnim za minimalnu provjeru funkcionalnosti unutar ograničenog raspona. Aktivnosti se provode s promjenljivim parametrima, kao i uvjetima njihova rada. Proces testiranja može se podijeliti u tri faze:
- Provjerite u normalnim uvjetima. U tom se slučaju provjerava osnovna funkcija razvijenog softvera. Rezultat bi trebao biti kako se očekuje.
- Provjerite u hitnim slučajevima. U tim je slučajevima potrebno dobiti granične podatke, što može negativno utjecati na učinkovitost kreiranog softvera. Kao primjer, možete raditi s izuzetno velikim ili malim brojem, ili općenito, potpunim nedostatkom informacija.
- Provjera odstupanja. To uključuje upotrebu podataka koji se nalaze izvan procesa obrade. U takvim situacijama vrlo je loše kad ih softver percipira kao korisnu za izračun i daje vjerodostojan rezultat. Potrebno je voditi računa da u takvim slučajevima postoji odbijanje svih podataka koji se ne mogu ispravno obrađivati. Također je potrebno pružiti informacije o ovom korisniku
Testiranje softvera: Vrste
Vrlo je teško stvoriti softver bez pogrešaka. Ovo traje znatnu količinu vremena. Da biste dobili dobar proizvod, često se koriste dvije vrste testiranja: "Alpha" i "Beta". Što su oni? Kada kažu o alfa testiranju, to znači testiranje, koje provodi osoblje programera u "laboratorijskim" uvjetima. Ovo je posljednji korak u testu prije nego što je program prenesen krajnjim korisnicima. Stoga se programeri pokušavaju okrenuti do maksimuma. Radi lakšeg rada, podaci se mogu zapisati kako bi se stvorila kronologija problema i njihovo otklanjanje. Beta testiranje podrazumijeva isporuku softvera ograničenom broju korisnika tako da mogu iskoristiti program i identificirati propuštene pogreške. Značajka u ovom slučaju je da se često softver ne koristi u namjeravanu svrhu. Zbog toga će se otkriti pogreške gdje se ništa prije nije vidjelo. Ovo je sasvim normalno i ne treba se brinuti zbog ovoga.
Završetak ispitivanja
Ako su prethodni koraci uspješno završeni, ostaje provesti test prihvaćanja. U ovom slučaju postaje puka formalnost. Tijekom ove provjere postoji potvrda da nema pronađenih dodatnih problema i softver se može izdati na tržište. Što je važniji konačni rezultat, točnija provjera treba provesti. Potrebno je osigurati da su sve faze uspješno prošle. To je ono što proces testiranja općenito izgleda. A sada ćemo ući u tehničke detalje i razgovarati o korisnim alatima kao i testnim programima. Koji su oni iu kojim slučajevima se koriste?
Automatsko testiranje
Prethodno se vjerovalo da je dinamička analiza razvijenog softvera - to je previše teško pristup, što je neučinkovito za otkrivanje nedostataka. No, zbog povećanja složenosti i volumena programa, pojavio se suprotan pogled. Automatsko testiranje se koristi gdje su najvažniji prioriteti učinkovitost i sigurnost. I oni bi trebali biti s bilo kojim ulazom. Kao primjer programa za koje je takvo ispitivanje poželjno, mogu se navesti sljedeće: mrežni protokoli, web poslužitelj, sandboxing. Zatim ćemo uzeti u obzir nekoliko uzoraka koji se mogu koristiti za takve aktivnosti. Ako ste zainteresirani za besplatne programe testiranja, onda je prilično teško naći kvalitetne one među njima. No, postoje hakirane "piratske" verzije dobro dokazanih projekata, tako da se možete obratiti njihovim uslugama.
lavina
Ovaj alat pomaže otkriti nedostatke testiranjem programa u načinu dinamičke analize. On prikuplja podatke i analizira put izvršenja razvijenog objekta. Testeru se daje skup ulaznih podataka koji uzrokuju pogrešku ili zaobilaze skup dostupnih ograničenja. Zbog prisutnosti dobrog algoritma za provjeru, razvija se velik broj mogućih situacija. Program prima različite skupove ulaznih podataka koji vam omogućuju simuliranje značajnog broja situacija i stvaranje uvjeta gdje je najvjerojatnije pojava neuspjeha. Važna prednost programa je korištenje heurističkog mjerenja. Ako postoji problem, tada je pogreška u aplikaciji velika vjerojatnost. Ali ovaj program ima ograničenja poput provjere samo jedne označene ulazne utičnice ili datoteke. Prilikom izvođenja operacije kao što je testiranje programa, bit će detaljne informacije o prisutnosti problema s nulama, beskonačnim petljama, pogrešnim adresama ili pogreškama zbog korištenja knjižnica. Naravno, ovo nije potpuni popis otkrivenih pogrešaka, već samo njihovi uobičajeni primjeri. Ispravite nedostatke, nažalost, morat ćete razvijatelji - automatska sredstva za te svrhe nisu prikladna.
Klee
Ovo je dobar program za testiranje memorije. Može presresti otprilike 50 poziva sustava i velik broj virtualnih procesa, čime se obavlja paralelno i zasebno. No, općenito, program ne traži pojedinačne sumnjive lokacije, već obrađuje maksimalnu moguću količinu koda i analizira korištene putove podataka. Zbog toga vrijeme testiranja programa ovisi o veličini objekta. Na provjeru se kladiti na simboličke procese. One su jedan od mogućih načina obavljanja zadataka u programu koji se testira. Zbog paralelne operacije možete analizirati veliki broj varijanti aplikacije koja se istražuje. Za svaku stazu nakon završetka ispitivanja počinju skupovi ulaznih podataka iz kojih je započeo ispitivanje. Treba napomenuti da testiranje programa pomoću KLEE pomaže otkriti veliki broj odstupanja, što ne bi trebalo biti. Ona može pronaći probleme čak iu aplikacijama koje su razvijene desetljećima.
- Modularno programiranje
- Štitimo računalo: na temelju čega se temelji antivirusni program?
- Vrste antivirusnih programa. Virusi i antivirusni programi
- Program za testiranje RAM-a (Windows 7)
- Koja je posebna značajka softvera između platformi?
- Stvaranje i korištenje računalnih programa. Računalni program je ...
- Regresijsko ispitivanje softvera. Što je testiranje regresije?
- Metode testiranja softvera i njihova usporedba. Ispitivanje metodom `crne kutije` i ispitivanje…
- Benchmark za računalo: što je to?
- Što je "Sigurnost"? Pregled antivirusnog programa
- Program za testiranje video kartice na ruskom jeziku
- Programi za provjeru SSD pogona zbog pogrešaka i operativnosti
- Kako mogu provjeriti antivirusni program instaliran na računalu?
- Funkcionalno ispitivanje
- Provjera je postupak potvrde softverskog proizvoda
- Koji je programski kod, aplikacija, pogreške
- Debug - što je to? Opis alata
- Najbolji programi za ažuriranje upravljačkih programa
- Vrste računalnog softvera
- Korisničko sučelje programa
- Najjednostavnije sredstvo za uklanjanje zlonamjernog softvera