Software Test and Silicon Validation

Share

Firma u kojoj radim, Avisto Eastern Europe, se između ostalog bavi i testiranjem softvera i silikon validacijom. U nastavku ću pokušati da bliže objasnim ova dva domena.

Software testing

Testiranje softvera je dugotrajan proces koji obično počinje kada i dizajn softvera. U zavisnosti od stepena automatizacije može uključivati manji ili veći broj ljudi i time direktno uticati na cenu projekta.
Obično se potroši oko 50% resursa predviđenih za projekat na testiranje, mada ta cifra u nekim slučajevima ide i do 80%.

Software Test And Silicon ValidationOve velike cifre su razlog za što većom automatizacijom testiranja. Otuda test inženjer mora do poznaje softversku automatizaciju.

To je, naravno, vrlo obiman zadatak i da bi se uspešno obavio potrebno je dosta iskustva kao i široko poznavanje softverskih alata, okruženja, itd.

Takođe, u zavisnosti od potrebe klijenta, često se susrećemo i sa najrazličitijim operativnim sistemima na kojima je potrebno izvršiti testiranje. Počevši od Win XP do Win10, razne verzije Linux-a kao i razne verzije OSX-a (Sierra, El Captain, …). To implicira jedan od direktnih zahteva za test inženjera ili bolje reći inženjera za razvoj softvera u domenu testiranja: potrebno je da poznaje što veći broj operativnih sistema. To ne znači samo da ih koristi, već i da ih poznaje malo dublje. Recimo, načine na koje je moguće automatizovati određene akcije, mrežni sistem, specifičnosti konzole, kao i razlike u pogledu primenljivih programskih jezika.

Što se tiče programskih jezika, klijenti često koriste različite programske jezike zato što su već upoznati sa određenim jezicima i obično žele i testiranje da bude u jeziku koji oni poznaju. Zato se od softverskog inženjera u oblasti testiranja očekuje poznavanje što većeg broja programski jezika. Takođe i poznavanje jezika koji se mogu izvršavati na više različitih platformi (npr. Python, Java, C, …).

Sa povećanom automatizacijom, povećana je i količina podataka koja se generiše test ciklusom. Veoma veliki izazov je kako skladištiti te informacije za efikasno korišćenje i kako ih prikazati razvojnom timu.

Može se dizajnirati potpuno automatski test sistem koji je veoma detaljan i koji će svake noći generisati 1GB tekstualnih podataka, ali se postavlja pitanje ko će to analizirati?

Zato se u softverskom testiranju često koriste baze podataka. Ovo nameće čitav niz novih izazova. Koju bazu koristiti za konkretan projekat? Kako organizovati bazu? Koliko je efikasan pristup bazi? Kako će sve to izgledati posle par meseci i stotinak test ciklusa? Da li će se na rezultate upita čekati više minuta ili par sekundi ili pak delić sekunde?

Kada dobijemo podatke od interesa, potrebno ih je vizuelno predstaviti. Za to se u poslednje vreme intenzivno koriste WEB tehnologije: HTML, JavaScript, HTML templating, Bootstrap, jQuery, PHP, Node.js, AngularJS, itd.

Iz svega ovoga vidimo da je spisak tehnologija koje mora da poznaje inženjer za razvoj softvera u oblasti testiranja veoma veliki i da je neophodno konstantno usavršavanje i učenje.

Takođe, osim poznavanja same tehnologije potrebno je uložiti dodatni trud u optimizaciju (vremena, resursa, …), u interakciju između više tehnologija, kao i u pouzdanost i robustnost test sistema.

Često se kao platforme koriste i mobilni uređaji, pa ćemo spisku operativnih sistema koje je poželjno poznavati dodati još i Android i iOS. Na ovim sistemima je često potrebno razviti test aplikaciju kao podršku glavnom test programu ili kao samostalnu aplikaciju, pa je znanje Jave jako poželjno, kao i znanje Objectiv C-a ili SWIFT-a. Želim da naglasim da ovde nije akcenat na detaljnom poznavanju jezika, već na frameworku, tj. API skupu.

Rad sa velikim firmama podrazumeva da su one već implementirale neki content management sistem, kao i continuous integration system. Ovo znači da je potrebno poznavati git najčešće kao i Jenkins.

U cilju automatizacije, danas se softver koji treba testirati često preuzima preko git-a i test startuje automatski preko Jekins-a. Na taj način je moguće imati razvojne timove na više lokacija, timove za testiranje na više lokacija, kao i podatke- potpuno distribuirani sistem. Takođe je moguće paralelno, daljinsko startovanje testova na više mašina u isto vreme.

Poseban vid testiranja je GUI testiranje, gde koristimo softverske robote koji oponašaju korisnika tako što su programirani da kliknu na određeno dugme, da pročitaju vrednost iz specificiranog text box-a, da selektuju definisanu stavku iz combo box-a i tako dalje.

