Пайдалар:
- Регрессиялык тестирлөөнүн максатын түшүнүү жана жасалма интеллект менен өзгөрүүлөргө ылайык тесттерди тандап, регрессия учурларын түзө билүү
- Морттук тесттердин негизги себептерин диагностикалоо (убакыт, тартипке көз карандылык, жалпы абал, тышкы көз карандылык) жана симптомду басылбастан туруктуу чечимдерди колдонуу
- Регрессиялык топтомду тез, көз карандысыз жана ишенимдүү сактоо менен, кайталанган тестирлөөдөн арылтуу менен толук пакетти алдын ала иштетүү тартибин сактоо мүмкүнчүлүгү
Программалык камсыздоо дайыма өзгөрөт; Ар бир жаңы функция, ар бир оңдоо мурда иштеген нерсени бузушу мүмкүн. Мурда иштеген функциянын кийинки бузулушу регрессия деп аталат. Регрессиялык тестирлөө бул деградацияларды кармоо үчүн ар бир өзгөртүү менен болгон функцияларды кайра сынайт. Убакыттын өтүшү менен бул тесттик топтомдор чоңоюп баратат – миңдеген тесттер – жана эки чоң көйгөй пайда болот: люкс басаңдайт, ал эми кабыкча тесттер – бир эле коддо кээде өтүп, кээде өтпөй калган ишенимсиз тесттер – команданын тесттин жыйынтыгына болгон ишенимин жок кылат. Жасалма интеллект (AI) регрессиялык топтомду жакшы сакталган, тез жана ишенимдүү сактоодо күчтүү жардамчы болуп саналат. Бирок борбордук эскертүү бойдон калууда: AI морт сыноодон "өткөрүүнү" сунуштаса да, ал көп учурда чыныгы мүчүлүштүктөрдү жаап турган патчты чыгарышы мүмкүн. Сиздин милдет - симптомду басуу эмес, туруксуздуктун негизги себебин табуу.
Морттук сыноолордун негизги себептери
Морттук тестирлөө эң тымызын тестирлөө көйгөйү болуп саналат: ал өтүп кетеби же ийгиликсиз болуп кетеби, бул ишенимсиз, команданы "кайра тыгылып калса керек, кайра иштет" деген адатка түртөт — жана бул адат бир күнү чыныгы мүчүлүштүктөрдү "капчык" деп этибарга албайт. Негизги себептери:
- Убакыт/жарыш шарты: Сыноо операциянын бүтүшүн күтпөстөн жыйынтыкты текшерет. Эң таралган себеп.
- Тартипке көз карандылык: Тесттер бири-биринен калган маалыматтарга көз каранды; Тартип өзгөргөндө бузулат.
- Бөлүшүлгөн окуя: Бир нече тесттер бир эле тест маалыматын/колдонуучуну колдонот, карама-каршы келет.
- Тышкы көз карандылык: Чыныгы тармак, үчүнчү тараптын кызматы, системанын убактысы, кокустук мааниси.
- Айлана-чөйрөнүн айырмасы: Жергиликтүүгө которулат, CIде калат (үзгүлтүксүз интеграция чөйрөсү).
Эскертүү: "Бир нече жолу кайталап көрүү" менен морттук тесттен өтүү, көп учурда чыныгы параллелдүүлүк катасын жаап салат. Кайра аракет кылуу - дарылоо эмес, диагностикалык курал. Адегенде түпкү себебин табыңыз; Документтештирилген, чыныгы тышкы туруксуздуктун акыркы чарасы катары кайра аракетти гана колдонуңуз.
Сынамык тейлөө: пакеттин ден соолугун сактоо
Регрессиялык сюита бакчага окшош; Эгер кам көрүлбөсө, отоо чөптөр басып калат. AI үч тейлөө иштерине жардам берет:
1. Дубликат/керексиз сыноо тазалоо. Убакыттын өтүшү менен көптөгөн учурлар бир эле нерсени сынап көрүшөт. AI окшош тесттерди топтоону жана бириктирүүнү сунуштайт.
2. Морттук тест диагнозу. Сиз AIга сыноо кодун жана туруксуздуктун үлгүсүн бересиз; мүмкүн болгон негизги себептерин жана туруктуу чечимди сунуш кылат.
3. Сыноо тандоо/артыкчылык. Ар бир өзгөртүү менен бүт пакетти иштетүү кымбатка турат. Сынамык таасир анализи менен (өзгөрүлгөн коддун негизинде тиешелүү тесттерди гана тандоо) AI кайсы сыноолорду биринчи аткарууну сунуштайт. Бирок, релизге чейинки толук пакет сөзсүз керек.
Карантин: морттук тестти туура башкаруу
Сиз сыноо морт экенин байкадыңыз, бирок анын негизги себебин дароо оңдоого убактыңыз жок. Эмне кылуу керек? Эки туура эмес жол бар: тестти толугу менен жок кылуу (ал жүрүм-турум мындан ары такыр сакталбайт) же кайра аракет кылуу менен анын үнүн басуу (чыныгы мүчүлүштүктөрдү жабуу). Туура жол - карантинге салуу (аяк тестти негизги пакеттен убактылуу бөлүп, өзүнчө тизмеде көзөмөлдөө). Карантинге коюлган тестирлөө версияны бириктирүүгө тоскоол болбойт, бирок көрүнгөн карыз бойдон калууда жана үзгүлтүксүз каралат. Критикалык жагдай бул: карантин таштанды челек эмес, күтүү залы. Карантиндик тизме көбөйүп жатса, бул команданын тесттик ден соолугу начарлап баратканынын коңгуроосу. AI мезгил-мезгили менен карантин тизмеңизди карап чыгып, аны негизги себептер боюнча топтой алат; Ал жалпы себептерди ачып, жамааттык чечимдерди ишке ашырат, мисалы, "бардык 6 сыноо бир эле жалпы тест колдонуучуга туташтырылган".
Кеңеш: Ар бир карантин жазуусуна "ээсин" жана "акыркы каралып чыккан күндү" кошуңуз. Ээн карантин туруктуу таштанды жайга айланат; Морттук сыноолор ал жерде түбөлүк жашайт, анткени эч кимге маани бербейт.
Регрессия стратегиясынын таблицасы
Статус
Стратегия
AI ролу
кичине оңдоо
Жабыр тарткан аймак + түтүн сыноо
Тиешелүү тесттерди тандаңыз
жаңы өзгөчөлүк
Тиешелүү модуль + интеграция
Жаңы регрессия ишин сунуштаңыз
чоң рефактор
Толук регрессия пакети
Камтуу ажырымын талдоо
алдын ала чыгаруу
Толук пакет + чалгындоо
Приоритетти жана узактыгын баалоо
Шашылыш түз оңдоо
Фокусталган + критикалык жол
Минималдуу коопсуз тест топтому
Алсыз тездик / Күчтүү тездик
Алсыз: "Бул сыноо кээде өтпөй калат, аны оңдоңуз."
Күчтүү: "Бул сыноо 10 жүгүрүүнүн ичинен 3 жолу өтпөй калды, коду өзгөрбөйт. Туруксуздуктун негизги себебин диагностикалаңыз: убакыт/жарыш, буйрутма көз карандылык, жалпы абал, тышкы көз карандылык же чөйрөнүн айырмасы болушу мүмкүн. Сыноодо кайсы сызык ар бир мүмкүн болгон себепти көрсөтүп жатканын көрсөтүңүз. Туруктуу чечимди сунуштаңыз; Симптомду басуучу чечимди сунуш кылбаңыз, мисалы:' [код] Ката изи: [журнал]."
Күчтүү тездик; диагнозду түпкү себебине багыттайт жана симптомдорду басууга ачык тыюу салат.
Көчүрүү үчүн төрт шаблон
1) Морттук тест диагнозу:
Бул сыноо коду кээде өтүп кетет, кээде өзгөрбөй калат. Талапкерлердин түпкү себебин тизмектеңиз (расса, тартипке көз карандылык, жалпы абал, тышкы көз карандылык, саат/кокустук, айлана-чөйрөнүн айырмасы) жана ар бири үчүн тестте далилдер линиясын көрсөтүңүз. Туруктуу чечимди сунуштоо; акыркы чара катары жана негиздөө менен кайра аракет кылуу сыяктуу басуучу чечимди белгилеңиз. Сыноо: [код] / Туруксуздук үлгүсү: [канча жолу канча чуркоодо]
2) регрессиялык жагдайды сунуштоо:
Төмөнкү өзгөртүү киргизилди: [өзгөртүү/PR корутундусу].Ушул өзгөрүү бузула турган УЧУРДАГЫ жүрүм-турумду тизмектеп, ар бири үчүн регрессиялык сыноону сунуштаңыз. Айрыкча терс таасирлердин жана жалпы көз карандылыктын аймактарын белгилеңиз.
3) Кайталанма тестти тазалоо:
Төмөнкү тест топтомун текшериңиз. Бир эле жүрүм-турумду сынаган кайталануучу же кайталанган учурларды топтоо; Ар бир топ үчүн кайсынысын сактап, кайсынысын бириктиришимди сунуштаңыз. Камтууну жоготуу коркунучу бар болсо эскертиңиз. Тесттер: [тизме/код]
4) Сыноо эффектин тандоо:
Төмөнкү файлдар/функциялар өзгөрдү: [тизме]. Учурдагы тесттик топтомдон мен биринчи аткарышым керек болгон тесттерди тандап, негиздеңиз (өзгөрүлгөн код менен түз/кыйыр байланышы барлар). Эскертүү: релизге чейинки толук топтомун дагы эле иштете берем.
үч мини учурлар
1-жагдай - Чыныгы ката Retry менен жабылган. Бир команда маал-маалы менен калган төлөм сынагына 3 жолу кошулду; Сынак азыр дайыма "өтүп" жатты. "Морт тест диагностикасын" колдонуу туруксуздук чыныгы жарыш шартынан келип чыкканын аныктады: жогорку жүктөөдө төлөмдү ырастоо кээде эки жолу иштетилет. Бир нече ай бою, Retry түз эфирде акчаны жоготууга алып келиши мүмкүн болгон катаны жаап салды. Түпкү себеп оңдолуп, кайра аракет кылыңыз.
2-жагдай - Пакет кичирейип, ылдамдык жогорулады. 1,400 тесттен турган регрессиялык топтом 55 мүнөттү алды. "Тестти дубликатты тазалоо" менен 380 тест дубликат же жабык болуп чыкты; бириктирилди. Пакет 900 тестке чейин кыскарган, убакыт 34 мүнөткө чейин кыскарган, камтуу өлчөмдүү кыскарган эмес. Тезирээк пикирлер команданы тез-тез сынап турууга үндөдү.
3-жагдай - Тартипке көз карандылык. Тест ар дайым жергиликтүү деңгээлде өтмөк, бирок CIде кокусунан өтпөй калат. AI диагностикасы тест башка тест тарабынан түзүлгөн колдонуучуга көз каранды экенин көрсөттү, CIде ал сынды, анткени тесттер параллелдүү/башка тартипте өттү. Ар бир тест өзүнүн маалыматтарын түзүү үчүн жасалган; Чечкинсиздик бүттү.
Жалпы каталар
- Кайра аракет кылуу менен морттук сыноону өчүрүү. Негизги себепти издебестен кайра аракет кылуу; чыныгы катаны жаап-жашыруу.
- "Кайра тыгылып" маданияты. Кызыл натыйжаларды үзгүлтүксүз четке кагуу; Бир күнү, чыныгы катаны өткөрүп жиберүү.
- Пакетти такыр кеспейт. Кайталанма тесттердин топтолушуна жана пакеттин жайланышына жол берүү.
- Тесттер ортосундагы көз карандылык. Тесттер жалпы шартка/ырааттуулукка негизделген; белгисиздиктин булагы.
- Өзгөртүлгөн бөлүгүн гана сыноо жана толук пакетти өткөрүп жиберүү. Чыгарууга чейинки жарлык; Жашыруун терс таасирлери качып.
- Тышкы көз карандылыкка таянуу. Чыныгы тармак/саат/кокустук мааниге негизделген тесттер; табигый туруксуз.
Кыскача айтканда
Регрессиялык тестирлөө мурда иштеген функцияларды бузган өзгөртүүлөрдү кармайт; Бирок пакеттер чоңойгон сайын, жайлоо жана морт сыноо ишенимди кетирет. Морттук тестирлөөнүн негизги себептери, адатта, убакыт, буйрутма көз карандылык, жалпы абал жана тышкы көз карандылык болуп саналат. AI - диагностика, тазалоо жана тестти тандоодо күчтүү жардамчы; Бирок чечкинсиздикти кайра аракет кылуу менен басуу чыныгы каталарды жаап салат. Негизги себепти табыңыз, көз карандысыз жана детерминисттик тесттерди жасаңыз, пакетти үзгүлтүксүз кыркыңыз, чыгаруудан мурун толук пакетти иштетиңиз.
Колдонмо тапшырмасы
Өзүңүздүн долбооруңуздан морт (же туруксуз көрүнгөн) тестти тандаңыз. Талапкерлерди түп-тамырынан ажыратып алыңыз жана "морт тест диагнозу" шаблоны менен тесттеги далилдерди текшериңиз. Негизги себебин аныктап, кайра аракет кылбастан туруктуу чечимди ишке ашырыңыз. Андан кийин пакетиңизден 10 тестти тандап, "кайталанган тестти тазалоо" менен айкалыштырыла тургандарды табыңыз. Канча сыноо туруксуздугун алардын түпкү себебинен чечкениңизди жана топтомдон канча керексиз учурларды алып салганыңызды кабарлаңыз.
текшерүү тизмеси
- [ ] Мен морт тесттин негизги себебин аныктадым; Симптомду басчу эмесмин.
- [ ] Мен Кайра аракет кылууну дарылоо эмес, негиздүү акыркы чара деп эсептедим.
- [ ] Мен тесттерди көз карандысыз жана детерминисттик кылдым (тышкы көз карандылыктан обочолонгон).
- [ ] Мен регрессиялык топтомдон кайталанган/керексиз тесттерди кырктым.
- [ ] Мен өзгөртүүнүн негизинде сынап көрүүнү чечтим, бирок толук пакетти алдын ала чыгардым.
- [ ] Мен ар бир кызылды олуттуу кабыл алдым, "кайра жабышты, өтүп кет" маданиятына каршы.