Главная страница
Навигация по странице:

  • ЛАБОРАТОРНАЯ РАБОТА «ТЕСТИРОВАНИЕ ПРОГРАММНЫХ ПРОДУКТОВ»

  • Продолжительность работы

  • Ручное тестирование программных продуктов

  • Ниже приведен перечень вопросов для структурного контроля текста.

  • Тестирование по принципу «белого ящика»

  • Тестирование по принципу «черного ящика»

  • Порядок выполнения лабораторной работы

  • Задача 1.

  • Задача 3.

  • Задача 5.

  • Вопросы для самопроверки

  • Л_р_Тестирование программных продуктов. Лабораторная работа тестирование программных продуктов


    Скачать 421.91 Kb.
    НазваниеЛабораторная работа тестирование программных продуктов
    Дата30.03.2023
    Размер421.91 Kb.
    Формат файлаdocx
    Имя файлаЛ_р_Тестирование программных продуктов.docx
    ТипЛабораторная работа
    #1025257


    ЛАБОРАТОРНАЯ РАБОТА

    «ТЕСТИРОВАНИЕ ПРОГРАММНЫХ ПРОДУКТОВ»
    Одним из наиболее трудоемких этапов (от 30 до 60% общей трудоемкости) создания программного продукта является тестирование. Причем доля стоимости тестирования в общей стоимости разработки имеет тенденцию возрастать при увеличении сложности комплексов программ и повышении требований к их качеству. В связи с этим большое внимание уделяется выбору стратегии и методов тестирования, что не является тривиальной задачей.

    Таким образом, при подготовке к тестированию необходимо ответить на следующие вопросы:

    • Какую стратегию тестирования выбрать и почему? Как ее реализовать?

    • Какой из методов выбранной стратегии тестирования выбрать и почему?

    • Как грамотно подготовить тестовый набор данных и сколько тестов необходимо разработать?

    Цель работы - знакомство с существующими стратегиями тестирования, приобретение навыков выбора стратегии и разработки тестов для отдельных задач, сравнение и оценка различных методов тестирования и их возможностей.

    Продолжительность работы - 4 часа.
    Краткие теоретические сведения

    Исходными данными для тестирования являются техническое задание, спецификации, а для некоторых методов тестирования - алгоритм тестирования.

    При тестировании рекомендуется соблюдать следующие основные принципы:

    1. Предполагаемые результаты должны быть известны до тестирования.

    2. Следует избегать тестирования программы автором.

    3. Необходимо досконально изучать результаты каждого теста.

    4. Необходимо проверять действия программы на неверных данных.

    5. Необходимо проверять программу на неожиданные побочные эффекты.

    6. Удачным считается тест, который обнаруживает хотя бы одну еще не обнаруженную ошибку.

    7. Вероятность наличия ошибки в части программы пропорциональна количеству ошибок, уже обнаруженных в этой части

    Ручное тестирование программных продуктов

    Методы ручного контроля используются, когда получены исходные коды, но к тестированию на машине еще не приступили. Основными методами ручного тестирования являются: инспекции исходного текста; сквозные просмотры; просмотры за столом; обзоры программ.

    Инспекции исходного текста (структурный контроль) с целью обнаружения ошибок осуществляется группой специалистов, в которую входят:

    1. автор программы,

    2. проектировщик,

    3. специалист по тестированию,

    4. координатор (компетентный программист, но не автор программы).

    Общая процедура инспекции состоит из следующих этапов: участникам заранее выдается листинг программы и спецификация на нее; программист рассказывает о логике работы программы и отвечает на вопросы инспекторов; программа анализируется по заранее сформированному списку вопросов.

    Сквозной просмотр также осуществляется группой лиц, но отличается процедурой и методами обнаружения ошибок. Здесь группа состоит из 3-5 человек (председатель или координатор, секретарь, фиксирующий все ошибки, специалист по тестированию, программист и независимый эксперт). Этапы процедуры сквозного контроля: участникам заранее выдается листинг программы и спецификация на нее; участникам заседания предлагается несколько тестов и тестовые данные подвергаются обработке (мысленно) в соответствии с логикой программы; программисту задаются вопросы о логике проектирования; состояние программы (значения переменных) отслеживается на бумаге или доске.

    Третьим методом ручного обнаружения ошибок является проверка исходного текста или сквозные просмотры, выполняемые одним человеком, который читает текст программы, проверяет его по списку и пропускает через программу тестовые данные. При этом тестирование проводит не автор программы.

    Оценка посредством просмотра явно не связана с тестированием. Это метод оценки анонимной программы в терминах ее общего качества, простоты эксплуатации и ясности.

    Цель этого метода - обеспечить сравнительно объективную оценку и самооценку программистов.

    Ниже приведен перечень вопросов для структурного контроля текста.

    Ниже приведен перечень вопросов для структурного контроля текста.

    1. Обращения к данным.

    1) Все ли переменные инициализированы?

    2) Не превышены ли максимальные (или реальные) размеры массивов и

    строк?

    3) Не перепутаны ли строки со столбцами при работе с матрицами?

    4) Присутствуют ли переменные со сходными именами?

    5) Используются ли файлы? Если да, то

    • При вводе из файла проверяется ли завершение файла?

    • Соответствуют ли типы записываемых и читаемых значений?

    6) Использованы ли не типизированные переменные, открытые массивы, динамическая память? Если да, то

    • Соответствуют ли типы переменных при "наложении" формата?

    • Не выходят ли индексы за границы массивов?

    2. Вычисления.

    1) Правильно ли записаны выражения (порядок следования операторов)?

    2) Корректно ли производятся вычисления неарифметических переменных?

    3) Корректно ли выполнены вычисления с переменными различных типов (в том числе с использованием целочисленной арифметики)?

    5) Соответствуют ли вычисления заданным требованиям точности?

    6) Присутствуют ли сравнения переменных различных типов?

    3. Передачи управления.

    1) Будут ли корректно завершены циклы?

    2) Будет ли завершена программа?

    3) Существуют ли циклы, которые не будут выполняться из-за нарушения условия входа? Корректно ли продолжатся вычисления?

    4) Существуют ли поисковые циклы? Корректно ли отрабатываются

    ситуации "элемент найден" и "элемент не найден"?

    4. Интерфейс.

    1) Соответствуют ли списки параметров и аргументов по порядку,

    типу, единицам измерения?

    2) Не изменяет ли подпрограмма аргументов, которые не должны изменяться?

    3) Не происходит ли нарушения области действия глобальных и локальных переменных с одинаковыми именами?
    Тестирование по принципу «белого ящика»

    Стратегия тестирования по принципу «белого ящика» (или стратегия тестирования, управляемая логикой программы, т.е. с учетом алгоритма), позволяет проверить внутреннюю структуру программы. В этом случае тестирующий получает тестовые данные путем анализа логики программы.

    Считается, что программа проверена полностью, если с помощью тестов удается осуществить выполнение программы по всем возможным маршрутам передач управления. Для оценки сложных программ провести исчерпывающее тестирование практически невозможно.

    Стратегия «белого ящика» включает в себя следующие методы тестирования: покрытие операторов, покрытие решений, покрытие условий, покрытие решений/условий, комбинаторное покрытие условий.

    Критерий покрытия операторов подразумевает выполнение каждого оператора программы, по крайней мере, один раз. Это необходимое, но недостаточное условие для приемлемого тестирования.

    Покрытие решений (переходов) предусматривает достаточное число тестов, такое, что каждое решение на этих тестах принимает значение «истина» или «ложь», по крайней мере, один раз. Данный критерий обеспечивает большее количество тестов по сравнению с критерием покрытия операторов.

    Критерий покрытия условий более сильный по сравнению с предыдущим.

    В этом случае записывается число тестов, достаточное для того, чтобы все возможные результаты каждого условия в решении были выполнены, по крайней мере, один раз. Это покрытие не всегда приводит к выполнению каждого оператора, т.к. при данном критерии требуется, чтобы каждой точке входа управление должно быть передано, по крайней мере, один раз.

    Покрытие решений/условий требует составить тесты так, чтобы все возможные результаты каждого условия выполнились, по крайней мере, один раз, все результаты каждого решения выполнились, по крайней мере, один раз и каждой точке входа управление передается, по крайней мере, один раз.

    Комбинаторное покрытие условий требует создания такого числа тестов, чтобы все возможные комбинации результатов условий в каждом решении и все точки входа выполнялись, по крайней мере, один раз.

    Тестирование по принципу «черного ящика»

    Данный вид тестирования еще называют тестирование с управлением по

    данным. Здесь программа рассматривается как "черный ящик" и тестирование выявляет несоответствие программы спецификации. Исчерпывающее тестирование (проверка на всех возможных наборах данных) больших системах невозможно, поэтому выполняют "разумное" тестирование. Для тех же программ, где исполнение команды зависит от предшествующих ей событий, необходимо проверить и все возможные последовательности.

    При "разумном" тестировании выбирают наиболее подходящее подмножество данных, которое обеспечить наивысшую вероятность обнаружения ошибок.

    Стратегия "черного ящика" включает в себя следующие методы формирования тестовых наборов: эквивалентное разбиение; анализ граничных значений; анализ причинно-следственных связей; предположение об ошибке.

    Основу эквивалентного разбиения составляют два положения:

    • Исходные данные программы необходимо разбить на конечное число классов эквивалентности, так чтобы можно было предположить, что каждый тест, являющийся представителем некоторого класса, эквивалентен любому другому тесту этого класса.

    • Каждый тест должен включать по возможности максимальное количество различных входных условий, что позволяет минимизировать общее число необходимых тестов.

    Разработка тестов методом эквивалентного разбиения осуществляется в два этапа: выделение классов эквивалентности и построение тестов.

    Классы эквивалентности выделяются путем выбора каждого входного условия и разбиением его на две или более групп. Для этого используется таблица, состоящая из трех столбцов: входное условие, правильные классы эквивалентности, неправильные классы эквивалентности.

    Правильные классы включают правильные данные, неправильные классы - неправильные данные. Выделение классов эквивалентности является эвристическим процессом.

    Построение тестов включает в себя:

    • Назначение каждому классу эквивалентности уникального номера.

    • Разработка тестов, каждый из которых покрывает как можно большее число непокрытых классов эквивалентности, до тех пор, пока все правильные классы не будут покрыты (только не общими) тестами.

    • Определение тестов, каждый из которых покрывает один и только один из непокрытых неправильных классов эквивалентности, до тех пор, пока все неправильные классы не будут покрыты тестами.

    При анализе граничных значений определяются ситуации, возникающие непосредственно на границе, а также выше или ниже границ входных классов эквивалентности. Анализ граничных значений отличается от эквивалентного разбиения следующим:

    • Выбор любого элемента в классе эквивалентности в качестве представительного при анализе граничных условий осуществляется таким образом, чтобы проверить тестом каждую границу этого класса.

    • При разработке тестов рассматриваются не только входные условия (пространство входов), но и пространство результатов.

    Применение метода анализа граничных условий требует наличие знаний предметной области задачи. Можно выделить несколько правил для этого метода:

    • Если входной параметр описывает область значений, но необходимо написать тест, проверяющий на границе, а также тесты с неправильными входными данными вблизи этой границы.

    • Если входной параметр принадлежит дискретному ряду значений, то

    • нужно построить тесты для минимального и максимального значений ряда, а также для ближайших значений, выходящих за границы ряда.

    • Использовать правило 1 для каждого выходного условия. Использовать правило 2 для каждого выходного условия.

    • Если вход или выход программы есть упорядоченное множество (например, последовательный файл, линейный список, таблица), то сосредоточить внимание на первом и последнем элементах этого множества и др.

    Метод анализа причинно-следственных связей помогает системно выбирать тесты с высокой результативностью. Он дает полезный побочный эффект, позволяя обнаруживать неполноту и неоднозначность исходных спецификаций.

    Для использования метода необходимо понимание булевской логики (логических операторов - и, или, не). Построение тестов осуществляется в несколько этапов.

    1. Спецификация разбивается на «рабочие» участки, для которых создаются таблицы причинно-следственных связей.

    2. В спецификации определяются множество причин и множество следствий. Причина есть отдельное входное условие или класс эквивалентности входных условий. Следствие есть выходное условие или преобразование системы. Каждым причине и следствию приписывается отдельный номер.

    3. На основе анализа семантического (смыслового) содержания спецификации строится таблица истинности, в которой последовательно перебираются все возможные комбинации причин и определяются следствия каждой комбинации причин. Таблица снабжается примечаниями, задающими ограничения и описывающими комбинации причин и/или следствий, которые являются невозможными из-за синтаксических или внешних ограничений. Аналогично, при необходимости строится таблица истинности для класса эквивалентности.

    Методом предположения об ошибке может пользоваться программист с большим опытом. Процедура метода предположения об ошибке в значительной степени основана на интуиции и опыте. Основная идея метода состоит в том, чтобы перечислить в некотором списке возможные ошибки или ситуации, в которых они могут появиться, а затем на основе этого списка составить тесты.

    При тестировании больших систем могут быть использованы все стратегии тестирования. При этом может быть построен общий алгоритм тестирования с использованием всех методов.

    Порядок выполнения лабораторной работы

    1. Ознакомьтесь с теоретическими сведениями по стратегиям тестирования.

    2. Для своего варианта задания выполните структурный контроль, используя перечень вопросов теоретической части. В процессе выполнения заполните таблицу 3.1:


    Таблица 3.1 – Таблица тестов для структурного контроля



    Примечание. Вопросы, которые не актуальны для данной программы можно не фиксировать в таблице.

    Сделайте общий вывод о роли структурного контроля в процессе создания программы. Сформулируйте его достоинства и недостатки.
    3. Для заданного фрагмента схемы алгоритма подготовьте тесты, используя методы стратегии "белого ящика". Предлагаемые тесты сведите в таблицу 3.2.
    Таблица 3.2 – Таблица тестов стратегии «белого ящика»



    Сравните тесты, предлагаемые различными методами. Сделайте вывод о роли тестирования с использованием стратегии "белого ящика" и возможностях его применения. Сформулируйте его достоинства и недостатки.

    4. Внимательно изучите формулировку своего варианта задачи, подготовьте тесты по методикам стратегии "черного ящика". Предлагаемые тесты сведите в таблицу 3.3.

    Таблица 3.3 – Таблица тестов стратегии «черного ящика»



    Получите у преподавателя выполняемый модуль программы. Выполните тестирование. Занесите в таблицу результаты.

    Сделайте вывод о роли тестирования с использованием стратегии "черного ящика" и возможностях его применения. Сформулируйте его достоинства и недостатки.

    Отчет должен включать:

    • название работы и ее цель;

    • описания задач или схемы алгоритмов, для которых разрабатываются тесты;

    • наборы тестов для каждой из заданных стратегий с пояснениями;

    • выводы о том, в каких случаях должен использоваться тот или иной метод и стратегия в целом.


    Задачи

    Задача 1. Реализовать калькулятор, который выполняет два действия «+» и «-» с действительными числами.

    Задача 2. Реализовать калькулятор, который выполняет два действия «+» и «-» с целыми числами.

    Задача 3. Разработать программу решения уравнения ax2+ bx+ c=0 где a, b, c - любые вещественные числа.

    Задача 4. Создать программу, которая позволяет в заданном диапазоне и количестве с помощью генератора случайных чисел создавать массив, а затем сортировать его.

    Задача 5. Написать программу, которая выводит на экран гистограмму. Параметры гистограммы должны вводится с помощью таблицы.

    Задача 6. Программа должна определять во сколько рублей обойдется поездка на дачу (туда и обратно). Исходными данными являются: расстояние, цена бензина, потребление бензина.

    Задача 7. Написать программу, которая вычисляет по закону Ома ток, напряжение и сопротивление. Исходными данными являются: сопротивление и напряжение, сопротивление и ток, ток и напряжение.


    Вопросы для самопроверки

    1. Перечислите методы ручного тестирования?

    2. Что необходимо для выполнения структурного контроля?

    3. Какими возможностями обладают методы ручного тестирования?

    4. Перечислите методы «белого ящика»?

    5. Какие методы «белого ящика» дают наибольшее количество тестов?

    6. Приведите примеры перекрытий методов «белого ящика»?

    7. Какие методы «черного ящика» существуют?

    8. Дайте анализ методов «черного ящика» применительно к различным видам данных?

    9. Приведите пример возможного плана тестирования применительно к

    большим программным системам?

    10. Какие существуют общие принципы тестирования программ?

    11. Какие существуют виды ошибок?

    12. Как провести комплексное тестирование большой системы.


    написать администратору сайта