Koncepcja Realizacji Testów Jednostkowych w Języku Vhdl Przemysław Sołtan



Pobieranie 153,58 Kb.
Strona1/4
Data01.03.2018
Rozmiar153,58 Kb.
  1   2   3   4

Koncepcja Realizacji Testów Jednostkowych w Języku Vhdl
Przemysław Sołtan
Politechnika Koszalińska, Wydział Elektroniki, ul. Śniadeckich 2, 75-543 Koszalin
e-mail: kerk@ie.tu.koszalin.pl

Streszczenie


W pracy zaproponowano nową koncepcję tworzenia i realizacji testów dla systemów cyfrowych przedstawionych w postaci modeli VHDL. Nowa koncepcja jest oparta o metodologię projektowania XP (Extreme Programming), i polega na tworzeniu niezależnych jednostek testowych w postaci bloków przedstawiających procesy VHDL, co umożliwia ich selektywne uruchomienie. W oparciu o nową koncepcję opracowana została biblioteka vhdlUnit pozwalająca na automatyzację procesu testowania oraz tworzenie raportów i statystyk. Autor w praktyczny sposób wykorzystał bibliotekę podczas realizacji własnych projektów. Zaimplementowano rozszerzenie biblioteki o obsługę wielowartościowego typu danych oraz zaproponowano kierunki rozwoju rozszerzające jej funkcjonalność.

1. Wprowadzenie


Klasyczne testowanie układów polega na podawaniu wymuszeń do testowanego systemu i obserwowaniu jego zachowania. Jest to badanie zachowawcze (behawioralne). Podczas tworzenia projektów przy użyciu języka opisu sprzętu, np. VHDL, mamy do czynienia z symulacją programową badanych układów. W takim przypadku standardowe mechanizmy ich testowania można rozwinąć o tzw. testy jednostkowe szeroko stosowane w przypadku testowania oprogramowania.

Termin testy jednostkowe definiuje się jako moduły testujące (jednostki testowe), które można uruchamiać w izolacji od pozostałych.




Rys. 1. Testowany system i środowisko testowe


Współczesne projektowanie boryka się z problemami testowania i weryfikacji tworzonych systemów. Złożoność projektów wymusza automatyzację procesu testowania i odciążenie projektanta od wykonywania powtarzalnych czynności. Celem testowania jest wykrycie obecności błędów, a nie ich braku. Wynika to z trudności w dowodzeniu poprawności i wiarygodności systemów ze względu na dużą ich złożoność. Zastosowanie „sprzężenia zwrotnego” za pomocą zautomatyzowanych testów jednostkowych umożliwia kontrolę jakości wykonanej pracy przy pomocy generowanych raportów.

W ostatnich latach opracowano również metodologię projektowania XP (Extreme Programming) [6], która bazuje na realizacji testów jednostkowych. Głównym założeniem XP jest to, aby projekt rozpoczynać od zdefiniowania testów pomimo, że brak jeszcze reszty kodu projektowanego systemu. Takie zdefiniowanie wymagań zwraca uwagę na to, co jest ważne w projekcie, i jaki jest postęp prowadzonych prac.

Tworzenie testów wraz z kodem programu umożliwia automatyczne wykrywanie błędów wprowadzanych podczas projektowania. Kod stanowi również formę dokumentacji, dzięki której wiadomo, jak ma zachowywać się system. Naprzemienne tworzenie testów i kodowania wprowadza inkrementny tryb pracy, co eliminuje występowanie nieoczekiwanych sytuacji wydłużających cykl projektowy.

2. Koncepcja realizacji testów jednostkowych w vhdl


Realizacja testów jednostkowych w języku VHDL nie jest próbą eliminacji sprawdzonych standardowych mechanizmów testowania. Jej głównym celem jest rozbudowa mechanizmów asercji, raportowania oraz automatyzacji testów.

Termin asercja określa wymuszenie zachowania określonego warunku podczas pracy symulowanego systemu (np. przyjmowanie przez dany sygnał określonego stanu - wartości).

W standardzie języka VHDL zdefiniowano obsługę asercji. Jednak istotną wadą tego mechanizmu jest ograniczona możliwość raportowania przebiegu testu i porównywania wyników z innymi symulacjami. W tym celu przezwyciężenia wymienionej wady autor zaprojektował własne metody asercji uwzględniające możliwość sprawdzania wartości dla różnych typów danych.

Jako podstawową jednostkę testową zaproponowano realizację procesów VHDL wykorzystujących zaprojektowane metody asercji oraz pomocnicze metody sterujące procesem raportowania wyników testu. Tak przygotowany proces jako moduł testowy (TestCase) jest następnie umieszczany wewnątrz standardowego testu zaprojektowanego przez projektanta (TestBench). Kod testowy zawiera również zestaw procesów stymulujących testowany model (Stymulus). Opisana koncepcja została przedstawiona na rys. 2.



Rys. 2. Koncepcja implementacji biblioteki testów jednostkowych.


Podczas symulacji następuje wywoływanie metod asercji opisanych w zewnętrznej bibliotece (vhdlUnit), która realizuje raportowanie wyników test.

Realizację biblioteki testów jednostkowych w języku VHDL wzorowano na bibliotece JUnit zaprojektowanej przez Erich’a Gamma i Kent’a Beck’a wspomagającej wykonywanie testów jednostkowych programów tworzonych przy użyciu języka Java.

Proces automatyzacji uzyskuje się poprzez sekwencyjne wywołanie testowanych symulacji wraz ze specjalną symulacja inicjującą i kończącą wykonanie testu. Całość wspomagana jest przez mechanizm makr środowiska projektowego.



  1   2   3   4


©operacji.org 2017
wyślij wiadomość

    Strona główna