Кіріспе
Бағдарламалық қамтамасыз етуді тексеру – бағдарламалық қамтамасыз ету инженериясы, бағдарламалау тілдері және есептеу теориясы саласы, мақсаты – бағдарламалық қамтамасыз етудің күтілетін талаптарға сәйкес келуін қамтамасыз ету.
Кең ауқымы мен жіктелуі
Тексерудің кең анықтамасы оны бағдарламалық қамтамасыз етуді сынаумен байланыстырады. Осы ретте, тексеруге екі негізгі тәсіл бар: динамикалық тексеру, сонымен қатар эксперименттеу, динамикалық сынау немесе жай ғана сынау. Бұл бағдарламалық қателерді (кемшіліктерді) табуға көмектеседі. Статикалық тексеру, сондай-ақ талдау немесе статикалық сынау деп те аталады. Бұл бағдарламаның дұрыстығын дәлелдеуге пайдалы. Дегенмен, бағдарламалық қамтамасыз етудің нақты орындалу процесі мен статикалық тексерудің болжамы арасында қайшылықтар туындағанда, қате оң нәтижелерге алып келуі мүмкін. ACM есептеу классификациясы жүйесінде бағдарламалық қамтамасыз етуді тексеру тақырыптары «Бағдарламалық қамтамасыз ету және оның инженериясы» бөлімінде, «Бағдарламалық қамтамасыз етуді құру» тақырыбында қарастырылады, ал бағдарламаны тексеру «Есептеу теориясы» бөлімінде, «Семантика және логикалық ойлау, Бағдарламаны логикалық ойлау» тақырыбында да кездеседі.
Dynamic verification, also known as experimentation, dynamic testing or, simply testing. This is good for finding faults (software bugs). Static verification, also known as analysis or, static testing This is useful for proving the correctness of a program. Although it may result in false positives when there are one or more conflicts between the process a software really does and what the static verification assumes it does. Under the ACM Computing Classification System, software verification topics appear under "Software and its engineering", within "Software creation", whereas Program verification also appears under Theory of computation under Semantics and reasoning, Program reasoning.
Тар ауқымы
Тексеру, егер нақтырақ анықталса, тек статикалық сынақпен ғана тең болады және ол артефакттарға қолданылуы керек. Ал валидация (толық бағдарламалық өнімнің) динамикалық сынақпен тең болып, жұмыс істеп тұрған бағдарламалық өнімге (талаптардан басқа артефакттарына емес) қолданылады. Талаптарды валидациялау статикалық және динамикалық түрде жүзеге асырылуы мүмкін (артефакттарды валидациялауға қараңыз).
Салыстыру және растау
Бағдарламалық қамтамасыз етуді тексеруді бағдарламалық қамтамасыз етуді растаумен жиі шатастырады. Тексеру мен растау арасындағы айырмашылық мынада: бағдарламалық қамтамасыз етуді тексеруде «Біз өнімді дұрыс жасап жатырмыз ба?» деген сұрақ туындайды; яғни, бағдарламалық қамтамасыз ету өзінің техникалық талаптарына сәйкес пе? (Сияқты үй жобаға сәйкес келеді.) Бағдарламалық қамтамасыз етуді растауде «Біз дұрыс өнім жасап жатырмыз ба?» деген сұрақ туындайды; яғни, бағдарламалық қамтамасыз ету пайдаланушының нақты қажеттіліктерін қанағаттандыра ма? (Сияқты үй иесінің қажеттіліктері мен тілектеріне сай келеді.)
Software verification asks the question, "Are we building the product right? "; that is, does the software conform to its specifications? (As a house conforms to its blueprints.) Software validation asks the question, "Are we building the right product? "; that is, does the software do what the user really requires? (As a house conforms to what the owner needs and wants.)