Перейти к содержимому

Фотография

Автоматизированный подбор исходных данных


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 2

#1 zildarius

zildarius

    Новый участник

  • Members
  • Pip
  • 8 сообщений
  • ФИО:Ильдар

Отправлено 08 февраля 2011 - 10:03

Здравствуйте, уважаемые коллеги!
Есть интересная, с моей точки зрения, тема для размышления.
Допустим имеется некая тестируемая функция (исходный код). Мы знаем входные и выходные переменные функции.
Пример:
Скрытый текст


В данном примере (сумма корней квадратного уравнения, не совсем полная, не в этом суть примера) видно, что входные переменные a,b,c:integer. Выходная переменная result:real (совсем не важная в данном примере). Главное тут то, что в функции есть три условия, т.е. в итоге при различных вариантах программы должно быть как минимум 8 (23) различных значений входных переменных a,b,c, чтобы покрыть тестами все ветки.
Вопрос в следующем можно ли подобрать автоматизированно (т.е. программно, а не вручную) такие исходные данные, чтобы покрыть все ветки тестируемой функции? Может такие алгоритмы подбора исходных данных есть?
  • 0

#2 stmark

stmark

    Опытный участник

  • Members
  • PipPipPipPip
  • 404 сообщений
  • ФИО:Докучаев Сергей
  • Город:Ярославль


Отправлено 08 февраля 2011 - 10:22

Вопрос в следующем можно ли подобрать автоматизированно (т.е. программно, а не вручную) такие исходные данные, чтобы покрыть все ветки тестируемой функции? Может такие алгоритмы подбора исходных данных есть?


Вряд ли, иначе вообще не нужны были бы юнит тесты :) К тому же если и сварганить такой алгоритм для отдельных случаев, то он будет, пожалуй, даже сложнее, чем тестируемый метод\функция\процедура. А это уже противоречит самой идеологии юнит-тестирования :) Но поискать стоит, даже просто в целях самообучения :)
  • 0

#3 barancev

barancev

    Администратор

  • Admin
  • PipPipPipPipPipPip
  • 6 872 сообщений
  • ФИО:Алексей Баранцев
  • Город:Россия, Москва


Отправлено 08 февраля 2011 - 12:35

Да, есть такие инструменты. Наиболее известен, пожалуй, Microsoft Pex, естественно для .Net.
Официальная страница проекта: http://research.micr...s/projects/pex/
Обзорная статья на русском языке: http://habrahabr.ru/blogs/net/80101/

Есть инструменты и для других языков, но все известные мне скорее представляют собой исследовательские разработки, proof-of-concept.

Разумеется, алгоритмы очень сложны, в таких инструментах используются пруверы -- системы для автоматического доказательства (вывода) теорем, генетические алгоритмы и прочая мощная математика. Поэтому большого распространения такого рода инструменты пока не получили. Но вот MS таки сумела сделать инструмент относительно приемлемого уровня юзабилити.
  • 0
Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium


Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных