Автотестирование и самотестирование Теория программирования, лекция первая.

Презентация:



Advertisements
Похожие презентации
Составление программ Разработка программ в среде Турбо- Паскаль.
Advertisements

Что такое структурный подход в программировании? Как он реализуется в ЯП Паскаль? Что такое процедура? Кто дает название процедуре? Где записывается процедура?
Тема урока: Виды алгоритмов и их реализация. Образовательные задачи: 1. Ввести понятия: полная форма ветвления и условный оператор ветвления. 2. Научить.
Решение задач С1 ЕГЭ Решение задач С1 ЕГЭ
Найдите ошибки: 1. if a = b then begin c:=1 else c:=0; 2. if a = b then c:=1; end else c:=0; 3. if a = b then c:=1; d:=1; else x:=1; Исправлено if a =
Рекурсия Презентация разработана учителем информатики лицея 124 г.Барнаула Воловиковой Л.Л.
Массивы 9 класс. Основные теоретические сведения Примеры решения задач.
1 Программирование на языке Паскаль Ветвления. 2 Разветвляющиеся алгоритмы Задача. Ввести два целых числа и вывести на экран наибольшее из них. Идея решения:
1 Программирование на языке Паскаль © К.Ю. Поляков, ВведениеВведение 2.ВетвленияВетвления 3.Сложные условияСложные условия 4.ЦиклыЦиклы 5.Циклы.
Алгоритм ветвления на языке Pascal. 4.Оператор условного перехода 4. Оператор условного перехода IF THEN Begin группа операторов 1 End ELSE Begin группа.
Алфавит и словарь языка Паскаль Учитель информатики Абдулзагирова А.И.
ВыполнитьEXIT PUBLIC SUB Button1_Click() DIM A AS Integer DIM B AS Integer A = InputBox("Введите целое первое число А", "Наибольшее из двух чисел") B.
Заглавные и строчные латинские буквы цифры 0…9 специальные символы + - * / = > <., : ^ () {} [] $ #
Проект «Контроль знаний» 10 класс. Поместить на форму: Надпись Label 1 для вывода оценочных сообщений; Надпись Label 2 для вывода количества ошибок; Кнопку.
Нисходящие распознаватели КС-языков Метод рекурсивного спуска Дано: Построить: распознаватель грамматики методом рекурсивного спуска.
1 Программирование на языке Паскаль Тема 2. Максимальный элемент массива.
ЛКШ. Зима.09. С + В. М. Гуровиц,
1 Программирование на языке Паскаль Тема 2. Ветвления © К.Ю. Поляков,
Ветвление и условный оператор Паскаль-3. Ветвление – это такой вычислительный процесс При котором выбирается одно из нескольких заранее предусмотренных.
ПРОЦЕДУРЫ И ФУНКЦИИ CPascal Подпрограмма – группа операторов реализующая законченный алгоритм и оформленная как самостоятельная синтаксическая единица.
Транксрипт:

Автотестирование и самотестирование Теория программирования, лекция первая

Что такое тестирование?

Виды тестирования Ручное Автоматическое – Юнит-тесты – Внешние тесты – Эмуляция работы пользователя Самотестирование программы

Заключается в том, что в ряде потенциально проблемных мест ставятся специальные проверки корректности работы программы, которые работают только под отладкой

Assert Assert(expr : Boolean [; const msg: string]); Пример – Assert(index > 0); Или более человечно: – Assert(index > 0, Обращение к базе книг по неверному индексу);

Assert. Боевой пример Function GetHumanNameOfDigit(digit: Byte): String; Begin Assert(digit >= 0); Assert(digit

Моя процедура – моя крепость Обычно проверяют – Невероятные ситуации – Данные, пришедшие извне (с сервера?) – Параметры процедур

Assert в больших проектах Все остальные программисты, запускающие в отладке вашу программу, параллельно работают тестерами ;-) Assert помогает – Когда другие программисты правят ваш код, не разбираясь в нем на 100% – Когда другие программисты правят код соседних модулей, генерирующих данные для вашего – Когда у вас болит голова и вы делаете ошибки

Включение/выключение ассертов Включить – {$C+} или – {$ASSERTIONS ON} Выключить – {$C-} – {$ASSERTIONS OFF} По умолчанию – включены

Юнит-тесты Юнит-тест – это набор тестов, которые проверяют корректность работы процедуры при любых параметрах её вызова. Юнит-тесты запускаются в начале работы программы или перед началом работы программы.

Покрытие юнит-тестами Считается, что 100% процедур должно быть покрыто юнит-тестами. На практике, это условие может быть соблюдено только в NASA и аналогично по масштабам вложений в ПО организациям.

Пример юнит-тестов Procedure TestGetHumanNameOfDigit(); Begin Assert(GetHumanNameOfDigit(-1) = ); Assert(GetHumanNameOfDigit(10) = ); Assert(GetHumanNameOfDigit(2) = два); End;

Правило покрытия тестами ф-ии Каждая ветвь исполнения кода должна быть проверена хотя бы 1 раз.

4 веточки – 4 проверки Function GetSignedDigitHumanName(digit: Byte): String; Begin If (digit < -9) Then … Else If (digit < 0) Then … Else If (digit < 10) Then … Else … End;

Тоже 4 ветви Function CalcFunc(a, b: Byte): Integer; Begin If (a > 0) Then begin if (b > 0) Then …. else …. end else begin if (b > 0) Then …. else …. end; End;

Запуск юнит-тестов При использовании достаточно сложных подходов можно запускать тесты отдельно от программы Надо понять принцип: – Поэтому можем запускать, когда в командной строке при запуске программы указан ключ «- tests»

Пример If (ParamCount = 1) And (ParamStr(1) = - tests) Then begin TestGetDigitHumanString(); … end;

Важность Считается, что без автотестирования / самотестирования большой проект не сделать.

Вопросы