№13 Дәріс Тақырыбы: Программалық жабдықтарды тестілеу. Программалық жабдықтардың сапасын тексерудің түрлері
Программалық жабдықтың ӛмірлік циклының бір кезеңін програмалық жабдықты тестілеу процесі құрайды. Программалық жабдықтарды тестілеу ӛте кӛп уақытты қажет ететін күрделі де ұзақ процесс. Программалық жабдықты тестілеудің мақсаты бұл құрылған программаның бастапқы техникалық тапсырмаға сәйкес толық орындалуын тексеру және оны қолданысқа енгізгенге дейін мүмкін болатын қателерін табу болып есептеледі. Тестілеу процесі программалық жабдыққа қатысты жасалатын валидация және верификация процесстерінің құрамына кіреді. Халықаралық ISO 9000:2000 стандарты бойынша, валидация (validation)- программалық жабдықтың қолданушының немесе тапсырыс берушінің нақты талаптарын дәл және толық қанағаттандыратындығын объективті фактілер негізінде дәлелдеу үшін жүргізілетін процесс. Верификация (verification)- программалық жабдықтың сапасына қатысты ішкі ережелер мен стандарттарға спецификациялардың сақталған- сақталмағандығына тексеру үшін жасалады. Мысалы, программалық жабдықты орындауға жіберіп, белгілі бір мәндер үшін шыққан нәтиженің дұрыс-бұрыстығын тексеру валидация процесіне жатады, ал программаны орындауға жібермей-ақ, оның кодын рецензиялау, синтаксистік жазылуларын тексеру және т.б. верификациялау процесіне кіреді. Қазіргі уақытта программалық жабдықтардың сапасын тексеру үшін жүргізілетін тестілеу процесстерін классификациялау бірнеше категориялар бойынша жасалған. Программалық жабдықтың ӛзін тестілеу объектісі ретінде қарастыратын тестілеу процесстеріне келесілер жатады: - функционалдық тестілеу (functional testing); - ӛнімділікке тестілеу (performance testing); - жүктемелерге тестілеу (load testing); - стресс-тесілеу (stress testing); - тұрақтылыққа тестілеу (stability / endurance / soak testing); - юзабилити-тестілеу (usability testing); - қолданушының интерфейсін тестілеу (UI testing); - қауіпсіздікке тестілеу (security testing); - локализацияға тестілеу (localization testing); - үйлесімділікке тестілеу (compatibility testing). Тестілеу процесінің автоматтандырылу дәрежесіне байланысты келесі топтарға бӛлінеді: - қолмен тестілеу (manual testing); - автоматтандырылған тестілеу (automated testing) ; - жартылай автоматтандырылған тестілеу (semiautomated testing). Тестілеу процесінде қолданылатын теориялық әдіс- тәсілдерге немесе механизмдерге байланысты тӛмендегідей түрлері анықталған : - «қара жәшік» әдісі бойынша тестілеу (black box); - «ақ жәшік» әдісі бойынша тестілеу (white box); - «сұры жәшік» (grey box). Программалық жабдықтың құрамына кіретін компоненттерінің бір- біріне тәуелсіздігін немесе ӛзара байланыстарын тексеру мақсатында жүргізілетін тестілеу түрлері: - компоненттік (модульдік) тестілеу (component/unit testing); - интеграциялық тестілеу (integration testing); - жүйелік тестілеу (system/end-to-end testing). Программалық жабдықты уақытқа қатысты алғанда тестілеудің тӛмендегідей түрлері қолданылады: - альфа-тестілеу (alpha testing) - қабылдау кезіндегі тестілеу (smoke testing) - жаңа қызметтерге тестілеу (new feature testing) - регресстік тестілеу (regression testing) - тапсыру кезіндегі тестілеу (acceptance testing) - бета-тестілеу (beta testing) Программалық жабдықтардың сапасын кӛтеру мақсатында жыл ӛткен сайын тестілеу процестерінің қатары жаңа әдістермен, жабдықтармен толығып келе жатқанын байқауға болады.
№14 Дәріс Тақырыбы: Программалық жабдықтарды жӛндеу. Қателердің классификациясы
Программалық жабдықты құру кезіндегі маңызды кезеңдердің бірі – программаны жӛндеу кезеңі. Программаны жӛндеу (Debugging -отладка) кезінде, программадағы қателер табылып, бӛліп алынып жӛнделеді. Программаны жӛндеу үшін арнайы жӛндеуші- программалар (отладчиктер) қолданылады. Программалау жүйелерінде кіріктірілген жӛндеуші- программалар болады. Олар программистке программаны бақылап отыру мүмкіндігін береді, яғни қажет болған кезде тоқтату , қайта жүктеу, қадамдап орындау және т.б. сияқты әрекеттерді орындауды ұйымдастырады. Программист ӛзінің құрған қосымшасы орындалған кезде болуы мүмкін қателерді анықтап, ол қателер бола қалған жағдайда программаның қалай жұмыс жасауы керек екенін алдын-ала қамтамасыз етуі тиіс. Жалпы программалау кезінде жіберілетін қателерді келесі топтарға бӛледі: синтаксистік қателер, логикалық қателер және динамикалық қателер. Синтаксистік қателерге программа мәтінін теру кезінде операторлардың қате жазылуы, операторларды айыру белгілерінің қойылмауы, программа соңының кӛрсетілмеуі және т.б. жатады. Әдеттте синтаксистік қателерді анықтау компилятордың қызметіне жатады, яғни программа синтаксистік қатесі жӛнделмейінше компиляциядан ӛтпейді. Логикалық қателер, есеп алгоритмінің дұрыс құрылмауынан болады. Логикалық қатесі бар программалар түсініксіз жұмыс жасайды, мысалы, цикл алгоритмінде циклдан шығу шарты дұрыс құрылмаған болса, онда программа ешбір тоқтамастан қайталанып, нәтиже бермей жұмыс жасауы мүмкін, сол сияқты, есептеу алгоритмдерінде кӛбейтіндінің бастапқы мәнін нольге тең деп алғанда нәтижеде үнемі ноль шығуы мүмкін және т.б. . Мұндай қателерді программаны тестілеу, яғни әртүрлі мәндер үшін орындап кӛру арқылы табады. Динамикалық қателер бұл- программаның орындалуы кезінде пайда, болып оның орындалу тәртібінің бұзылуына немесе нәтижесіз тоқтап қалуына әкеліп соқтыратын қателер. Динамикалық қателерді немесе «орындау уақыты кезіндегі қателер» («ошибка времени выполнения», Runtime errors) деп те атайды. Динамикалық қателерге, мысалы, есептеу кезінде бӛлшек бӛлімінің нольге тең болуы, түбір астында теріс сан кездесіп қалуы, жады ресурстарының жетпей қалуы, программада кӛрсетілген маршрут бойынша файлдың табылмай қалуы, принтерде қағаздың бітіп қалуы және т.б. кӛптеген нәрселер жатады. Қосымшалардағы осындай динамикалық қателерге байланысты болатын жағдайларды «ерекше жағдайлар» деп атап, және олармен жұмыс жасау үшін программалау тілдерінде «ерекше жағдайларды ӛңдеу» түсінігі енгізілген. |