Покрытие тестами созданного приложения

Автор: Пользователь скрыл имя, 18 Февраля 2013 в 09:45, лабораторная работа

Описание работы

Цель работы: Создание приложения и покрытие его юнит тестами.
Тестирование программного обеспечения — процесс исследования программного обеспечения (ПО) с целью получения информации о качестве продукта.
Существующие на сегодняшний день методы тестирования ПО не позволяют однозначно и полностью выявить все дефекты и установить корректность функционирования анализируемой программы, поэтому все существующие методы тестирования действуют в рамках формального процесса проверки исследуемого или разрабатываемого ПО.

Работа содержит 1 файл

lab1.doc

— 58.50 Кб (Скачать)

Министерство образования  и науки, молодежи и спорта Украины

Одесский национальный политехнический университет

Институт компьютерных систем

Кафедра информационных систем

 

 

 

 

 

 

 

 

 

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

 

По дисциплине:

«Качество и надежность ИУС»

 

На тему:

«Покрытие тестами созданного приложения»

 

 

 

 

 

Выполнил:

Ст. гр. ИПАИ-102с

Свирид Р.В.

 

 

 

Проверил:

Трофимов Б.Ф.

 

 

 

 

 

 

Одесса — 2013

Цель работы:

Создание приложения и покрытие его юнит тестами.

 

Теоретические сведения:

Тестирование программного обеспечения — процесс исследования программного обеспечения (ПО) с целью получения информации о качестве продукта.

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

Такой процесс формальной проверки, или верификации, может  доказать, что дефекты отсутствуют с точки зрения используемого метода. (То есть нет никакой возможности точно установить или гарантировать отсутствие дефектов в программном продукте с учётом человеческого фактора, присутствующего на всех этапах жизненного цикла ПО).

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

С точки зрения ISO 9126, качество программного обеспечения можно определить как совокупную характеристику исследуемого ПО с учётом следующих составляющих:

Надёжность

Сопровождаемость

Практичность

Эффективность

Мобильность

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

 

Задание:

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

 

Ход работы:

 

Создадим программу, которая  переводит числа с 10-ой СС в 16-ую.

 

package ua.opu.quality.lab;

import java.util.ArrayList;

import java.util.List;

public class DecToHex {

    private static final char[] DEC_TO_HEX_CHARS = {

            '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f',

    };

 

    public static String[] decToHex(int[] array) {

        String[] result = new String[array.length];

        for (int i = 0; i < array.length; i++) {

            result[i] = decToHex(array[i]);

        }

        return result;

    }

   

    public static String decToHex(int dec) {

        long num = dec;

       

        List<Character> characters = new ArrayList<>();

 

        boolean minus = false;

        if (num < 0) {

            minus = true;

            num = -num;

        }

 

        while (num >= 16) {

            int rest = (int) (num % 16);

            num = num / 16;

            characters.add(DEC_TO_HEX_CHARS[rest]);

        }

        characters.add(DEC_TO_HEX_CHARS[(int) num]);

 

        StringBuilder result = new StringBuilder();

        if (minus) {

            result.append('-');

        }

        for (int i = characters.size() - 1; i >= 0; i--) {

            result.append(characters.get(i));

        }

 

        return result.toString();

    }

 

    public static void main(String[] args) {

        for (int i = -30; i < 31; i++) {

            System.out.println(String.format("%d => %s", i, decToHex(i)));

        }

    }

Напишем юнит тесты с помощью Junit framework:

 

import static junit.framework.Assert.assertEquals;

import org.junit.Test;

import ua.opu.quality.lab.DecToHex;

 

public class DecToHexTest {

    @Test

    public void decToHexSimpleMinus15To15Range() {

        for (int i = -15; i <= 15; i++) {

            assertEquals(nativeDecToHex(i), DecToHex.decToHex(i));

        }

    }

 

    @Test

    public void decToHexSimpleIntegerMinMaxZero() {

        assertEquals(nativeDecToHex(0), DecToHex.decToHex(0));

        assertEquals(nativeDecToHex(Integer.MIN_VALUE), DecToHex.decToHex(Integer.MIN_VALUE));

        assertEquals(nativeDecToHex(Integer.MAX_VALUE), DecToHex.decToHex(Integer.MAX_VALUE));

    }

 

    @Test

    public void decToHexArrayEmpty() {

        assertStringArrayEquals(new String[0], DecToHex.decToHex(new int[0]));

    }

 

    @Test

    public void decToHexArrayRange() {

        assertStringArrayEquals(new String[] {

                "-1", "0", "1", "f", "10", "11", "ff", "ffff"

        }, DecToHex.decToHex(new int[] {

                -1, 0, 1, 15, 16, 17, 255, 65535

        }));

    }

 

    @Test

    public void decToHexSimpleMinus70kTo70k() {

        for (int i = -70000; i <= 70000; i++) {

            assertEquals(nativeDecToHex(i), DecToHex.decToHex(i));

        }

    }

 

    private static void assertStringArrayEquals(String[] expected, String[] actual) {

        assertEquals("Array sizes does not match", expected.length, actual.length);

        for (int i = 0; i < expected.length; i++) {

            assertEquals(expected[i], actual[i]);

        }

    }

 

    private static String nativeDecToHex(int dec) {

        if (dec >= 0) {

            return Integer.toHexString(dec);

        } else {

            return "-" + Long.toHexString(-((long) dec));

        }

    }

}

 

 

Тест включает в себя проверки:

 

  • Диапазона от -15 до 15
  • Max, min нулевого значения
  • Пустого массива
  • Правильность перевода с 16-ой в 10-ую СС
  • Больших чисел

 

Запустим тест в среде NETBEANS:

 

 

Рис. 1. Результаты тестов

 

Результат положителен, все тесты пройдены

 

 

Вывод: 

 

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

 

 


Информация о работе Покрытие тестами созданного приложения