Стохастическое тестирование
#1
Отправлено 15 июля 2010 - 10:45
Хотелось бы выслушать мнения тех, кто на практике пользовался подобным методом. Так же неплохо было бы обсудить соображения относительно этого и выслушать мысли тех, кто ещё не пользовался.
#2
Отправлено 15 июля 2010 - 11:14
Стохастическое тестирование выполнимо, если удаётся автоматически и независимым образом определить эталонное множество Y или экспертно указать распределение выходных данных.
Как правило, к стохастическому критерию прибегают в случае необходимости построения тестовых наборов большой мощности.
Недостаток стохастического тестирования заключается в малой вероятности получения оптимального тестового набора, то есть набора, обладающего высокой обнаруживающей способностью.
Не пользовался подобным. Всегда ожидаю от тестов определенности.
Канер поклонник тестирования не по скриптам, воображения и воодушевления, а Майерс - очень даже поклонник математики, четкости и определенности.
Software Testing Glossary - простыми словами о непростых словах.
#3
Отправлено 15 июля 2010 - 11:30
Это случилось, когда необходимо было провести объёмное тестирование и я написал собственный генератор псевдослучайных чисел, различных слов, текста и и-мэйлов. Так вот всей этой чепухой я забивал подопытную БД, причём случайно генерились значения для всех столбцов. После, при проверке производительности ЦМС, которая использовала данные из этой базы, я заметил, что заголовки новостей и тело самой новости в некоторых статьях имели смещения, были написаны странными шрифтами и т.д. Происходило это нечасто, примерно через 300-500 записей. Оказалось, что при определённом наборе символов в заголовке образовывались HTML тэги, которые ЦМС прекрасно обрабатывала. На основании этого удалось узнать, что сценарии JavaScript также успешно стартуют в заголовках и не только, что приводило к неработоспособности некоторых модулей и вообще можно было уронить всю систему.
Конечно же, до этого можно было додуматься и просто так, проанализировав всё тщательным образом, но так уж вышло, что обнаружилось это случайным образом, поэтому фактом применения этого метода я этот случай не считаю.
У кого-то есть есть другие примеры или совпадения?
#4
Отправлено 16 июля 2010 - 06:07
#5
Отправлено 16 июля 2010 - 08:17
Как раз вчера на нашей встрече затрагивали этот вопрос.У кого-то есть есть другие примеры или совпадения?
Компиляторы, например, так тестируют. Случайным образом (на основе синтаксиса и лексики языка программирования) генерится какой-нибудь код, который должен скомпилироваться. Очевидно, что все компилируемые варианты и сочетания в языке программирования перебрать невозможно. А такой подход даёт возможность случайно найти код, который компилятор обработать не в состоянии. Сгенерённый код, который скомпилился, можно после теста выкинуть, код который выявил ошибку - можно закинуть в дефект трэкер как есть.
Надо заметить, что такой подход должен использоваться в дополнение к другим.
Alexey
#6
Отправлено 16 июля 2010 - 10:55
нужен подход, основанный не только на синтаксисе, но и на лексике,
то есть придется использовать грамматики
А уже на основе них генерировать выражения
поэтому тут выражения не будут случайны - скорее псевдослучайны - не в тему, в общем
#7
Отправлено 16 июля 2010 - 11:46
А о случайности или псевдослучайности говорить можно долго и взахлёб, на эту тему есть много разных обсуждений и даже научных работ. Но точно то, что средства языка программирования генерят псевдослучайные данные.
#8
Отправлено 16 июля 2010 - 18:36
Я сам не тестировал компиляторы, но слушал доклад коллег, года этак 3 назад и писал по памяти. Дописал в свое сообщение "на основе синтаксиса и лексики". Могу дописать про грамматики и семантики и что там еще есть. Суть не меняется. Случайным образом генерится валидный код на языке программирования и его компилят. Если не компилится - с большой долей вероятности - баг компилятора, который не выявляет не один из видов продуманного и спланированного тестирования.LeshaL, это очень примитивный способ тестирования компиляторов
нужен подход, основанный не только на синтаксисе, но и на лексике,
то есть придется использовать грамматики
А уже на основе них генерировать выражения
поэтому тут выражения не будут случайны - скорее псевдослучайны - не в тему, в общем
Alexey
#9
Отправлено 16 июля 2010 - 19:55
Я использовала примитивные варианты модел-бейзд тестирования с автогенерацией значений. Прикольно, покрытие большое, но существенной пользы что-то не припомню :) И это при том, что девелопмент модели - очень трудоёмкий процесс.
Обучение для профессионалов: Школа тест-менеджеров | Школа тест-аналитиков | Школа Тестировщиков
Услуги для тест-менеджеров: Аутсорсинг тестирования | Поиск тестировщиков | Консалтинг
#10
Отправлено 16 июля 2010 - 23:58
насколько я помню, стохастические методы в какой-то момент почти достигают того же покрытия (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 года то см выше.
#11
Отправлено 19 июля 2010 - 06:46
#12
Отправлено 10 августа 2010 - 07:04
Наталья, а не могли бы вы порекомендовать какие-нибудь статьи/ресурсы по теме model-based testing?Есть такая штука - model-based testing. Это когда Вы описываете модель работы программы, от алгоритмов до массивов данных. После этого, можно стохастически генерить параметры значений, последовательность действий и т.д. И всё это - в рамках модели.
Я использовала примитивные варианты модел-бейзд тестирования с автогенерацией значений. Прикольно, покрытие большое, но существенной пользы что-то не припомню :) И это при том, что девелопмент модели - очень трудоёмкий процесс.
#13
Отправлено 10 августа 2010 - 07:33
Давайте я отвечу, потому что у Натальи опыт применения скорее негативный (судя по комментарию выше), а у меня в практике встречались неоднократно примеры успешного применения :)Наталья, а не могли бы вы порекомендовать какие-нибудь статьи/ресурсы по теме model-based testing?
http://software-test...l-based-testing
http://software-test...l-based-testing
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium
#14
Отправлено 16 августа 2010 - 14:56
Количество пользователей, читающих эту тему: 0
0 пользователей, 0 гостей, 0 анонимных