Osim svega nabrojanog, za softversko testiranje su jako važne i komunikacione veštine. Potrebno je otkriveni problem opisati što preciznije, sa što više, ali neophodnih podataka, a ne nepotrenih, koji će samo da zaguše razvojni tim. Potrebno je objasniti na sastancima sa razvojnim timovima, pronađene probleme u softveru, napraviti posebne testove koji će uspešno izolovati određeni problem, itd.

Do sada sam izložio dosta toga što je potrebno test inženjeru da zna i svestan sam da to deluje nemoguće. Tako i jeste.

Software Test And Silicon Validation
Odgovor je u timskom radu. Jedan čovek ne može sve nabrojane tehnologije podjednako dobro da poznaje i da u svemu bude dobar. Zato sastavljamo timove od ljudi koji su najpogodniji za određeni projekat. Zato je neophodna dobra komunikacija i atmosfera unutar timova. Što se pojedinca tiče, što više zna, veće su šanse da bude uključen u neki od timova.

Silicon validation

Silicon validation podrazumeva testiranje čipova.

Čipovi se obično nalaze zalemljeni na odgovarajućoj test ploči.

Zadatak test inženjera je da testira sve unutrašnje komponente čipa (kao štu su npr. DMA kontroler, GPIO, timer, ADC, DAC, …). Testiraju se tako što se pišu programi najčešće u C-u ili Assembler-u (zavisno od čipa koji se testira). Ovi programi se izvršavaju, a zatim se analiziraju rezultati.

Software Test And Silicon Validation
Zbog toga je potrebno poznavanje C-a, Assembler-a kao i arhitekture mikrokontrolera.

I ovde se teži ka automatizaciji, tako da se često test program sastoji osim od low lewel programa koji se programiraju u mikrokontroler i od high level programa koji nadgleda test. Ovaj high level program može da bude na primer napisan u C++-u, C#-u, Python-u, …

Slično kao i kod softverskog testiranja i ovde se generišu velike količine podataka, tako da je potrebno vođenje računa o njihovom efikasnom skladištenju. Ovde je dodatni problem na koji način preuzeti podatke iz mikrokontrolera koji se testira (serijskim portom, USB portom, Ethernet-om, …).

Osim toga neophodna je i vizuelizacija podataka prikupljenih tokom testiranja. To može biti HTML tabela jednostavnija ili komplikovanija (sa JavaScript post-procesiranjem) kao i npr. tehnika rekonstrukcije gde se na osnovu podataka sa mernih uređaja rekonstruiše oscilogram.

Osim ovoga, potrebno je poznavati i mernu instrumentaciju kao i softverske biblioteke za pristup potrebnim instrumentima.

Dosta se često koristi LabVIEW kao grafički programski jezik, specijalno dizajniran za rad sa mernim instrumentima i automatizaciju testiranja. Znanje LabVIEW-a je sistematizovano u više nivoa, tako da postoji zvanje LabVIEW arhitekte (CLA), developer-a (CLD) kao i osnovni nivo (CLAD). U našim timovima imamo više CLAD i CLD inženjera kao i jednog CLA koji je jedini u Srbiji.

Software testing  & silicon validation

Softversko testiranje je često povezano sa silicon validation kod nekih naših klijenata.

Klijent često proizvede čip, ali uz njega isporučuje i prateći softver. Često je potrebno testirati i čip i prateći softver, tako da se ovde prepliću ove dve naizgled potpuno različite discipline.

Test framework je obično vrlo interesantan i heterogen, tako da se u toku jednog dana može programirati u C-u test program za određeni mikrokontroler, podešavati u Python-u test framework i korigovati npr. HTML izlaz testa.

Zato je ovo veoma interesantno polje za kolege koji imaju višestruka interesovanja- od hardvera to softvera, od assembler-a do C#-a ili Python-a, od baza podataka do HTML-a, itd.

4
Pošto jedan čovek ne može sve ovo znati, jako je lepo biti deo tima u kome vlada atmosfera kolegijalnosti i deljenja informacija, jer se može dosta toga naučiti iz domena koji već poznajemo, a možda zainteresovati i za neki sasvim nov domen.

Share

Prijavi se da prvi dobijaš nove blogove i vesti.

Оставите одговор

Zoran Milosavljević

Technical Lead SW Test & Si Validation @Avisto Eastern Europe
mm

Zoran Milosavljević je rođen 11.03.1973. u Ćupriji. Ima diplomu dipl. ing. elektronike sa Elektronskog fakulteta u Nišu. Svoju karijeru je započeo u Philips-u (Nemačka) i nastavio u NXP-u (Austrija).

Od 2008. godine zaposlen je u ADVANS grupi, pod kojom u Srbiji posluju Avisto i Elsys Eastern Europe, i odgovoran je za domen SW Test & Si Validation. Od tada, kao technical lead, radi na projektima za ključne korporativne klijente.

Prijavi se da prvi dobijaš nove blogove i vesti.

Категорије