Programmalıq támiynat sapasın támiyinlew / 15-lekciya_ST
.pdf15-lekciya. Programmalıq támiynattı testten ótkeriw.
Joba:
1.Testlewdiń mánisi, maqseti hám tiykarǵı principleri (ISTQB).
2.Testlew túrleri: Funkcional hám Funkcional emes testlew.
3.Testlew dárejeleri: Birlik, Integraciyalıq, Sistemalıq, Qabıllaw.
4.Testlew texnikaları: Aq qutı, Qara qutı hám Avtomatlastırıw.
Testlewdiń tiykarları hám ISTQB principleri
Programmalıq támiynattı testten ótkeriw (Software Testing) – bul programmanıń haqıyqıy nátiyjesin kútilgen nátiyje menen salıstırıw hám qátelerdi (Defects/Bugs) tabıw procesi. Testlew tek ǵana "kodtı tekseriw" emes, al "sapanı bahalaw" hám "táwekelshilikti azaytıw" quralı. Testlewdiń baslı maqseti – ónim paydalanıwshıǵa jetpey turıp, onıń kemshiliklerin anıqlaw hám dúzetiw. Glenford Mayers aytqanınday: "Testlew – qáte tabıw maqsetinde programmanı orınlaw procesi". Tabılmaǵan qáte – bul sátsiz testlew.
Testlew procesi "ISTQB" (International Software Testing Qualifications
Board) tárepinen islep shıǵılǵan 7 tiykarǵı principke súyenedi:
1)"Testlew qátelerdiń bar ekenin kórsetedi, biraq joq ekenin dálillemeydi". Biz qansha testlesek te, programma "100% qátesiz" dep ayta almaymız.
2)"Hámme nárseni testlew múmkin emes" (Exhaustive testing is impossible). Barlıq kirisiw maǵlıwmatların hám kombinaciyalardı tekseriw ushın jıllar kerek boladı. Sol sebepli, biz "Riske tiykarlanǵan testlew" (Riskbased testing) qollanamız.
3)"Erte testlew" (Early Testing). Qáteni qansha erte tapsaq (talaplar basqıshında), onı ońlaw sonsha arzan boladı.
4)"Qátelerdiń jıynalıwı" (Defect Clustering). Qátelerdiń 80% i kodtıń 20% bóleginde (eń quramalı modullerde) jıynaladı (Pareto qaǵıydası).
5)"Pesticid paradoksı". Eger bir testti qayta-qayta orınlay berseńiz, ol jańa qátelerdi taba almaydı. Testlerdi jańalap turıw kerek.
6)"Testlew kontekstke ǵárezli". Bank programmasın testlew menen oyındı testlew hár qıylı boladı.
7) "Qátesizlik aldamshılıǵı" (Absence-of-errors fallacy). Eger programma qátesiz bolsa da, paydalanıwshıǵa kerek emes bolsa (talaplar qáte), ol sapasız.
Testlew procesi "STLC" (Software Testing Life Cycle) dep ataladı. Ol tómendegi basqıshlardan turadı: 1) Talaplardı analizlew. 2) Testti jobalastırıw (Test Plan). 3) Test scenariylerin (Test Cases) jazıw. 4) Test ortalıǵın (Environment) tayarlaw. 5) Testti orınlaw (Execution). 6) Qátelerdi xabarlaw (Bug Reporting) hám ońlawdı tekseriw (Retesting). 7) Testti juwmaqlaw (Closure). Hújjetlestiriw (Test Case, Bug Report) testlewdiń ajıralmas bólegi.
Testlew túrleri: Funkcional hám Funkcional emes
Testlewdiń maqsetine qaray eki úlken toparı bar: "Funkcional testlew" hám "Funkcional emes testlew".
Funkcional testlew (Functional Testing) – bul programmanıń "ne isleytuǵının" tekseriw. Ol biznes-logikaǵa hám paydalanıwshı talaplarına (Functional Requirements) tiykarlanadı. Mısalı: "Login túymesin basqanda ne boladı?", "Tovar sebetke qosıla ma?", "Esabat durıs esaplana ma?". Funkcional testlewge "Smoke Testing" (Tútin testi – tiykarǵı funkciyalardı tez tekseriw), "Sanity Testing" (Ońlanǵan kodtı tekseriw) hám "Regression Testing" (Eski funkcionaldıń buzılmaǵanın tekseriw) kiredi.
Funkcional emes testlew (Non-Functional Testing) – bul programmanıń "qalay isleytuǵının" (Quality Attributes) tekseriw. Bunga tómendegiler kiredi:
1)"Ónimlilik testlewi" (Performance Testing) – programma júkleme astında (Load Testing) qanday isleytuǵının hám stress jaǵdayında (Stress Testing) qanshelli shıdamlı ekenin tekseriw.
2)"Usability Testing" (Qolaylılıq) – interfeys paydalanıwshıǵa túsiniwge ańsat pa?
3)"Security Testing" (Qáwipsizlik) – xakerlik hújimlerge shıdamlılıq
(Penetration Testing).
4)"Compatibility Testing" (Úylesimlik) – hár qıylı brauzerlerde, operaciyalıq sistemalarda (Windows, Linux, Android) islewin tekseriw.
5)"Reliability Testing" (Isenimlilik) – uzaq waqıt úziliksiz isley ala ma?
Funkcional testlew ónimniń "islew qábiletin", al funkcional emes testlew ónimniń "sapasın" (tezlik, qáwipsizlik) tekseredi. Ekewi de birdey áhmiyetli.
Testlew dárejeleri: Piramida
Testlew procesi piramida sıyaqlı tómennen joqarıǵa qaray qurıladı (Test
Pyramid).
1)"Birlik testlew" (Unit Testing) – eń tómengi dáreje. Bunda programmanıń eń kishi bólekleri (funkciyalar, klasslar) izolyaciyada testlenedi. Birlik testlerdi ádette programmistler (Developers) jazadı. Bul testler tez isleydi, arzan hám qáteniń ornın anıq kórsetedi. Mısalı, qosıw funkciyasınıń (sum(2,3)
==5) durıslıǵın tekseriw.
2)"Integraciyalıq testlew" (Integration Testing). Birlik testler ótkeninen keyin, moduller biriktiriledi. Integraciyalıq testlew moduller arasındaǵı baylanıstı (Interface) hám maǵlıwmat almasıwdı tekseredi. Mısalı, "Baza menen API durıs baylanıstı ma?". Eki usılı bar: "Big Bang" (hámmesin birden qosıw) hám "Incremental" (birme-bir qosıw - Top-down, Bottom-up).
3)"Sistemalıq testlew" (System Testing). Bul basqıshta tolıq jıynalǵan programma "qara qutı" retinde testlenedi. Pútkil sistemanıń (End-to-End) talaplarǵa sáykesligi tekseriledi. Bul testlewdi ǵárezsiz QA komandası ótkizedi.
4)"Qabıllaw testlewi" (Acceptance Testing). Eń joqarı dáreje. Testlewdi buyırtpashı (Client) yamasa onıń wákilleri ótkizedi. Maqset – ónimdi qabıllaw yamasa qabıllamaw (User Acceptance Testing - UAT). Eger ónim UAT-dan ótse, ol "Production"ǵa (bazarǵa) shıǵarıladı. Geyde "Alpha" (ishki qabıllaw) hám "Beta" (sırtqı sheklengen paydalanıwshılar) testleri de qollanıladı.
Testlew usılları: Aq qutı hám Qara qutı
Testlew texnikaları programmanıń ishki kodın "kóriw" dárejesine qaray bólinedi.
"Aq qutı" (White Box) testlewde tester kodtıń ishki strukturasın, algoritmlerin hám logikasın tolıq biledi. Ol test scenariylerin kodtıń barlıq tarmaqlanıwların (Branch Coverage) hám jolın (Path Coverage) qamtıp alatuǵınday etip dúzedi. Mısalı, "If shártiniń True hám False jaǵdayları tekserildi me?". Aq qutı kóbinese Birlik testlewde qollanıladı.
"Qara qutı" (Black Box) testlewde tester kodtıń ishinde ne bolıp atırǵanın bilmeydi. Ol programmaǵa "Kirisiw" (Input) beredi hám "Shıǵıw" (Output) nátiyjesin tekseredi. Bul usıl paydalanıwshınıń kózqarasın imitaciya etedi. Qara qutı usılında "Ekvivalentlik klasslarına bóliw" (1-100 sanlar ushın: teris, 1-100, 100 den úlken) hám "Shegaralıq mánisler analizi" (0, 1, 100, 101) texnikaları qollanıladı.
"Kúlreń qutı" (Grey Box) – bul ekewiniń aralaspası. Tester kodtı tolıq bilmese de, maǵlıwmatlar bazasınıń strukturasın yamasa API-di biledi. Bul oǵan anıǵıraq test scenariylerin jazıwǵa járdem beredi.
Testlewdi avtomatlastırıw (Automation Testing) búgingi kúnde oǵada aktual. Qol menen testlew (Manual) qátege beyim hám waqıt aladı. Avtomatlastırıw (Selenium, JUnit, Appium) testlerdi tez, dál hám qayta-qayta (Regression) orınlawǵa imkaniyat beredi. Biraq 100% avtomatlastırıw múmkin emes. UI (Interfeys) tez ózgeretuǵınlıqtan, onı testlew qıyın. Avtomatlastırıw "Test Piramidası"na sáykes bolıwı kerek: kóp Unit testler, az UI testler.
Sonday-aq, "Test-Driven Development" (TDD) metodologiyası testlewdi kod jazıwdan aldın baslawdı usınıs etedi (Red-Green-Refactor). Bul kodtıń sapasın arttıradı hám testleniwshiligin (Testability) támiyinleydi. Juwmaqlap aytqanda, testlew – bul sapalı programmalıq ónimniń kepili. Ol programmanıń "densawlıǵın" tekseriwshi diagnostika. Testlewge jumsalǵan qarjı keleshektegi úlken zıyanlardıń (reputaciya, ońlaw qárejetleri) aldın aladı. Sapalı tester – bul "buzıwshı" emes, al "qurıwshı" (sapanı qurıwshı).
BAQLAW SORAWLARÍ:
1.Testlewdiń "Pesticid paradoksı" prinsipi neni ańlatadı hám onıń aldın alıw jolı qanday?
2.Funkcional hám Funkcional emes testlewdiń tiykarǵı ayırmashılıǵı nede?
3.Birlik testlew (Unit Testing) menen Integraciyalıq testlewdiń qamtıw dárejesi qanday?
4."Aq qutı" hám "Qara qutı" testlew usıllarınıń test scenariylerin dúziwdegi parqı nede?
5.Avtomatlastırılǵan testlewdiń artıqmashılıqları hám qanday jaǵdayda qol menen testlew qolaylıǵı bar?
