Функциональное тестирование Цель работы




Скачать 75.27 Kb.
НазваниеФункциональное тестирование Цель работы
Дата публикации15.03.2013
Размер75.27 Kb.
ТипЛабораторная работа
vbibl.ru > Математика > Лабораторная работа

Лабораторная работа № 3


Функциональное тестирование

Цель работы: 1. Изучение назначения и задач функционального тестирования.

2. Программная реализация тестов, производящих функциональное тестирование алгоритма пирамидальной сортировки из курса лабораторных работ.

Общие сведения


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

Для предоставленной реализации алгоритма пирамидальной сортировки из курса лабораторных работ необходимо установить:

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

  • соответствует ли она заявленной теоретической трудоёмкости (см. разделы 1.2, 1.8), то есть не будет ли программа исполняться дольше обещанного при возрастании объёма входных данных.

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

Запись вида f(n) = O(g(n)) означает, что функция f(n) возрастает медленнее, чем функция с*g(n) при с = с1 и n = N, где c1 и N могут быть сколь угодно большими числами, то есть при

c = c1 и n ≥ N, c*g(n) ≥ f(n) (4.1).

Функция g(n) является минимальной по степени, удовлетворяющей условию (4.1).

Юнит-тестирование


Модульное тестирование, или юнит-тестирование (англ. unit testing) — процесс в программировании, позволяющий проверить на корректность отдельные модули исходного кода программы.

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

Для использования юнит-тестов будем использовать JUnit. JUnit — библиотека для модульного тестирования программного обеспечения на языке Java. Скачать свежую версию данной библиотеки можно по адресу http://www.junit.org.

Пример юнит-теста, проверяющего равенство 2+2=4, приведен в листинге 4.1.

Листинг 4.1 – пример юнит-теста

import org.junit.Test;

import junit.framework.Assert;

public class MathTest {

@Test

public void testEquals() {

Assert.assertEquals(4, 2 + 2);

Assert.assertTrue(4 == 2 + 2);

}

@Test

public void testNotEquals() {

Assert.assertFalse(5 == 2 + 2);

}

}
^

Предварительная подготовка к работе


