Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Первая стадия тестирования: тестирование во время написания кода (основные принципы).Содержание книги
Похожие статьи вашей тематики
Поиск на нашем сайте Тестирование - это... а)Систематические и настойчивые попытки сломить сопротивление нормально работающей программы и заставить её сделать ошибку. б)Процесс, позволяющий доказать наличие ошибок в программе, позволяющий доказать их отсутствие. Виды тестирования: 1)Систематическое тестирование 2)Обдумывание возможных проблем по ходу написания кода 3)Автоматизация тестирования. Принципы: 1) Проверяйте граничные условия и предельные случаи: Пример кода,считывающего из потока символы пока не встретится символ конца строки или пока не переполнится буфер. int i; char s[MAX]; for (i=0; (s[i]=getChar())!= '\n' && i< MAX-1; ++i); s(--i)='\0'
Первая проверка граничного условия - ввод пустой строки '\n' 2) Используйте исключения/контрольные условия в зависимости от средств языка. C#/Java - генерирование и обработка исключений C/C++ - проверка пред и постусловий(заголовочный файл <assert.h>) 3) Предусматривайте "невозможные ситуации" Пример: код обработки экзаменационных оценок if (grade<0 || grade> 100) // невозможный случай letter ='?'; else if (grade>=90) letter = 'A'; else... 4) Всегда можно предотвратить или обработать такие ситуации, как нулевые значения указателей, выход за пределы массивов, деление на ноль и т.д. Проверяйте коды ошибок, возвращаемые из функций. Особое внимание стоит уделить функциям для работы с файлами, потоками и т.д.
16. Систематическое тестирование. Привести пример полного набора тестов. Тестирование – это систематические и настойчивые попытки сломить сопротивление нормально работающей программы и заставить её сделать ошибку. Тестирование – это процесс, позволяющий доказать наличие ошибок в программе, но не позволяющий доказать их отсутствие. Три слона тестирования: систематическое тестирование, автоматизация тестирования, обдумывание возможных проблем по ходу написания кода. Очень важно тестировать программу систематически — на каждом этапе надо четко представлять, что вы тестируете в данный момент и каких результатов ожидаете. Тестирование должно производиться последовательно, чтобы ничего не упустить. Тестируйте по возрастающей. Тестирование должно идти рука об руку с созданием кода. Тестирование методом "большого скачка", когда сначала пишется вся программа, а потом тестируется целиком, гораздо сложнее и отнимает гораздо больше времени. Напишите часть программы, оттестируйте ее, напишите очередной кусок кода, оттестируйте его и т. д. Тестируйте сначала простые блоки. В первую очередь тестированию подлежат самые простые и чаще всего исполняющиеся блоки; только после того, как вы удостоверитесь в их корректности, можно двигаться дальше. Таким образом, на каждом этапе вы увеличиваете объем тестируемого кода, будучи при этом уверенными в работоспособности основных его частей. Первый шаг, по крайней мере для маленьких программ и отдельных функций, — расширение тестов на граничные условия, описанных в предыдущем разделе: систематическое тестирование отдельных случаев. Предположим, что у нас есть функция, осуществляющая двоичный поиск в массиве целых чисел. Начнем со следующих тестов: поиск в пустом массиве; поиск в массиве с одним элементом — пробное значение: поиск в массиве с двумя элементами — пробные значения: проверяем поведение при дублировании элемента — пробные значения: поиск в массиве с тремя элементами (так же, как и с двумя); поиск в массиве с четырьмя элементами (так же, как с двумя и тремя). Если функция пройдет эти тесты без ошибок, она, по всей видимости, находится в неплохой форме, однако ее можно тестировать и дальше. Четко определите, чего вы ожидаете на выходе теста. При проведении всех тестов вы должны четко знать правильный результат; если вы его не знаете, то напрасно теряете время.Однако для большинства программ работоспособность определить труднее, например: для компиляторов, численных алгоритмов, графики и т. п. Для таких программ необходимо сравнивать результаты тестов с заранее известными значениями. Для теста компилятора скомпилируйте и запустите тестовые файлы. Результаты работы этих программ надо сравнить с заранее определенными значениями. Для теста вычислительной программы выберите случаи, которые позволят проверить алгоритм со всех сторон, — как простые случаи, так и сложные. Где возможно, вставляйте код, удостоверяющий корректность параметров вывода. Для тестирования графической программы недостаточно удостовериться, что она в состоянии нарисовать ящик; вместо этого прочтите этот ящик обратно с экрана и проверьте, что его стороны находятся там, где требуется. Если в программе выполняются какие-то обратимые действия, убедитесь, что вы можете обратить данные в исходное состояние. Шифровка и дешифровка во многих случаях обратимы; если вы что-то зашифровали и не смогли расшифровать, значит, что-то тут не так. Проверяйте свойства сохранности данных. Многие программы сохраняют некоторые свойства вводимых данных. Инструменты вроде we (подсчитывает строки, слова и символы) и sum (вычисляет контрольную сумму) помогут удостовериться в том, что вывод имеет тот же размер, то же количество слов или те же байты в некотором порядке и т. п. Другие программы проверяют файлы на идентичность (стр) или перечисляют их различия (cliff). Эти программы (или сходные с ними) доступны в большинстве сред программирования, и пренебрегать ими не стоит. Сравните независимые реализации. Независимые реализации библиотек или программ должны выдавать одни и те же результаты. Например, два компилятора должны из одного и того же текста создавать программы, которые на одной и той же машине будут вести себя одинаково, — по крайней мере, в большинстве случаев. Оценивайте охват тестов. Одна из главных целей тестирования — убедиться, что каждое выражение в программе было выполнено хотя бы единожды при проведении последовательности тестов; тестирование нельзя считать завершенным, пока этого не произошло. Однако надо признать, что полного охвата добиться достаточно трудно. Не принимая даже во внимание выражений, обрабатывающих ситуации "не может быть", с помощью нормального ввода вынудить программу обойти все возможные ветки не так-то просто.
|
||
|
Последнее изменение этой страницы: 2017-02-05; просмотров: 455; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.119 (0.009 с.) |