Кіріспе
Бағдарламалық жасақтамаға енгізілген өзгерістер бұрын жұмыс істеген функционалдылықты бұзған-бұзбағанын тексеру – бағдарламалық жасақтаманы әзірлеудегі маңызды қадам. Регрессиялық сынақ (көбінесе регрессиялық емес сынақ деп те аталады) – бұрын әзірленген және сыналған бағдарламалық жасақтаманың өзгерістен кейін де күтілгендей жұмыс істейтінін қамтамасыз ету үшін функционалдық және функционалдық емес сынақтарды қайта орындау. Егер бұрынғы жұмыс істеген функционалдық бұзылса, онда ол регрессия деп аталады. Регрессиялық сынақ талап ететін өзгерістерге қателерді түзету, бағдарламалық қамтамасыз етуді жетілдіру, конфигурацияны өзгерту және тіпті электронды компоненттерді (аппараттық құралдарды) ауыстыру кіруі мүмкін. Регрессиялық сынақ жиынтығы табылған әрбір ақаумен кеңейе бергендіктен, көбінесе тест автоматтандыру қолданылады. Алайда, графикалық интерфейс (GUI) регрессиялық сынақтарын әдетте қолмен орындау қажет. Кейде тиісті сынақтардың шағын жиынтығын анықтау үшін өзгерістердің әсерін талдау жүргізіледі (регрессиясыз талдау).
software development
Regression testing (rarely, non regression testing) is re running functional and non functional tests to ensure that previously developed and tested software still performs as expected after a change. If not, that would be called a regression. Changes that may require regression testing include bug fixes, software enhancements, configuration changes, and even substitution of electronic components (hardware). As regression test suites tend to grow with each found defect, test automation is frequently involved. The evident exception is the GUIs regression testing, which normally must be executed manually. Sometimes a change impact analysis is performed to determine an appropriate subset of tests (non regression analysis).
Өмірбаян
Бағдарламалық жасақтама жаңартылған немесе өзгертілген кезде, немесе өзгертілген платформада қайта пайдаланғанда, жаңа қателердің пайда болуы және/немесе ескі қателердің қайта оянуы жиі кездеседі. Кейде қайта ояну себебі, нашар нұсқаны басқару тәжірибесі (немесе нұсқаны басқарудағы қарапайым адам қатесі) салдарынан түзетудің жоғалып кетуі болады. Көбінесе, мәселені шешу "нашар" болады, себебі ол мәселені алғаш рет байқалған нақты жағдайда ғана шешеді, бірақ бағдарламалық жасақтаманың өмірлік циклінде туындауы мүмкін жалпы жағдайларда емес. Көбінесе, бір саладагы мәселені шешу, екінші саладагы бағдарламалық қатеге әкелуі мүмкін. Егер мүмкіндік қайта жобаланса, бастапқыда жасалған қателер қайта жобалау кезінде де қайта оянуы мүмкін. Бағдарламалық жасақтаманы әзірлеудің көптеген жағдайларында, қате анықталған және түзетілген кезде, осы қатені көрсететін тестті жазып, бағдарламаға енгізілген келесі өзгерістерден кейін осы тестті үнемі қайта іске қосу жақсы кодирование практикасы саналады. Бұл қолмен тестілеу процедуралары арқылы жасалуы мүмкін болса да, көбінесе автоматтандырылған тестілеу құралдарын пайдалану арқылы жасалады. Мұндай тест жиынтығында сынақ ортасына барлық регрессиялық тест жағдайларын автоматты түрде орындауға мүмкіндік беретін бағдарламалық құралдар бар; кейбір жобалар тіпті барлық регрессиялық тесттерді белгіленген интервалдарда қайта іске қосып, кез келген сәтсіздіктерді (бұл регрессияны немесе ескірген тестті білдіруі мүмкін) хабарлау үшін автоматтандырылған жүйелерді орнатады. Әдеттегі стратегиялар – мұндай жүйені әрбір сәтті құрастырудан кейін (кішкентай жобалар үшін), әр түнде немесе аптасына бір рет іске қосу. Бұл стратегияларды сыртқы құрал арқылы автоматтандыруға болады. Регрессиялық тестілеу – экстремалды бағдарламалау бағдарламалық жасақтаманы әзірлеу әдісінің маңызды бөлігі. Бұл әдісте жобалау құжаттары кең ауқымды, қайталанатын және автоматтандырылған тестілеу арқылы ауыстырылады, ол бағдарламалық жасақтаманың барлық кезеңінде жүзеге асырылады. Регрессиялық тестілеу функционалдық тестілеу аяқталғаннан кейін, басқа функциялардың жұмыс істеп тұрғанын тексеру үшін жүргізіледі. Корпоративтік ортада регрессиялық тестілеуді әдетте бағдарламалық қамтамасыз ету сапасы тобы әзірлеу тобы жұмысын аяқтағаннан кейін жүргізеді. Дегенмен, осы кезеңде табылған қателерді түзету ең қымбатқа түседі. Бұл мәселені бірлікте тестілеудің дамуымен шешуге болады. Дамушылар әрқашан даму циклінің бөлігі ретінде тест жағдайларын жазса да, бұл тест жағдайлары көбінесе функционалдық тесттер немесе күтілетін нәтижелерді ғана тексеретін бірлік тесттері болып келеді. Дамушыны тестілеу дамушыны бірлік тестілеуге назар аударуға және оң және теріс тест жағдайларын қосуға итермелейді.
Барлығын қайтадан тексеру
Бұл техника ағымдағы бағдарламаның барлық тест жағдайларын оның қалыпты жұмыс істеуін тексеру үшін қарастырады. Барлық жағдайларды қайта іске қосу қажет болғандықтан бұл қымбатқа түсуі мүмкін, бірақ өзгертілген кодтың нәтижесінде қателердің пайда болмауын қамтамасыз етеді.
Регрессиялық сынақты таңдау
Retest all-дан ерекшелігі, бұл техника барлық тест жиынтығының бір бөлігін іске қосады (барлық тестті қайтадан іске қосудың қымбаттығына байланысты), егер тест жиынтығының бөлігін таңдау құны Retest all техникасынан арзан болса. Шапшаң бағдарламалық жасақтама әзірлеуде – бағдарламалық жасақтаманың өмірлік циклы өте қысқа, ресурстар шектеулі, ал бағдарламалық жасақтамаға өзгерістер жиі енгізіледі – регрессиялық тестілеу көптеген қажетсіз жүктемелерге әкелуі мүмкін. Мысалы, компиляторды жобалау кезінде регрессиялық тестілеу кодтың көлемін және тест жиынтығын құрастыру мен орындауға кеткен уақытты бақылауға болады. Регрессиялық тесттерді жалпы түрде функционалдық тесттер немесе бірлік тесттер деп жіктеуге болады. Функционалдық тесттер әртүрлі деректермен толық бағдарламаны іске қосады. Бірлік тесттер жеке функцияларды, кіші бағдарламаларды немесе объектілердің әдістерін іске қосады. Функционалдық тестілеу құралдары мен бірлік тестілеу құралдары көбінесе автоматтандырылған және жиі компилятор жиынтығының құрамына кірмейтін үшінші тарап өнімдері болып табылады. Функционалдық тест – бағдарламаға енгізілетін деректердің скрипт түріндегі тізбегі болуы мүмкін, тіпті тышқанның қозғалысын және басуларын басқаруға арналған автоматтандырылған механизмды қамтуы мүмкін. Бірлік тест – кодтың өзіндегі жеке функциялар жиынтығы немесе сыналатын кодты өзгертпей оған сілтеме жасайтын драйверлер қабаты болуы мүмкін.