Автор: Пользователь скрыл имя, 18 Февраля 2013 в 09:45, лабораторная работа
Цель работы: Создание приложения и покрытие его юнит тестами.
Тестирование программного обеспечения — процесс исследования программного обеспечения (ПО) с целью получения информации о качестве продукта.
Существующие на сегодняшний день методы тестирования ПО не позволяют однозначно и полностью выявить все дефекты и установить корректность функционирования анализируемой программы, поэтому все существующие методы тестирования действуют в рамках формального процесса проверки исследуемого или разрабатываемого ПО.
Министерство образования и науки, молодежи и спорта Украины
Одесский национальный политехнический университет
Институт компьютерных систем
Кафедра информационных систем
Лабораторная работа №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_
}
characters.add(DEC_TO_HEX_
StringBuilder result = new StringBuilder();
if (minus) {
result.append('-');
}
for (int i = characters.size() - 1; i >= 0; i--) {
result.append(characters.get(
}
return result.toString();
}
public static void main(String[] args) {
for (int i = -30; i < 31; i++) {
System.out.println(String.
}
}
}
Напишем юнит тесты с помощью Junit framework:
import static junit.framework.Assert.
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)
}
}
@Test
public void
decToHexSimpleIntegerMinMaxZer
assertEquals(nativeDecToHex(0)
assertEquals(nativeDecToHex(
assertEquals(nativeDecToHex(
}
@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)
}
}
private
static void assertStringArrayEquals(
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));
}
}
}
Тест включает в себя проверки:
Запустим тест в среде NETBEANS:
Рис. 1. Результаты тестов
Результат положителен, все тесты пройдены
Вывод:
В ходе проделанной лабораторной работы были получены знания по созданию проекта на мавен для тестирования готовой программы, подавая на ее вход все возможные параметры и указывая какие из них должны отработать правильно, а какие нет. Это позволяет покрывать все аспекты тестируемой программы с помощью фреймфорка JUnit.