Добивки:
- Разберете ја целта на регресивното тестирање и бидете во можност да избирате тестови и да произведувате случаи на регресија според промените со вештачката интелигенција
- Способност да се дијагностицираат основните причини за кревките тестови (тајминг, зависност од нарачка, споделена состојба, надворешна зависност) и примена на трајни решенија без да се потисне симптомот
- Способност да се одржи дисциплината за извршување на пред-издавањето на целосниот пакет додека се одржува регресиониот пакет брз, независен и сигурен со елиминирање на дупликатното тестирање
Софтверот постојано се менува; Секоја нова функција, секое поправка, може да скрши нешто што работеле порано. Последователното нарушување на претходно работната функција се нарекува регресија. Регресивното тестирање е повторно тестирање на постоечката функционалност со секоја промена за да се фатат овие деградации. Со текот на времето, овие тест пакети стануваат се поголеми - илјадници тестови - и се појавуваат два големи проблеми: пакетот се забавува, а несигурните тестови - несигурни тестови кои понекогаш поминуваат, а понекогаш не успеваат во истиот код - ја уништуваат довербата на тимот во резултатите од тестот. Вештачката интелигенција (ВИ) е моќна помош за одржување на комплетот за регресија добро одржуван, брз и сигурен. Но, централното предупредување останува: додека вештачката интелигенција може да понуди да „положи“ кревок тест, таа често може да произведе лепенка што покрива вистинска грешка. Ваша задача е да ја пронајдете основната причина за нестабилноста, а не да го потиснувате симптомот.
Главните причини за кревки тестови
Кревкото тестирање е најподмолниот проблем со тестирањето: тоа е несигурно дали ќе помине или ќе не успее, туркајќи го тимот во навика „мора повторно да се заглавил, да го стартувате повторно“ - и оваа навика еден ден ќе игнорира вистинска грешка како „ронлива“. Главните причинители:
- Состојба на тајминг/трка: Тестот го проверува резултатот без да се чека да заврши операцијата. Најчеста причина.
- Зависност од редослед: Тестовите зависат од податоците што ги оставаат едни со други; Се крши кога се менува редоследот.
- Заеднички случај: Повеќе тестови користат исти податоци/корисник од тестот, конфликтни.
- Надворешна зависност: вистинска мрежа, услуга од трета страна, системско време, случајна вредност.
- Разлика во животната средина: се префрла на локално, останува во CI (околина за континуирана интеграција).
Внимание: Полагањето на кревок тест со „повторување неколку пати“ честопати ќе прикрие вистинска грешка во истовременоста. Обидете се повторно е дијагностичка алатка, а не третман. Најпрво пронајдете ја основната причина; Користете го повторното обид само како последно средство за документирана, вистинска надворешна нестабилност.
Тест одржување: одржување на пакувањето здраво
Апартманот за регресија е како градина; Ако не се грижи, плевелот ќе го преземе. ВИ помага во три задачи за одржување:
1. Дупликат/непотребно тест чистење. Со текот на времето, голем број случаи се акумулираат тестирајќи го истото. ВИ предлага групирање и спојување на слични тестови.
2. Кревка тест дијагноза. На вештачката интелигенција и го давате кодот за тестирање и шемата за нестабилност; сугерира можни основни причини и трајно решение.
3. Избор/приоритизација на тестот. Скапо е да се работи на целиот пакет со секоја промена. Со анализа на влијанието на тестот (се избира само релевантни тестови врз основа на променет код), AI препорачува кои тестови треба да се извршат први. Сепак, целосниот пакет пред-издавање е задолжителен.
Карантин: правилно управување со кревкото тестирање
Откривте дека тестот е кревок, но немате време веднаш да ја поправите основната причина. Што да се прави? Постојат два погрешни начини: целосно да се избрише тестот (тоа однесување повеќе не е зачувано) или да се замолчи со повторно обид (прикривање на вистинската грешка). Правилниот начин е да се стави карантин (привремено одвојување на кревкиот тест од главниот пакет и следење во посебна листа). Тестирањето во карантин не го спречува спојувањето на верзии, но останува видлив долг и редовно се решава. Критичната точка е ова: карантинот е чекална, а не корпа за отпадоци. Ако карантинскиот список расте, ова е аларм дека здравствената состојба на тимот се влошува. Вештачката интелигенција може периодично да ја прегледува вашата карантинска листа и да ја групира според шемите на основната причина; Овозможува колективни решенија со откривање на заеднички причини, како на пример „сите 6 тестови се поврзани со ист заеднички тест корисник“.
Совет: додајте „сопственик“ и „датум на последен преглед“ на секој запис за карантин. Напуштениот карантин станува трајна депонија; Кршливите тестови живеат таму засекогаш, бидејќи никој не се грижи.
Табела за стратегија за регресија
Статус
Стратегија
Улогата на вештачката интелигенција
мала корекција
Погодена област + тест за чад
Изберете соодветни тестови
нова карактеристика
Поврзан модул + интеграција
Предложете нов случај на регресија
голем рефактор
Целосен пакет за регресија
Анализа на јазот на покриеност
предиздавање
Целосен пакет + истражување
Проценка на приоритет и времетраење
Итна поправка во живо
Фокусиран + критична патека
Минимален безбеден тест сет
Слаб промпт / Силен промпт
Слаб: „Овој тест понекогаш не успева, поправете го“.
Силно: „Овој тест не успева на 3 од 10, кодот е непроменет. Дијагностицирајте ја основната причина за нестабилноста: може да биде тајминг/раса, зависност од редослед, споделена состојба, надворешна зависност или разлика во околината. Покажи која линија во тестот укажува на секоја можна причина. Предложете трајно решение; НЕ предлагајте „симптомно-јасно потиснувачко решение како што може да се потисне разумно“. [код].
Моќен потсетник; ја насочува дијагнозата кон основната причина и експлицитно забранува супресија на симптомите.
Четири шаблони за копирање
1) Дијагноза на кревка тест:
Овој тест код понекогаш поминува, а понекогаш не успева без промена. Наведете ги кандидатите за основната причина (раса, зависност од редослед, споделена состојба, надворешна зависност, часовник/случајна, разлика во околината) и прикажете ја линијата на докази во тестот за секоја од нив. Предложете трајно решение; означете го супресивно решение како што е повторно обид како последно средство и со оправдување. Тест: [шифра] / Шаблон за нестабилност: [колку пати во колку работи]
2) Предлагање на случај на регресија:
Беше направена следнава промена: [промена/резиме на ПР]. Наведете ТЕКОВНИ однесувања што оваа промена би ги прекршила и предложете регресивен тест случај за секое. Особено нагласете ги областите на несакани ефекти и заедничките зависности.
3) Дупликат тест за чистење:
Проверете го тест пакетот подолу. Групирајте дупликати или преклопувачки случаи што го тестираат истото однесување; Предложете кои да ги задржам и кои да ги комбинирам за секоја група. Предупредете ако постои ризик од губење на покриеноста. Тестови: [листа/шифра]
4) Избор на тест ефект:
Следниве датотеки/функции се променети: [листа]. Од постојниот тест пакет, изберете и оправдајте ги тестовите што треба да ги извршам прво (оние кои се директно/индиректно поврзани со променетиот код). Забелешка: потсетете ме дека сепак ќе го водам целосниот пакет пред-издавање.
три мини футроли
Случај 1 - Вистинската грешка е покриена со Повторен обид. Еден тим додаде 3 повторувања на повремен тест за преостаната исплата; Тестот секогаш „полагаше“ сега. Применувајќи ја „кршливата тест дијагностика“ откри дека нестабилноста доаѓа од вистинска состојба на трката: при големо оптоварување, потврдата за плаќање понекогаш била двојно обработена. Со месеци, Обидете се повторно прикриваше грешка што можеше да резултира со вистинска загуба на пари во живо. Поправена е основната причина, отстранете се повторно.
Случај 2 - Пакетот се намали, брзината се зголеми. Регресискиот пакет од 1.400 тестови траеше 55 минути. Со „дупликат тест чистење“, 380 тестови се покажаа како дупликати или покриени; споени. Пакетот беше намален на 900 тестови, времето беше намалено на 34 минути, покриеноста не беше мерливо намалена. Побрзите повратни информации го охрабрија тимот да тестира почесто.
Случај 3 - Зависност од ред. Тестот секогаш ќе помине локално, но случајно ќе падне во CI. Дијагностиката со вештачка интелигенција покажа дека тестот зависи од корисникот создаден од друг тест, во CI се расипа бидејќи тестовите се одвиваа паралелно/различен редослед. Секој тест беше направен за да се утврдат сопствените податоци; Неодлучноста заврши.
Вообичаени грешки
- Замолчување на кревкиот тест со повторен обид. Обидувајќи се повторно без да ја барате основната причина; прикривање на вистинската грешка.
- Култура „Повторно заглавена“. Рутински игнорирање на црвените резултати; Еден ден, прескокнување на вистинската грешка.
- Воопшто не го крој пакувањето. Дозволете дупликат тестови да се натрупуваат и да го забават пакувањето.
- Зависност помеѓу тестовите. Тестовите се засноваат на заедничка состојба/секвенца; извор на неизвесност.
- Тестирање само на променетиот дел и прескокнување на целосниот пакет. Кратенка пред објавување; Скриените несакани ефекти бегаат.
- Потпирајќи се на надворешна зависност. Тестови врз основа на вистинската мрежа/часовник/случајна вредност; природно нестабилна.
Сумирано
Тестирањето на регресија ги фаќа промените кои ги кршат претходно работните функции; Но, како што растат пакетите, бавноста и кршливото тестирање ја нагризуваат довербата. Главните причини за кревкото тестирање обично се тајмингот, зависноста од нарачката, споделената состојба и надворешните зависности. ВИ е моќна помош при дијагностицирање, чистење и избор на тестови; Но, потиснувањето на неодлучноста со повторен обид ги покрива вистинските грешки. Најдете ја основната причина, направете тестови независни и детерминистички, редовно кастрете го пакетот, стартувајте го целосниот пакет пред да го ослободите.
Задача за апликација
Изберете тест од вашиот сопствен проект за кој знаете дека е кревок (или изгледа нестабилен). Извлечете ги кандидатите за основна причина и проверете ги линиите на докази во тестот со шаблонот „дијагностика на кревки тестови“. Идентификувајте ја основната причина и спроведете трајно решение без повторно обид. Потоа изберете 10 тестови од вашиот пакет и пронајдете ги оние што може да се комбинираат со „дупликат тест чистење“. Пријавете колку нестабилности на тестот решивте од нивната основна причина и колку непотребни случаи отстранивте од пакетот.
листа за проверка
- [ ] Ја дијагностицирав основната причина за кревкиот тест; Не го потиснав симптомот.
- [ ] Сметав дека обидот повторно е оправдано последно средство, а не како лек.
- [ ] Тестовите ги направив независни и детерминистички (изолирани од надворешни зависности).
- [ ] Избришав дупликат/непотребни тестови од пакетот за регресија.
- [ ] Избрав да тестирам врз основа на промената, но го извршив предиздавањето на целосниот пакет.
- [ ] Секое црвено го сфатив сериозно, против културата „заглави повторно, помине“.