Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь 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; просмотров: 410; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.144.21.237 (0.007 с.) |