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

Фотография

Стохастическое тестирование


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

#1 jurteg

jurteg

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

  • Members
  • Pip
  • 61 сообщений
  • ФИО:Serhii Zharskyi

Отправлено 15 июля 2010 - 10:45

Мне не приходилось использовать такой подход, но что меня заинтересовало, так это то, что Майерс находит этот метод довольно слабым и практически мало полезным и предпочёл не рассматривать его в своей книге, в то время как Канер выделил под него несколько страниц и всячески пытался уверить, что этот метод частенько помогает найти неожиданные ошибки... Как-то противоречиво получается.
Хотелось бы выслушать мнения тех, кто на практике пользовался подобным методом. Так же неплохо было бы обсудить соображения относительно этого и выслушать мысли тех, кто ещё не пользовался.
  • 0

#2 astenix

astenix

    Специалист

  • Members
  • PipPipPipPipPip
  • 906 сообщений
  • ФИО:Лёша Лупан
  • Город:Кишинев


Отправлено 15 июля 2010 - 11:14

Стохастическое тестирование основано на генерации тестовых наборов, а именно множества X, случайным образом.

Стохастическое тестирование выполнимо, если удаётся автоматически и независимым образом определить эталонное множество Y или экспертно указать распределение выходных данных.

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

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

Не пользовался подобным. Всегда ожидаю от тестов определенности.

Канер поклонник тестирования не по скриптам, воображения и воодушевления, а Майерс - очень даже поклонник математики, четкости и определенности.
  • 0

Software Testing Glossary - простыми словами о непростых словах.


#3 jurteg

jurteg

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

  • Members
  • Pip
  • 61 сообщений
  • ФИО:Serhii Zharskyi

Отправлено 15 июля 2010 - 11:30

Кстати сказать я тут вспомнил один случай, когда случайная генерация данных помогла мне выявить некоторые ошибки.
Это случилось, когда необходимо было провести объёмное тестирование и я написал собственный генератор псевдослучайных чисел, различных слов, текста и и-мэйлов. Так вот всей этой чепухой я забивал подопытную БД, причём случайно генерились значения для всех столбцов. После, при проверке производительности ЦМС, которая использовала данные из этой базы, я заметил, что заголовки новостей и тело самой новости в некоторых статьях имели смещения, были написаны странными шрифтами и т.д. Происходило это нечасто, примерно через 300-500 записей. Оказалось, что при определённом наборе символов в заголовке образовывались HTML тэги, которые ЦМС прекрасно обрабатывала. На основании этого удалось узнать, что сценарии JavaScript также успешно стартуют в заголовках и не только, что приводило к неработоспособности некоторых модулей и вообще можно было уронить всю систему.

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

У кого-то есть есть другие примеры или совпадения?
  • 0

#4 MeSaNei

MeSaNei

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

  • Members
  • Pip
  • 9 сообщений


Отправлено 16 июля 2010 - 06:07

.
  • 0
Shiny Disco Balls

#5 LeshaL

LeshaL

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 094 сообщений
  • ФИО:Алексей Лянгузов
  • Город:Saint-Petersburg


Отправлено 16 июля 2010 - 08:17

У кого-то есть есть другие примеры или совпадения?

Как раз вчера на нашей встрече затрагивали этот вопрос.
Компиляторы, например, так тестируют. Случайным образом (на основе синтаксиса и лексики языка программирования) генерится какой-нибудь код, который должен скомпилироваться. Очевидно, что все компилируемые варианты и сочетания в языке программирования перебрать невозможно. А такой подход даёт возможность случайно найти код, который компилятор обработать не в состоянии. Сгенерённый код, который скомпилился, можно после теста выкинуть, код который выявил ошибку - можно закинуть в дефект трэкер как есть.

Надо заметить, что такой подход должен использоваться в дополнение к другим.
  • 0
Regards,
Alexey

#6 enki86

enki86

    Постоянный участник

  • Members
  • PipPipPip
  • 231 сообщений


Отправлено 16 июля 2010 - 10:55

LeshaL, это очень примитивный способ тестирования компиляторов
нужен подход, основанный не только на синтаксисе, но и на лексике,
то есть придется использовать грамматики
А уже на основе них генерировать выражения

поэтому тут выражения не будут случайны - скорее псевдослучайны - не в тему, в общем
  • 0

#7 jurteg

jurteg

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

  • Members
  • Pip
  • 61 сообщений
  • ФИО:Serhii Zharskyi

Отправлено 16 июля 2010 - 11:46

Я вообще хотел поговорить о целесообразности применения такого подхода, его практической пользе (если кто-то имеет опыт в этом), и, вообще, стоит ли осуществлять такое тестирование с учётом всех "за" и "против".
А о случайности или псевдослучайности говорить можно долго и взахлёб, на эту тему есть много разных обсуждений и даже научных работ. Но точно то, что средства языка программирования генерят псевдослучайные данные.
  • 0

#8 LeshaL

LeshaL

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 094 сообщений
  • ФИО:Алексей Лянгузов
  • Город:Saint-Petersburg


Отправлено 16 июля 2010 - 18:36

LeshaL, это очень примитивный способ тестирования компиляторов
нужен подход, основанный не только на синтаксисе, но и на лексике,
то есть придется использовать грамматики
А уже на основе них генерировать выражения

поэтому тут выражения не будут случайны - скорее псевдослучайны - не в тему, в общем