Так как алгоритм реализован на языке Java, то юнит-тесты следует писать с использованием библиотеки JUnit (http://www.junit.org). В качестве седы разработки можно использовать любую удобную Вам IDE (Eclipse / NetBeans / др.). Реализовать юнит-тесты следует так, чтобы они выполнял функциональное тестирование программы сортировки в соответствии с вышеуказанными задачами.

Юнит-тест на проверку теоретической трудоёмкости представляет собой получение времени работы программы сортировки на исходных данных объёмом от 1 до 10000 элементов. Чтобы получить достоверные данные следует провести эксперимент для каждого из значений объема исходных данных не менее 5 раз. Замер времени удобно проводить с помощью функции System.nanoTime().

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

Получив отфильтрованные данные, необходимо найти наиболее подходящую им регрессионную модель (линию тренда). Это можно сделать, например, в программе для работы с электронными таблицами MS Exсel. Далее следует подобрать асимптотическую оценку этой модели, которая будет являться экспериментальной трудоёмкостью проверяемой программы сортировки.

Обработка результатов эксперимента

Для удобства выполнения статистической обработки данных все полученные значения необходимо перенести в MS Excel так, чтобы столбец содержал результаты одного эксперимента для объемов исходных данных от 1 до 10000.

Для того, чтобы избавиться от случайных выбросов вычислим медиану для каждого эксперимента, воспользовавшись встроенной функцией MS Excel (4.2). Медиана — это возможное значение, которое делит отсортированный ряд чисел на две равные части: 50 % «нижних» единиц ряда данных будут иметь значение не больше, чем медиана, а «верхние» 50 % — значения не меньше, чем медиана. В нашем случае, можно сказать, что медиана — это то значение времени, за которое выполнился алгоритм в среднестатистическом эксперименте.

МЕДИАНА(число 1;[число2];…) (4.2)

Данная функция вычисляет медиану для выбранного в качестве аргумента диапазона ячеек или чисел.

Результатом этого шага обработки данных станет столбец из 10000 элементов с медианно отфильтрованными экспериментальными данными (Рисунок 4.1).



Рисунок 4.1 – Заполнение столбца значениями медианы экспериментальных данных

После получения среднестатистических данных о трудоемкости выполнения алгоритма сортировки на разных объемах данных, необходимо построить их график (рисунок 4.2) и добавить на него линию тренда (рисунок 4.3).

Рисунок 4.2 – График экспериментальных данных

Для того чтобы добавить линию тренда, необходимо выделить данные на графике, нажать на правую кнопку мыши и выбрать пункт «Добавить линию тренда».



Рисунок 4.3 – Добавление линии тренда

В появившемся меню необходимо зайти на вкладку «Параметры» и выделить пункты:

  1. Пересечение кривой с осью Y в точке: (поставить значение из первой ячейки столбика медиан, если это возможно)

  2. Показывать уравнение на диаграмме

  3. Поместить на диаграмму величину достоверности аппроксимации (R^2)

Необходимо опробовать все предлагаемые на вкладке «Тип» модели и выбрать ту, показатель достоверности аппроксимации (R^2) которой будет наибольшим. Следует выписать уравнение этой модели с диаграммы.

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

Основные классы сложности приведены в таблице 4.1:

Таблица 4.1 – Основные классы сложности

f(n) = O(1)

константа

f(n) = O(log(n))

логарифмический рост

f(n) = O(n)

линейный рост

f(n) = O(n*log(n))

квазилинейный рост

f(n) = O(nm)

полиномиальный рост

f(n) = O(2n)

экспоненциальный рост

Асимптотической оценкой f(n) = O(g(n)) будет та функция c*g(n), для которой найдется константа c1 и объем данных N, при которых c1*g(n) ≥ f(n), где n ≥ N. Это условие будет соблюдено, если предел вида (4.3) будет больше или равен единице при больших n.

(4.3)

Объем данных n должен стремиться к большому числу (не менее 109), но не к бесконечности, так как из-за случайных выбросов в экспериментальных данных регрессионная модель могла быть построена не точно и в бесконечности её значение может оказаться выше необходимой g(n) (предел меньше 1). f(n) здесь не все уравнение регрессионной модели, а только старший его член, взятый с коэффициентом 1. Следует проводить проверку, выбирая очередное g(n) в представленном выше порядке и первая, удовлетворяющее условию функция в таком случае будет точной асимптотической оценкой f(n) = O(g(n)). Если начать проверку с больших g(n), то первая взятая функция будет удовлетворять условию, но в этом случае полученная асимптотическая оценка будет приблизительной.
^

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




  1. Откройте выбранную IDE и создайте проект на основе существующих программных кодов, реализующих алгоритм пирамидальной сортировки.

  2. Подключите к проекту библиотеку JUnit.

  3. Создайте юнит-тест на проверку правильности работы программы сортировки в соответствии с ранее описанными требованиями.

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

  5. Создайте юнит-тест на проверку теоретической трудоёмкости программы сортировки в соответствии с ранее описанными требованиями.

  6. Произведите замеры времени не менее 5 раз для каждого из наборов исходных данных от 1 до 10000 элементов.

  7. Вычислите медиану по всем экспериментам для каждого значения объёма исходных данных.

  8. Проанализируйте отфильтрованные данные и найдите наиболее подходящую им регрессионную модель (линию тренда).

  9. Подберите асимптотическую оценку этой модели.

  10. Сравните экспериментальную трудоёмкость с теоретической. Сделайте соответствующие выводы.


Содержание отчёта




  1. Юнит-тест на проверку правильности работы программы. Необходимо предоставить его описание, программный код, результаты работы и выводы по ним.

  2. Юнит-тест на проверку теоретической трудоёмкости программы. Необходимо предоставить его описание, программный код, результаты работы и их обработки с соответствующими графиками и пояснениями, а также выводы по данному этапу тестирования.

  3. Общие вводы по лабораторной работе.

Добавить документ в свой блог или на сайт

Похожие:

Функциональное тестирование Цель работы iconМодульное тестирование Цель работы
...

Функциональное тестирование Цель работы iconИнтеграционное тестирование Цель работы
Программная реализация тестов, производящих интеграционное тестирование алгоритма пирамидальной сортировки из курса лабораторных...

Функциональное тестирование Цель работы iconПрограмма изменяется с тем, чтобы
Разработка через тестирование. Типичный цикл разработки через тестирование. Преимущества и недостатки разработки через тестирование....

Функциональное тестирование Цель работы iconПлан воспитательной работы школы на 2008-2009 учебный год цель воспитательной работы
Цель воспитательной работы: создание условий для формирования личности творческой, самостоятельной, гуманной, способной ценить себя...

Функциональное тестирование Цель работы iconЛабораторная работа №2. Внешнее строение и передвижение рыб Цель работы
Цель работы: познакомиться с особенностями внешнего строения рыб; выявить черты приспособленности рыб к среде обитания

Функциональное тестирование Цель работы iconЛабораторная работа №8. Седиментационный анализ низкодисперсных порошков. Цель работы
Цель работы: 1 получение кривой седиментации для низкодисперсного порошка; 2 построение интегральной и дифференциальной кривых распределения;...

Функциональное тестирование Цель работы iconРекомендации по выполнению курсовой работы по курсу «структуры и...
Цель курсовой работы: экспериментальная оценка временной сложности выполнения произвольной цепочки из заданного набора операций как...

Функциональное тестирование Цель работы iconАнализ работы методической службы школы за 2011-2012 учебный год Цель анализа
...

Функциональное тестирование Цель работы iconБазовая Система Ввода Вывода (bios). Тестирование Оборудования при...
Это часть программного обеспечения pc, поддерживающая управление адаптерами внешних устройств, экранные операции, тестирование, начальную...

Функциональное тестирование Цель работы iconПлан работы с мотивированными детьми Цель работы на 2012-2013 учебный год
Цель работы на 2012-2013 учебный год: Совершенствование системы работы с мотивированными детьми в рамках общеобразовательного пространства...

Вы можете разместить ссылку на наш сайт:
Школьные материалы


При копировании материала укажите ссылку © 2013
контакты
vbibl.ru
Главная страница