Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: тестирование программ  (Прочитано 23811 раз)
0 Пользователей и 4 Гостей смотрят эту тему.
Olegator
Команда клуба

ru
Offline Offline
Пол: Мужской

« : 11-01-2006 01:15 » 

Отсканил пару страничек из книги Майерса:

Цитата
ГЛАВА 1
ТЕСТ ДЛЯ САМООЦЕНКИ
Прежде чем приступить к работе над книгой, рекомендуем читателю выполнить следующий простой тест. Задача состоит в том, чтобы проверить некоторую программу.
Эта программа производит чтение с перфокарты трех целых чисел, которые интерпретируются как длины сторон треугольника. Далее программа печатает сообщение о том, является ли треугольник неравносторонним, равнобедренным или равносторонним.
Напишите на листе бумаги набор тестов (т. е. специальные последовательности данных), которые, как вам кажется, будут адекватно проверять эту программу. Построив свои тесты, проанализируйте их.
Следующий шаг состоит в оценке эффективности вашей проверки. Оказывается, что программу труднее написать, чем это могло показаться вначале. Были изучены различные версии данной программы и составлен список общих ошибок. Оцените ваш набор тестов, попытавшись с его помощью ответить на приведенные ниже вопросы. За каждый ответ "да" присуждается одно очко.
1.  Составили ли вы тест, который представляет правильный неравносторонний треугольник? (Заметим, что ответ "да" на тесты,   со значениями 1, 2, 3 и 2, 5, 10 не обоснован, так как не существует треугольников, имеющих такие стороны.)
2.  Составили ли вы тест, который представляет правильный равносторонний треугольник?
3.  Составили ли вы тест, который представляет правильный равнобедренный треугольник? (Тесты со значениями 2, 2, 4 принимать в расчет не следует.)
4.  Составили ли вы по крайней мере три теста, которые представляют правильные равнобедренные   треугольники, полученные как перестановки   двух   равных   сторон треугольника (например, 3, 3, 4; 3, 4, 3 и 4, 3, 3)?
5.  Составили ли вы тест, в котором длина одной из сторон треугольника принимает нулевое значение?
6.  Составили ли вы тест, в котором длина одной из сторон треугольника принимает отрицательное значение?
7.  Составили ли вы тест, включающий три положительных целых числа, сумма двух из которых   равна третьему? (Другими словами, если программа   выдала сообщение о том, что числа 1, 2, 3 представляют собой стороны неравностороннего треугольника, то такая программа содержит ошибку.)
8.  Составили ли вы по крайней мере три теста с заданными значениями   всех   трех   перестановок, в которых длина одной стороны равна сумме длин двух других сторон (например, 1, 2, 3; 1, 3, 2 и 3, 1, 2)?
9.  Составили ли вы тест из трех целых положительных чисел, таких, что сумма двух из них   меньше   третьего числа (т. е. 1, 2, 4 или 12, 15, 30)?
10.  Составили ли вы по крайней мере три теста из категории 9, в которых вами испытаны все три перестановки (например, 1, 2, 4; 1, 4, 2 и 4, 1, 2)?
11.  Составили ли вы тест,   в котором   все   стороны треугольника имеют длину, равную нулю (т. е. 0, 0, 0) ?
12.  Составили ли вы по крайней   мере один тест, содержащий нецелые значения?
13.  Составили ли вы хотя бы один тест, содержащий неправильное число значений (например, два, а не три целых числа)?
14.  Специфицировали ли вы в каж&#107
« Последнее редактирование: 26-01-2006 05:28 от Olegator » Записан
Olegator
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 11-01-2006 01:15 » 

(Я не привожу здесь эталонный набор, поскольку кому-то может показаться интересным проверить себя. Если интересно, впоследствии добавлю то, что предлагает автор).
Мне интересно.
« Последнее редактирование: 26-01-2006 05:27 от Olegator » Записан
Olegator
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #2 : 11-01-2006 01:16 » 

А сам-то какой набор составил?
« Последнее редактирование: 26-01-2006 05:27 от Olegator » Записан
Olegator
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #3 : 11-01-2006 01:17 » 

Честно говоря я с проверками почти никогда не работал.
Только давно в институте на паскале.

Например:
Надо проверить может ли получится треугольник со сторонами равными этим числам
Если перфолента порвалась, то должны наверное выйти какие-то дикие числа
Или может получится что количество чисел не равно трём

Больше мне ничего в голову не пришло.
« Последнее редактирование: 26-01-2006 05:27 от Olegator » Записан
Olegator
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #4 : 11-01-2006 01:17 » 

Отсканил пару страничек из книги Майерса:

