Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Тестирование программного обеспечения. Фундамен...docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
935.81 Кб
Скачать

Глава 7: Разработка тестов 201

случайном способе. Он прекрасно подходит и для автоматизированного тестирования.

Не имея четкого обоснования для выбора конкретных входных, значе­ний, можно компенсировать этот недостаток количеством проводимых тсстов. Здесь нет никаких ограничений — чем больше тестов проводится для каждого из классов эквивалентности, тем лучше. Обычно при автома­тизированном тестировании со случайными входными значениями мы проводим как минимум 1000 вычислений.

Что такое генератор случайных чисел

“Случайный” ввод вовсе не означает “все, что приходит в голову”, иначе он будет слишком предвзятым, чтобы претендовать на равномерный охват области определения функции. Здесь больше подойдут таблицы слу­чайных чисел, а еще лучше — компьютерная программа, которая может генерировать такие числа в неограниченном количестве. Однако следует иметь в виду, что алгоритмы, используемые многими подобными програм­мами, вовсе не случайны. Кроме того, нередко в программах даже базовый алгоритм реализован не точно. Поэтому, прежде чем выбрать конкретный генератор случайных чисел, даже написанный вполне авторитетной компа­нией или встроенный в один из стандартных языков программирования, необходимо выяснить, какой алгоритм положен в основу его работы и подходит ли он для ваших нужд. То, что годится простенькой программке, рисующей на экране разноцветный салют, может совершенно не подойти для профессионального тестирования сложных инженерных программ. Нередко генераторы случайных чисел повторяют их последовательность через определенный интервал — например, после каждых 65 535 чисел все начинается с начала.

Подробный рассказ о теории генераторов случайных чисел в задачи этой книги не входит. На эту тему имеется достаточно литературы, и, в частности, можно прочитать работы таких авторов, как Канер и Воуки (Kaner & Vokey, 1984) и Кнут (Knuth, 1981). Однако несколько советов и предложений вам все же пригодятся.

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

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

202 Часть II: Приемы и технологии тестирования

• Если вы собираетесь воспользоваться генератором случайных чисел, встроенным в язык программирования, стоит его немного дорабо­тать. Сгенерировав с его помощью достаточно большое количество чисел (100-1000), перемешайте их: измените их порядок с помощью последующих чисел, выдаваемых этим же генератором. Хотя это и замедлит работу, зато результат в случае плохого исходного генера­тора может быть уже вполне приемлемым.

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

R[N+1] = (А * R[N] + С) mod М

Это означает, что для получения N+1-го числа из N-ro нужно ум­ножить его на А, добавить С, а результат взять по модулю М. Чем больше будет число М, тем лучше, хотя вычисления будут выпол­няться и медленнее. Хорошие значения параметров этого метода приведены на рис. 7.3.

Значение параметра С не является критическим, достаточно, чтобы оно было нечетным. Однако, подбирая его более тщательно, можно уменьшить взаимную корреляцию генерируемых значений. Значение М=240 взято из книги Канера и Воуки (Kaner & Vokey, 1984), осталь­ные — у Кнута (Knuth, 1981). Чтобы показать, насколько важен тща­тельный подбор параметров, Канер и Воуки протестировали более 30 тысяч значений параметра А и около сотни значений параметра С.

М

А

С

232

69069

нечетное число

232

1664525

нечетное число

РИСУНОК 7.3. Параметры

235

17059465

нечетное число

некоторых известных генераторов случайных

2«о

37182819621

3

чисел

2*0

8413453205

99991

31167285

нечетное число

264

636413622384679300

нечетное число

R[N+1] = (А * R[N] + С) mod М