Лекция 3. Технология разработки программ (часть 2) (1152906), страница 2
Текст из файла (страница 2)
Работоспособность можнодоказать только всесторонним тестированием, с объяснением результата.7Воробьева И.А. «Информатика. Язык Питон»Основные виды тестирования:1. функциональные тесты – это тесты, проверяющие реализацию функциональных требований к программе, то есть ее способности в заданных условиях решать поставленные перед ней задачи;2. структурные тесты – это тесты, основанные на логике программы, онипризваны обеспечить отработку всех операторов, логических условий иветвлений программы;3. «каверзные тесты» – это тесты проверки надежности, основным назначением которых является попытка вызвать в программе ошибку;4.
«случайные тесты» – это тесты, которые формируют входные данные случайным образом и прогоняются много раз, – их назначение выявить ошибкиили непрогнозируемое поведение программы, которые могли быть пропущены на основных этапах тестирования.Этот перечень не исчерпывающий, но основополагающий. Третий ичетвертый вид тестов можно проводить как часть функциональных тестов, так икак часть структурных.
Функциональное тестирование называют тестированием«черного ящика», так как они не предполагают знания о внутренней реализациикода. Их может проводить кто угодно, а не только разработчик программы.Условно можно сказать так: «Если я подам на вход программы такие данные – яполучу ожидаемый результат?».Структурное тестирование называют тестированием «белого ящика», таккак невозможно проверить отработку всех «маршрутов» программы, не зная еереализации. Это тестирование проводит разработчик программы.Тестирование - очень трудоемкий процесс, а составление необходимыхтестов – умение, которое не дается легко и просто, так как не имеет четкиходнозначных правил.Исчерпывающее структурное тестирование невозможно 2 (фактически этозадача полного перебора всех возможных «маршрутов» в коде), поэтомусуществует несколько методов, где выбраны определенные критерии полнотытестирования, которые позволяют систематизировать тестовые наборы, упрощаяпроцесс: метод покрытия операторов – критерием покрытия является выполнение каждого оператора программы хотя бы один раз; метод покрытия переходов – каждое направление перехода (цикл, ветвление) должно быть реализовано, по крайней мере, один раз (поглощаетпредыдущий метод); метод покрытия условий – все возможные результаты каждого логического условия в решении выполнялись, по крайней мере, один раз; комбинированные методы.2Оставим доказательство этого утверждения за скобками курса, так как его объяснение относится к довольносложному разделу из теории сложности задач.8Воробьева И.А.
«Информатика. Язык Питон»Основное внимание уделим функциональным тестам. При составленииспецификации не зря вычисляют диапазоны, как входных данных, так и данныхрезультата. Ключевые направления разработки функциональных тестов таковы:типовоеразличиегруппы тестовперечень типичных наборов тестовПо каждому входному данному отрабатываются:отработкадиапазоноввходных данных выход за правую границу, аномалия (здесьважна так называемая точка срабатывания); точная правая граница (для вещественных интервалов проверка возможна только с некоторой точностью приближения); середина диапазона; точная левая граница; выход за левую границу (аномалия).Покаждомуотрабатываются:отработкадиапазоноввыходных данныхвыходномуданному точная нижняя граница – минимальное значение (для вещественных интервалов проверка возможна только с некоторой точностью приближения); середина диапазона; значение, равенства «нулю» (особая точка); точная правая граница – максимальное значение; возможность, когда величина не может бытьподсчитана (типичная ситуация альтернативного решения);альтернативные Все ветвления в условии задачи с отличительнымрешениярезультатом.9Воробьева И.А.
«Информатика. Язык Питон»все прогнозируемыенапример:аномалиикритическаяразмерностьзадачианомальныеситуации, ошибки ввода данных; ошибки «чтения из»/«записи в» файл; выходы за допустимые границы.Например, если есть массив или матрица, торассматривают их допустимый вырожденныйслучай: единственный элемент. В некоторыхзадачах допустимый минимум размерности – это«2», например, в матрицах с задачей наддиагоналями, в массивах – работа с парамисоседних элементов и т.п.В некоторых задачах имеет смысл рассматриватьразмерности с точки зрения четности: четная/нечетная.Для числовых данных варианты:числовыедиапазоныданныхесть все числа диапазона: <0, =0, >0;есть только все отрицательные (включая ВСЕпараметры задачи);есть только все нулевые (=0) числа;есть все одинаковые числа.Наиболее трудно систематизируемый перечень.Можно только привести наглядные примеры.В задачах с условиями (столбец матрицы):смысловыетесты задачи подходит один столбец ивый/последний); подходит несколько столбцов; подходят все столбцы; ни один не подходит.онЭто может быть не столбец, а элемент и т.п.(пер-10Воробьева И.А.
«Информатика. Язык Питон»В задачах сортировки (массива): массив (исходный) не отсортирован; массив уже отсортирован; массив отсортирован строго в обратном порядке; массив состоит из одинаковых элементов; массив не отсортирован, причем в нем естьодинаковые элементы; если элементы числа, то все отрицательные.Взадачахпоискамаксимального):элемента(номер максимум один и он первый/последний вмассиве; максимумов несколько; все элементы одинаковы.Поясним, выделенные в таблице тесты. выход за правую границу, аномалия (здесь важна так называемая точкасрабатывания);Пусть задан целочисленный диапазон для.
Ошибкой будетпроверять выход за границу в точках «7», «8» и больше. Обязательно надопроверять точку «6» так как, проверив точку «8» нельзя гарантировать, что вточках между границей и точкой проверки аномалия отработает. Здесь исходимиз того, что проверка обычно проходит по условиям вида: «if (n >=6) then» или «if(n >5) then».
То есть, проверив границу срабатывания, мы уже можем бытьуверены в том, что «все точки справа» отработают, как положено – аномалия.11Воробьева И.А. «Информатика. Язык Питон» точная правая граница (для вещественных интервалов проверка возможнатолько с некоторой точностью приближения);Пусть задан диапазон для вещественной величиныиточность. Точность – это число значимых цифр (число верных цифр) ввещественном числе,достаточное в решаемой задаче. В компьютерныхвычислениях принято следующее определение равенства вещественных чисел сучетом точности: вещественные числа a и b можно считать равными сточностью t, если выполнено условие. Посмотрите на рисунокниже.Исходя из определения равенства вещественных чисел с учетом точности,мы можем строить тесты следующим образом:– считаем точной правой границей в разрешенном диа-пазоне; любое числосчитаем равным числу «5.00» и, следовательно, границей срабатывания теста на аномалию.Более точные пояснения можно дать только исходя из конкретных условийзадач, но всегда надо иметь в виду указанное правило сравнения на равенствовещественных чисел в компьютерных вычислениях. есть только все отрицательные (включая ВСЕ параметры задачи);Пусть решается задача: «если сумма элементов массива А(n) меньше числаT, то …».
Распространенная ошибка, когда делают тест, в котором все элементымассива меньше нуля, но забывают сделать отрицательным параметр T. На самомделе здесь строится, как минимум два теста, например при n=4: тест 1 – A=(-1, -4, -2, -5), T= -11 – сумма элементов равнательно, отработает одна ветвь условия задачи; тест 2 – A=(-1, -4, -2, -5), T= -12 – сумма элементов равнательно, отработает другая ветвь условия задачи., следова, следова-12Воробьева И.А. «Информатика. Язык Питон»Функциональные тесты (на примере задачи)Приведем три теста, в качестве примеров для задачи 3.2, формулировкакоторой и ее данные с диапазонами описаны ниже. Эти тесты являются лишьиллюстрацией к тому, как их строить, охватывают минимально смысловуюнагрузку задачи и не покрывают проверки диапазонов исходных величин.Задача 3.2:Даны две последовательности: C1, C2,..., Cn; P1, P2,..., Pn. Если каждыйэлемент первой последовательности меньше суммы элементов второй,найти при каких значениях i, j максимально значение выраженияCi / (Pj + Ci2).Данные входные, выходные, промежуточные и их диапазоны, типы,назначениеn – Размерность массивов С и P,i – индекс массива С,;j – индекс массива Р,;;С – массив целочисленных элементов, определяем диапазон сами, например:с;P – массив целочисленных положительных элементов:;выбор диапазона для элементов массива P не случаен – мы исключаем деление на ноль в выражении Ci / (Pj + Ci2);Sp – сумма всех элементов массива P:,диапазон:;Flg – логическая переменная (=False – выполнение условия для поиска максимумавыражения);Y_ij – рабочая вещественная переменная – отношение Ci / (Pj + Ci2) дляфиксированных i и j,диапазон (предельные значения будут при мин.
и):;Max – максимальное значение (вещественная переменная) среди всехвычисленных Y_ij, если максимумов несколько, ищем последний;Ni, Nj – номер элемента с и номер элемента., для которых найден Max,13Воробьева И.А. «Информатика. Язык Питон»Замечание 5.1.С выражениями вида Ci / (Pj + Ci2) надо быть всегдаосторожными. Если бы элементы массивов были вещественными типами, а,следовательно, диапазон элементов в P:, то в этом случае приопределенных условиях, диапазон. Какие же это условия? Например:. Тогда.
Если задача позволяет, томожно сдвинутьточностью:левуюграницу.диапазонавправосприемлемойВ конечном итоге, описание данных можно свести в таблицу следующеговида:КЛАССВХОДНЫЕПРОМЕЖУТОЧНЫЕВЫХОДНЫЕИМЯ, смысл(назначение)С, последовательность чиселP, последовательность чиселn, длина последовательностей C, PSp, сумма всехэлементов посл. PFlg – проверкаусловия (=False –выполнение усл.для поискамаксимума средиCi / (Pj + Ci2) )Y_ij – рабочаяпереем. =Ci / (Pj + Ci2)Max –максимальноезначение средиCi / (Pj + Ci2)Ni, номер элементас , для которогонайден MaxNj, номер элемента, для которогонайден MaxТИПСТРУКТУРАцелое массивцелое массивцелое простаяпеременнаяцелое простаяпеременнаялогич. простаяпеременнаявещ.простаяпеременнаявещ.простаяпеременнаяцелое простаяпеременнаяцелое простаяпеременнаяТаблица 3.2.
Таблица данныхДИАПАЗОНФОРМАТс14Воробьева И.А. «Информатика. Язык Питон»Тест 1. Обычная проверка на работоспособность программы с одниммаксимумом.Исходные данные: размерность массивов n=4, массивы: C=(50, 1, 5, 4); P=(50, 10,30, 20);Промежуточные данные:элемент массива С меньше 110 → Flg = False.ЛюбойОжидаемый результат (см. просчитанную вручную таблицу):Max = 0.1539, Ni = 4, Nj = 2.i-строка, j-столбец 123410.0196 0.0199 0.0198 0.019820.0196 0.0909 0.0323 0.047630.0667 0.1429 0. 0909 0.111140.0606 0.1539 0.0870 0.1111Замечание 5.2.Если вычисления в задаче слишком сложные, ограничьтесьразмерностью n=3.Замечание 5.3.