Цитата
ГЛАВА 1
ТЕСТ ДЛЯ САМООЦЕНКИ
Прежде чем приступить к работе над книгой, рекомендуем читателю выполнить следующий простой тест. Задача состоит в том, чтобы проверить некоторую программу.
Эта программа производит чтение с перфокарты трех целых чисел, которые интерпретируются как длины сторон треугольника. Далее программа печатает сообщение о том, является ли треугольник неравносторонним, равнобедренным или равносторонним.
Напишите на листе бумаги набор тестов (т. е. специальные последовательности данных), которые, как вам кажется, будут адекватно проверять эту программу. Построив свои тесты, проанализируйте их.
Следующий шаг состоит в оценке эффективности вашей проверки. Оказывается, что программу труднее написать, чем это могло показаться вначале. Были изучены различные версии данной программы и составлен список общих ошибок. Оцените ваш набор тестов, попытавшись с его помощью ответить на приведенные ниже вопросы. За каждый ответ "да" присуждается одно очко.
1.  Составили ли вы тест, который представляет правильный неравносторонний треугольник? (Заметим, что ответ "да" на тесты,   со значениями 1, 2, 3 и 2, 5, 10 не обоснован, так как не существует треугольников, имеющих такие стороны.)
2.  Составили ли вы тест, который представляет правильный равносторонний треугольник?
3.  Составили ли вы тест, который представляет правильный равнобедренный треугольник? (Тесты со значениями 2, 2, 4 принимать в расчет не следует.)
4.  Составили ли вы по крайней мере три теста, которые представляют правильные равнобедренные   треугольники, полученные как перестановки   двух   равных   сторон треугольника (например, 3, 3, 4; 3, 4, 3 и 4, 3, 3)?
5.  Составили ли вы тест, в котором длина одной из сторон треугольника принимает нулевое значение?
6.  Составили ли вы тест, в котором длина одной из сторон треугольника принимает отрицательное значение?
7.  Составили ли вы тест, включающий три положительных целых числа, сумма двух из которых   равна третьему? (Другими словами, если программа   выдала сообщение о том, что числа 1, 2, 3 представляют собой стороны неравностороннего треугольника, то такая программа содержит ошибку.)
8.  Составили ли вы по крайней мере три теста с заданными значениями   всех   трех   перестановок, в которых длина одной стороны равна сумме длин двух других сторон (например, 1, 2, 3; 1, 3, 2 и 3, 1, 2)?
9.  Составили ли вы тест из трех целых положительных чисел, таких, что сумма двух из них   меньше   третьего числа (т. е. 1, 2, 4 или 12, 15, 30)?
10.  Составили ли вы по крайней мере три теста из категории 9, в которых вами испытаны все три перестановки (например, 1, 2, 4; 1, 4, 2 и 4, 1, 2)?
11.  Составили ли вы тест,   в котором   все   стороны треугольника имеют длину, равную нулю (т. е. 0, 0, 0) ?
12.  Составили ли вы по крайней   мере один тест, содержащий нецелые значения?
13.  Составили ли вы хотя бы один тест, содержащий неправильное число значений (например, два, а не три целых числа)?
14.  Специфицировали ли вы в каждом   тесте не только входные значения, но и выходные данные программы?
Конечно, нет гарантий, что с помощью набора тестов, который удовлетворяет вышеперечисленным условиям, будут найдены все возможные ошибки. Но поскольку вопросы 1+13 представляют ошибки, имевшие место в различных версиях данной программы, адекватный тест для нее должен их обнаруживать. Если вы не программист, то вы не очень хорошо справитесь с составлением теста. Для сравнения отметим, что опытные профессиональные программисты набирают в среднем только 7+8 очков из 14 возможных. Выполненное упражнение показывает нам, что тестирование даже тривиальных программ, подобных приведенной, + непростая задача. И коль скоро это так, рассмотрим трудности тестирования программ размером в 100000 операторов для системы управления воздушным движением, компилятора или программы расчета зарплаты.
« Последнее редактирование: 26-01-2006 05:28 от Olegator » Записан
Olegator
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #5 : 11-01-2006 01:18 » 

Как я понял в этом тесте показан только принцип тестирования. Т.е. если реально потребуется провести тест именно этой задачи, то некоторые тесты не понадобятся, потому что очевидно они ничего не скажут. А вот если надо будет протестировать программу, где всё не очевидно, то именно так и надо дотошно тестировать. Или я ошибаюсь и даже в этой программе именно так и надо тестировать?
« Последнее редактирование: 26-01-2006 05:29 от Olegator » Записан
Olegator
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #6 : 11-01-2006 01:19 » 

Все понадобятся, до единого. Ибо при тестировании нужно выяснить две вещи:

1. Что программа выдает правильные результаты при корректных входных данных.
2. Что она не может быть сбита с толку некорректными данными.

Для неочевидной программы набор тестов будет гораздо обширнее и сложнее, но принцип останется тем же.
« Последнее редактирование: 26-01-2006 05:29 от Olegator » Записан
Olegator
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #7 : 11-01-2006 01:19 » 

А это зачем?
Цитата
4.  Составили ли вы по крайней мере три теста, которые представляют правильные равнобедренные   треугольники, полученные как перестановки   двух   равных   сторон треугольника (например, 3, 3, 4; 3, 4, 3 и 4, 3, 3)?
« Последнее редактирование: 26-01-2006 05:29 от Olegator » Записан
Olegator
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #8 : 11-01-2006 01:20 » 

Затем, что ты не видишь исходный текст программы. Не исключено, что программист написал что-то вроде "if a == b then равнобедренный" и на этом успокоился.
« Последнее редактирование: 26-01-2006 05:29 от Olegator » Записан
Olegator
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #9 : 11-01-2006 01:20 » 

Затем, что ты не видишь исходный текст программы.
Исходя из этого всегда придётся учитывать все варианты. И ни одной поблажки. Всё ясно.
« Последнее редактирование: 26-01-2006 05:29 от Olegator » Записан
Olegator
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #10 : 11-01-2006 01:21 » 

А вообще много лет назад со мной произошла одна весьма поучительная история. Она учит, как тщательно нужно тестировать программы для ответственных приложений и какой урон наносят программисты-недоучки с большими амбициями и слабоватой эрудицией. Но это оффтоп в теме про быстрое печатанье, да и время позднее, а история длинная. Может, как-нибудь при случае расскажу, если к слову придется.
« Последнее редактирование: 26-01-2006 05:29 от Olegator » Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines