Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
124563.rtf
Скачиваний:
35
Добавлен:
26.08.2019
Размер:
1.32 Mб
Скачать
      1. Разработка тестов с помощью jUnit

Разработаем тест с помощью JUnit для приложения «Определение типа треугольника».

Пример теста приведен в листинге 3.1.

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

@Test

public void sumTest(){

double a=3;

double b=3;

double c=3;

String expected = "Треугольник, со сторонами равными введенным числам, является РАВНОСТОРОННИМ";

String actual = S2;

org.junit.Assert.assertEquals(expected, actual);

Метод, предназначенный для функционирования в качестве теста, достаточно промаркировать новой аннотацией: @Test.

@Test – указывает JUnit, что public void метод, который промаркирован данной аннотацией, может быть запущен как тест. Перед выполнением теста JUnit создает новый объект класса, который содержит тест.

Проверки JUnit выглядят следующим образом:

- assertTrue(String message, Boolean test) – метод проверяет, является ли выражение test истинным;

- assertFalse(String message, Boolean test) – метод проверяет, является ли выражение test ложным. В качестве test может быть выражение типа actual | | expected;

- assertNull(String message, Object object) – метод проверяет является ли object null;

- assertNotNull(String message, Object object);

- assertEquals(String message, Object expected, Object actual) – метод сравнивает expected и actual, используя метод equals;

- assertSame(String message, Object expected, Object actual) – метод сравнивает expected и actual, используя оператор ==;

- assertNotSame(String message, Object expected, Object actual).[Error: Reference source not found]

Заключение

В результате проделанной работы были изучены основы тестирования программного обеспечения. При использовании литературы по данной теме были составлены методические материалы «Тестирование программного обеспечения» (Приложение Б, Приложение В). Используя полученные знания, были протестированы два приложения: «Определение типа треугольника» и «Библиотека». Однако в работе тестируются только настольных приложений ручным методом. В дальнейшем планируется изучить тестирование Web-приложений и освоить автоматический метод тестирование программного обеспечения.

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

Список использованных источников

  1. Майерс, Г. Искусство тестирования программ/ Г. Майерс; Пер. с англ. под ред. Позина. – М.: Финансы и статистика, 1982. – 176 с.

  2. Степанченко И.В. Методы тестирования программного обеспечения: Учеб. пособие / Степанченко И.В. – ВолгГТУ, Волгоград,2006. – 76 с.

  3. Калбертсон, Р. Быстрое тестирование. / Р. Калбертсон, К. Браун, Г. Кобб. – М.: Издательский дом «Вильямс», 2003. – 374 с.

  4. Синицын, С. В. Верификация программного обеспечения. / С.В. Синицин, Н.Ю. Налютин. – М.:2006. – 158 с.

  5. Савин, Р. Тестирование дот ком или пособие по жесткому обращению с багами в интернет-стартапах / Р. Савин. – М.: Издательство «Дело», 2007. – 316 с.

  6. Канер, С. Тестирование программного обеспечения. Фундаментальные концепции менеджмента бизнес-приложений / С. Канер, Дж. Фолк, Е. Кек Нгуен; Пер. с англ. – К.: Издательство «ДиаСофт», 2001. – 544 с.

  7. Тамре, Л. Введение в тестирование программного обеспечения / Л. Тамре; Пер. с англ. М.: Издательский дом «Вильямс», 2003. 368 с.

Приложение

Процесс тестирования программного обеспечения можно отчасти назвать интуитивным, но в то же время в основе его лежит вполне систематизированный подход. Хорошо протестировать программу означает нечто гораздо более серьезное, чем просто "погонять" ее несколько минут, чтобы убедиться, что она работает. Эффективное тестирование требует тщательного анализа и строгого системного подхода.[1]

Тестирование программного обеспечения (software testing) – это процесс анализа или эксплуатации программного обеспечения с целью выявления дефектов. Несмотря на всю простоту этого определения, в нем содержатся пункты, которые требуют дальнейших пояснений. Слово процесс (process) используется для того, чтобы подчеркнуть, что тестирование суть плановая, упорядоченная деятельность.[2]

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

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

– совокупность выполняемых вами действий,

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

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

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

Тесты могут объединяться в группы по функциональным признакам. Группа родственных тестов называется тестовым набором.

Для удобства выполнения тесты можно разбивать на тестовые случаи. Тестовый случай представляет собой совокупность входных данных теста, условий выполнения и ожидаемых результатов, которые разработаны для конкретной цели. Тестовый случай представляет наименьшую единицу тестирования, которую можно самостоятельно выполнить от начала до конца. Если некоторый тест требует выполнения пространной методики тестирования с множеством ожидаемых результатов, имеет смысл разбить такой тест на тестовые случаи. Однако при этом следует иметь в виду, что тестовый случай есть наименьший модуль тестирования, и что с каждым тестовым случаем должен быть связан, по меньшей мере, один ожидаемый результат.[3] Отношения, связывающие тестовые наборы, тесты и тестовые случаи, показаны на рисунке 1.

Рисунок 1. Архитектура тестов.

Хороший тест должен удовлетворять следующим критериям:

  1. Существует обоснованная вероятность выявления тестом ошибки.

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

  1. Набор тестов не должен быть избыточным.

Если два теста предназначены для выявления одной и той же ошибки, зачем выполнять их оба?

  1. Тест должен быть наилучшим в своей категории.

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

  1. Он не должен быть слишком простым или слишком сложным.

Объединив два теста в один, можно сэкономить время на их выполнении. Но не переусердствуйте – огромный и сложный тест трудно понять, трудно выполнить и долго создавать. Поэтому лучше всего придерживаться золотой середины, разрабатывая простые, но все же не совсем элементарные тестовые примеры. Кроме трудоемкости, у сложных тестов есть и более серьезный недостаток. Скомбинировав несколько неверных входных значений, нельзя сказать наверняка, как программа интерпретирует каждое из них. После первого же недопустимого значения поведение программы может выйти из-под контроля, например, она может просто отказаться принимать все остальные данные.[1]

Задание: На примере приложения «Определение типа треугольника» ознакомиться с процессом описания требований к приложению. Составить набор тестов для данного приложения.

Ход выполнения работы:

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

1. Определим входные и выходные данные.

Входные данные: три целых числа, которые интерпретируются как длины сторон треугольника.

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

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

2. Проанализировав возможные ошибки, составим следующие тесты:

  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.Тест, содержащий нецелые значения.

Замечание: Для каждого теста необходимо заранее описать не только входные значения, но и выходные данные метода.

3. Для простоты просмотра результатов тестов будем использовать таблицу.

В таблице содержится следующая информация.

– ID тестового примера. Уникальный идентификационный номер тестового примера.

– Входные данные. Последовательность входных данных, которая вводится тестером.

– Ожидаемые результаты. Поведение системы, которое тестер ожидает увидеть.

– Реальные результаты. Место, куда тестер будет записывать неожиданные результаты, или где он будет делать отметку о том, что тест был пройден.

Результаты тестирования показаны в таблице 1.

Таблица 1. Набор тестов для приложения «Определение типа треугольника».

ID тестового примера

Входные данные

Ожидаемые результаты

Реальные результаты

1 сторона

2 сторона

3 сторона

Т1

3

7

6

Сообщение, о том, что треугольник с введенными сторонами является неравносторонним

Т2

3

3

3

Сообщение, о том, что треугольник с введенными сторонами является равносторонним

Т3

6

6

3

Сообщение, о том, что треугольник с введенными сторонами является равнобедренным

Т4.1

3

3

4

Сообщение, о том, что треугольник с введенными сторонами является равнобедренным

Т4.2

3

4

3

Сообщение, о том, что треугольник с введенными сторонами является равнобедренным

Т4.3

4

3

3

Сообщение, о том, что треугольник с введенными сторонами является равнобедренным

Т5

0

3

4

Сообщение, о том, что треугольник с введенными сторонами не может быть построен

Т6

-1

3

5

Сообщение, о том, что треугольник с отрицательными сторонами не может быть построен

Т7

1

2

3

Сообщение, о том, что треугольник с введенными сторонами не может быть построен

Т8.1

1

3

2

Сообщение, о том, что треугольник с введенными сторонами не может быть построен

Т8.2

2

1

3

Сообщение, о том, что треугольник с введенными сторонами не может быть построен

Т8.3

3

2

1

Сообщение, о том, что треугольник с введенными сторонами не может быть построен

Т9

1

2

4

Сообщение, о том, что треугольник с введенными сторонами не может быть построен

Т10.1

4

2

1

Сообщение, о том, что треугольник с введенными сторонами не может быть построен

Т10.2

1

4

2

Сообщение, о том, что треугольник с введенными сторонами не может быть построен

Т10.3

4

1

2

Сообщение, о том, что треугольник с введенными сторонами не может быть построен

Т11

0

0

0

Сообщение, о том, что треугольник с отрицательными сторонами не может быть построен

Т12

4.6

2

3

Сообщение о том, что введено нецелое число

4.Разработать приложение «Определение типа треугольника».

5. Протестировать приложение «Определение типа треугольника». Результаты тестирования занести в таблицу 1. Если результаты, полученные в процессе тестирования приложения не соответствуют ожидаемым, то приложение не прошло тестирование и необходима его доработка.

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

Цель работы: Усовершенствовать навыки составления тестов.

Задание: 1. На основе требований к программному продукту составить наборы тестов для тестирования приложения, предложенного преподавателем.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]