Я сам не тестировал компиляторы, но слушал доклад коллег, года этак 3 назад и писал по памяти. Дописал в свое сообщение "на основе синтаксиса и лексики". Могу дописать про грамматики и семантики и что там еще есть. Суть не меняется. Случайным образом генерится валидный код на языке программирования и его компилят. Если не компилится - с большой долей вероятности - баг компилятора, который не выявляет не один из видов продуманного и спланированного тестирования.
  • 0
Regards,
Alexey

#9 Natalya Rukol

Natalya Rukol

    Профессионал

  • Admin
  • PipPipPipPipPipPip
  • 2 001 сообщений
  • Город:Moscow


Отправлено 16 июля 2010 - 19:55

Есть такая штука - model-based testing. Это когда Вы описываете модель работы программы, от алгоритмов до массивов данных. После этого, можно стохастически генерить параметры значений, последовательность действий и т.д. И всё это - в рамках модели.
Я использовала примитивные варианты модел-бейзд тестирования с автогенерацией значений. Прикольно, покрытие большое, но существенной пользы что-то не припомню :) И это при том, что девелопмент модели - очень трудоёмкий процесс.
  • 0

#10 dlg99

dlg99

    Специалист

  • Members
  • PipPipPipPipPip
  • 609 сообщений
  • ФИО:Andrey Yegorov
  • Город:Redmond, WA

Отправлено 16 июля 2010 - 23:58

Bj Rollison упоминал, что в Microsoft проводили исследование на эту тему лет 5 назад, несколько лет, разные группы, разные подходы.
насколько я помню, стохастические методы в какой-то момент почти достигают того же покрытия (code coverage/tets coverage/bugs found), что и другие (см ниже), но существенно позже.
как результат эти методы применяются редко, предпочтение отдается автоматизации (комбинаторными методами + модели) с регулярным code coverage analysis и code reviews + static testing tools.
Была статья на этот счет, с графиками и прочим; название не помню. Можете или спросить Bj (www.testingmentor.com) или посмотрите в книге "How we test software at Microsoft", вроде бы там это тоже встречалось.

Исключением является security testing, где часто используют fuzzing и, пожалуй, machine learning.
С первым я серьезно не сталкивался, во втором проблемой является не "создать много случайных тестов", а "выбрать случайный минимальный statistically significant набор тестов"

Модели, кстати, можно строить при помощи разных тулов, например SpecExplorer.

по личным ощущениям и отзывам тех, кто с ними плотно общался, Канер и Бах:
- ориентированы на людей с нетехническим образованием/складом ума
- работают в режиме консалтинга, пришел-ушел. поэтому агитируют за самые простые для понимания менеджментом (легче продать/демонстрировать) подходы.
Майерс - 'технарь', оттого и расхождения во мнениях.

выбирайте сами - если проект на 2 месяца, то может быть написанный за 3 дня генератор случайных тестов имеет лучшее соотношение затраты/результат. Если проект на 3 года то см выше.
  • 0
Andrey Yegorov. Изображение

#11 jurteg

jurteg

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

  • Members
  • Pip
  • 61 сообщений
  • ФИО:Serhii Zharskyi

Отправлено 19 июля 2010 - 06:46

Спасибо за исчерпывающий ответ
  • 0

#12 Freiman

Freiman

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 591 сообщений
  • ФИО:Андрей Адеркин
  • Город:Йошкар-Ола

Отправлено 10 августа 2010 - 07:04

Есть такая штука - model-based testing. Это когда Вы описываете модель работы программы, от алгоритмов до массивов данных. После этого, можно стохастически генерить параметры значений, последовательность действий и т.д. И всё это - в рамках модели.
Я использовала примитивные варианты модел-бейзд тестирования с автогенерацией значений. Прикольно, покрытие большое, но существенной пользы что-то не припомню :) И это при том, что девелопмент модели - очень трудоёмкий процесс.

Наталья, а не могли бы вы порекомендовать какие-нибудь статьи/ресурсы по теме model-based testing?
  • 0

#13 barancev

barancev

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

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


Отправлено 10 августа 2010 - 07:33

Наталья, а не могли бы вы порекомендовать какие-нибудь статьи/ресурсы по теме model-based testing?

Давайте я отвечу, потому что у Натальи опыт применения скорее негативный (судя по комментарию выше), а у меня в практике встречались неоднократно примеры успешного применения :)
http://software-test...l-based-testing
http://software-test...l-based-testing
  • 0
Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium

#14 Куатор

Куатор

    Постоянный участник

  • Members
  • PipPipPip
  • 247 сообщений
  • ФИО:Комендантов Илья
  • Город:Украина, Одесса

Отправлено 16 августа 2010 - 14:56

У меня был интересный случай, тестировал систему генерации отчётов (3rd-party компонента, прикрученная к нашему продукту), настройки заголовков , шрифтов , цветов + сам текст отчёта. Нашёл в инете огромный пример валидного json вставил и ещё один вариант, взял source одной веб-странички - в первом варианте получил эксепшен - недопустимый параметр, нашёл, что это происходит в случае , если текст сождержит {} , попробовал вставить {MessageBox.Show("I see you! :-)")} - теперь перед генерацией отчёта выскакивал месседж бокс , а потом уже генерировался репорт :)
  • 0
Идеальный тестировщик - человек с золотыми руками, растущими из ж...


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

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