Автоматически создавать тестовые случаи для веб-страницы?

Если у кого-то есть веб-страница, обычный способ тестирования веб-сайта на наличие ошибок взаимодействия с пользователем заключается в создании каждого тестового примера вручную и использовании селена.

Есть ли инструмент для автоматического создания этих тестовых случаев? Итак, если у меня есть веб-страница, которая изменяется, новые тестовые случаи создаются автоматически?


person Pithikos    schedule 14.08.2014    source источник
comment
если есть, пожалуйста, дайте мне знать. Это облегчило бы столько работы. Но я боюсь, что нет такого   -  person Pavel Janicek    schedule 14.08.2014


Ответы (4)


Вы можете посмотреть платный продукт. Этот тип технологии не разрабатывается как открытый исходный код и, вероятно, будет стоить немного. Некоторые из основных тестовых инструментов приближаются к этому, но о полном автоматическом режиме я не слышал.

Если бы это было так, роль инженера по обеспечению качества и особенно инженера по автоматизации не была бы столь важной, и количество рабочих мест довольно быстро сократилось бы. Я полагаю, что если бы такой инструмент существовал, он стал бы новостью для всей отрасли и распространился бы по всему миру.

Если вы пойдете по пути искусственного интеллекта, это возможно в теории и концепции, однако обычно усилия по разработке искусственного интеллекта стоят больше, чем разрабатываемое приложение, которое нуждается в тестировании, так что... этого не произойдет.

Лучшее, что можно сделать на этом этапе, — это выделить как можно большую часть обслуживания в один раздел от остальных, чтобы уменьшить головную боль обслуживания при модификации и сохранить ядро, которое остается неизменным. Обычно я сосредотачиваюсь на манипулировании элементами управления как на общем, а затем на изменении рабочего процесса и конкретных карт и данных. Это позволит ему работать с любым веб-сайтом... но вам все равно придется писать/обновлять тесты и поддерживать карты.

person mutt    schedule 14.08.2014

Я думаю, что Автоматическое увеличение числа тестовых наборов — это больше того, о чем вы спрашиваете. Чтобы быть более конкретным, я попытаюсь представить основы, и если вам интересно, изучите Эволюционное тестирование

Обычно существует стандартный набор ограничений, с которыми мы сталкиваемся, например, изменение функциональности тестируемой системы (SUT), ограниченные временные рамки, отсутствие соответствующих инструментов тестирования, и этот список можно продолжить… Тем не менее, существует еще один тип проблем, которые возникают по мере дальнейшего развития технологических решений. – увеличение сложности системы.

В то время как типичные ограничения можно решить с помощью различных технических и управленческих подходов, в случае сложности системы мы сталкиваемся с пределом наших возможностей определения прямого аналитического метода для оценки и проверки поведения системы. Сложная система состоит из множества, часто разнородных компонентов, которые при совместной работе усиливают статистические и поведенческие отклонения друг друга, в результате чего система действует не так, как было предусмотрено ее первоначальным замыслом. Что еще хуже, сложные системы также повышают чувствительность к окружающей среде с помощью того же механизма.

Варианты тестирования сложных систем

Как мы можем протестировать систему, которая ведет себя по-разному каждый раз, когда мы запускаем тестовый сценарий? Как мы можем воспроизвести проблему, на устранение которой уходят дни и миллионы, но которая возникает только время от времени в условиях, которые известны лишь приблизительно?

Одно из возможных решений, на котором я хочу сосредоточиться, — это принять наш недостаток знаний и работать с тем, что у нас есть, используя эволюционное тестирование. В этом контексте эволюционное тестирование можно рассматривать как вариант тестирования методом черного ящика, потому что мы работаем с подачей входных данных и оценкой выходных данных из ТРИ, не сосредотачиваясь на ее внутренней структуре. Тонкая грань здесь заключается в том, что мы организуем этот процесс автоматической генерации и выполнения тестовых случаев в массовом масштабе как итеративный процесс оптимизации, который имитирует естественную эволюцию.

Эволюционное тестирование

Элементы:

Population — набор выполнений тестовых наборов, участвующих в процессе оптимизации.

Поколение – часть населения, вовлеченная в данную итерацию.

Индивидуальный — выполнение одного тестового примера и его результаты, элемент из совокупности.

Геном — единое определение всех тестовых случаев, модель, описывающая популяцию.

Генотип — отдельный экземпляр тестового примера, модель, описывающая индивидуума, экземпляр генома.

Рекомбинация — преобразование одного или нескольких генотипов в новый генотип.

Мутация — случайное изменение генотипа.

Функция пригодности – формализованный критерий, выражающий соответствие индивидуума цели оптимизации.

Как мы создаем эти элементы?

• Определение цели эксперимента (критерии выбора) – задает направление процесса оптимизации и связано с поведением ТРИ. Включает определенные характеристики состояния ТРИ или среды во время выполненных экспериментов с тестовыми примерами. Примеры: o «ТУС должно завершить выполнение тестового примера с кодом ошибки» o «Тестовый пример должен провести ТУС через наибольшее количество ответвлений в логической структуре ТУС» o «Температура окружающей среды в помещении, где находится ТУС, не должна превышать 40 ºC во время выполнения тестового примера» o «Загрузка ЦП в системе, в которой работает SUT, должна превышать 80% во время выполнения тестового примера» Любые измеримые параметры SUT и его среды могут быть использованы в постановке цели. Знание связи между тестовым входом и самой целью не обязательно. Это дает возможность охватить цели, которые вытекают непосредственно из требований, а не основаны на какой-либо производной от более поздних требований, такой как бизнес, архитектурная или техническая модель. • Определение соответствующих входов и выходов тестируемой системы – идентификация входов и выходов ТРИ, а также параметров окружающей среды, имеющих отношение к цели эксперимента. • Формальное определение генома эксперимента – кодирование обобщенного набора тестовых случаев в параметризованную модель (обычно структуру данных), выражающую соответствующие входные данные ТРИ, параметры среды и последовательности действий. Это определение также должно соответствовать двум основным операциям, применяемым к экземплярам генома, — рекомбинации и мутации. Механизм для этих двух операций может быть предопределен для типа данных или действия, присутствующих в геноме, или иметь пользовательские определения • Формальное определение критериев выбора (функция пригодности) — механизм оценки, который использует выходные данные ТРИ или параметры среды, полученные в результате теста. выполнение дела (Индивидуальное) и вычисляет число (Фитнес), показывающее, насколько этот конкретный Индивидуум близок к цели эксперимента.

Как работает процесс?

  1. Мы используем геном для создания поколения случайных генотипов (экземпляров тестов).
  2. Мы выполняем тестовые случаи (генотипы), генерирующие результаты (индивидуальные)
  3. Мы оцениваем каждый результат выполнения (индивидуально) в сравнении с нашей целью, используя функцию пригодности.
  4. Мы выбираем только тех Индивидуумов из данного Поколения, которые имеют Фитнес выше заданного порога (лучшие 10%, выше среднего и т.д.)
  5. Мы используем отобранных людей для создания нового полного набора поколений, применяя рекомбинацию и мутацию.
  6. Мы повторяем процесс, возвращаясь к шагу 2. Процесс итерации обычно останавливается установкой условия в отношении оцениваемой пригодности поколения. Например: • Если верхняя пригодность не изменилась более чем на 0,1% с момента последней итерации • Если разница между верхней и нижней пригодностью в поколении составляет менее 0,3%, возможно, пора остановиться.

Преимущества и недостатки

Преимущества:

• Мы можем работать с ограниченными знаниями для определений тестов SUT и целевых тестов.

• Мы используем модель тестовых случаев (геном), которая позволяет нам массово производить большое количество тестовых случаев (генотипов) без особых усилий.

• Мы можем «посеять» тестовые случаи (генотипы) в первой итерации вместо того, чтобы генерировать их случайным образом, чтобы ускорить процесс оптимизации.

• Мы могли бы запускать тестовые случаи параллельно, чтобы ускорить процесс

• Мы смогли найти несколько решений, соответствующих нашей цели тестирования.

• Если процесс оптимизации конвергентный, у нас есть гарантия, что каждое последующее поколение будет лучшим приближенным решением нашей тестовой цели. Это означает, что даже если нам нужно остановиться до того, как мы достигнем оптимальной пригодности, у нас все равно будут лучшие тестовые примеры, чем те, с которых мы начали.

• Мы можем добиться воспроизведения очень сложных, трудно воспроизводимых тестовых сценариев, которые имитируют реальную жизнь и которые находятся далеко за пределами досягаемости любого другого автоматизированного или ручного метода тестирования.

Недостатки:

• Процесс определения необходимых элементов для реализации эволюционного теста нетривиален и требует специальных знаний.

• Внедрение такого подхода к автоматизации требует много времени и ресурсов и должно использоваться только тогда, когда это оправдано.

• Сходимость процесса оптимизации зависит от гладкости Фитнес-функции. Если его определение приводит к зонам разрыва или малому/отсутствующему градиенту, мы можем ожидать медленной конвергенции или ее отсутствия.

Обновление:

Я также рекомендую вам ознакомиться с генетическими алгоритмами и этой статьей о Генерация тестовых данных может дать вам подходы и рекомендации.

person ekostadinov    schedule 15.08.2014
comment
Так что в значительной степени вам нужно определить, будет ли результат ожидаемым или нет, используя функцию fitness. Значит, нам все-таки нужен какой-то ИИ или псевдо-ИИ, верно? Не уверен, что я не в курсе.. - person Pithikos; 15.08.2014
comment
В основном - да, но все же зависит от ваших потребностей. возможно, не ИИ, но определенно некий эвристический алгоритм. Вы не ожидаете, что инструменты, технологии или фреймворки, которые вы используете, сделают что-либо? Самым мощным аспектом здесь является то, что однажды определенная такая структура может в значительной степени самовосстанавливаться. - person ekostadinov; 15.08.2014

Мне посчастливилось разработать ecFeed — инструмент с открытым исходным кодом, который может помочь в разработке тестов. Он находится на стадии предварительного выпуска, и мы собираемся улучшить интеграцию с Selenium, но вы можете взглянуть на текущий снимок: https://github.com/testify-no/ecFeed/wiki. Следующая версия должна появиться в октябре и будет значительно улучшена в плане удобства использования. В любом случае жду конструктивной критики.

person Patryk    schedule 14.08.2014
comment
Собственно теперь у проекта есть собственный сайт: www.ecfeed.com. - person Patryk; 07.03.2018

В мире разработки Microsoft существует структура Visual Studio's Coded UI Test. Это запишет ваши действия в веб-браузере и сгенерирует тестовые примеры для воспроизведения этого варианта использования. Однако он не будет обновлять тестовые случаи с какими-либо изменениями в коде, вам нужно будет обновить их вручную или сгенерировать заново.

person Encio Holanda    schedule 27.01.2016