Zpo-4-lab: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Bwalter (dyskusja | edycje)
Bwalter (dyskusja | edycje)
Nie podano opisu zmian
Linia 1: Linia 1:
=Ćwiczenie 4. Metryki obiektowe=
=Ćwiczenie 4. Obiekty zastępcze=


==Informacje wstępne==
==Informacje wstępne==
Ćwiczenie jest realizowane w języku Java w środowisku Eclipse 3.2.
Ćwiczenie jest realizowany w języku Java w środowisku Eclipse 3.2.
Przed przystąpieniem do realizacji ćwiczenia należy zapozanać się z wykładem.
Przed przystąpieniem do realizacji ćwiczenia należy zapozanać się z wykładem.
Celem ćwiczenia jest ocena jakości oprogramowania za pomocą metryk obiektowych
Celem ćwiczenia zastosowanie obiektów zastępczych (ang. mock objects) do testowania jednostkowego systemów obiektowych.


==Instalacja==
==Instalacja==
Przygotowanie do ćwiczenia polega na zainstalowaniu JDK 5.0 [http://java.sun.com/javase/downloads/index.jsp] oraz środowiska Eclipse [http://www.eclipse.org/downloads] w wersji 3.2
Przygotowanie do ćwiczenia polega na zainstalowaniu [http://java.sun.com/javase/downloads/index.jsp JDK 5.0] oraz środowiska [http://www.eclipse.org/downloads Eclipse] w wersji 3.2
Po uruchomieniu środowiska i wyborze przestrzeni roboczej należy wykonać instalację wtyczki [http://metrics.sourceforge.net Eclipse Metrics], która pozwoli na automatyczny pomiar wybranych metryk obiektowych dla programów w środowisku Eclipse.
Biblioteka EasyMock jest dołączona do projektu zawierającego [media:zpo-05-lab.zip|szablon aplikacji]. Można także pobrać ją ze strony projektu [http://www.easymock.org EasyMock]
Ostatni krok polega na utworzeniu lokalnej kopii projektu [http://jakarta.apache.org/commons/configuration Jakarta Commons Configuration] za pomocą CVS/SVN..
Po uruchomieniu środowiska i wyborze przestrzeni roboczej należy zaimportować (menu File->Import->Existing projects into workspace) projekt [[media:zpo-05-lab.zip|zpo-05-lab.zip]] z szablonem rozwiązania.


==Zadanie==
==Zadanie 1==
Zadanie polega na obliczeniu metryk obiektowych za pomocą wtyczki Eclipse Metrics dla klas wymienionych podczas wykładu, oraz zinterpretowaniu ich wartości.  
Napisz testy jednostkowe wykorzystujące obiekty zastępcze (ang. mock objects) do testowania aplikacji-zegara.  
W szczególności należy wyznaczyć wartości następującyc metryk :
* dotyczących powiązań między obiektami: Ce, Ca
* dotyczących spójności obiektów: LCOM
* dotyczących niestabliności i abstrakcyjności klas: I, A
* dotyczących dziedziczenia: NOC, DIT


==Pytanie do dyskusji==
Zegar jest systemem interpretującym drgania generatora, który odmierza czas w postaci odcinków jednosekundowych. Generator drgań jest niezbędny do uruchomienia zegara, jednak wykorzystanie go w środowisku testowym jest niemożliwe, ponieważ wykonanie niektórych przypadków testowych zajęłoby zbyt wiele czasu.
Które metryki są bardziej przydatne do całościowej oceny jakości projektu?
 
Dlatego należy zaimplementować obiekt zastępczy reprezentujący generator drgań, który zastąpi odliczanie sekund prostszym i konfigurowalnym mechanizmem. Obiekt zastępczy jest alternatywną (w stosunku do istniejącego generatora drgań) implementacją interfejsu ''GeneratorDrgan'', którego metody posiadają najmniejszą możliwą funkcjonalność, a jednocześnie są konfigurowalne.
 
==Zadanie 2==
Drugim zadaniem jest zrealizowanie tego samego obiektu zastępczego za pomocą biblioteki EasyMock, która pozwala na dynamiczne (tj. bez konieczności ich ręcznej implementacji) utworzenie obiektów z wykorzystaniem mechanizmu Java Dynamic Proxy.
 
Dokumentacja systemu EasyMock znajduje się pod adresem [http://www.easymock.org/EasyMock2_2_Documentation.html EasyMock]


==Literatura==
==Literatura==
# B. Henderson-Sellers "Object-oriented metrics. Measures of complexity". Prentice-Hall, 1995
# T. Mackinnon, S. Freeman, P. Craig "Endo testing. Unit testing with mock objects". [[http://www.connextra.com/aboutUs/mockobjects.pdf PDF]]
# B. Walter "Metryki obiektowe jako wskaźniki jakości kodu i projektu". [http://www.inmost.org.pl/articles/Metryki_obiektowe_jako_wskaAniki_jakoAci_kodu_i_projektu/base_view InMoST]
# "Mock objects i EasyMock w praktyce". [[http://jdn.pl/node/6 Java Developers Network]]
# A. Chaffee, W. Pietri "Unit testing with mock objects". [[http://www-128.ibm.com/developerworks/library/j-mocktest.html IBM]]
# EasyMock Homepage, [http://www.easymock.org http://www.easymock.org]

Wersja z 11:28, 6 wrz 2006

Ćwiczenie 4. Obiekty zastępcze

Informacje wstępne

Ćwiczenie jest realizowany w języku Java w środowisku Eclipse 3.2. Przed przystąpieniem do realizacji ćwiczenia należy zapozanać się z wykładem. Celem ćwiczenia zastosowanie obiektów zastępczych (ang. mock objects) do testowania jednostkowego systemów obiektowych.

Instalacja

Przygotowanie do ćwiczenia polega na zainstalowaniu JDK 5.0 oraz środowiska Eclipse w wersji 3.2 Biblioteka EasyMock jest dołączona do projektu zawierającego [media:zpo-05-lab.zip|szablon aplikacji]. Można także pobrać ją ze strony projektu EasyMock Po uruchomieniu środowiska i wyborze przestrzeni roboczej należy zaimportować (menu File->Import->Existing projects into workspace) projekt zpo-05-lab.zip z szablonem rozwiązania.

Zadanie 1

Napisz testy jednostkowe wykorzystujące obiekty zastępcze (ang. mock objects) do testowania aplikacji-zegara.

Zegar jest systemem interpretującym drgania generatora, który odmierza czas w postaci odcinków jednosekundowych. Generator drgań jest niezbędny do uruchomienia zegara, jednak wykorzystanie go w środowisku testowym jest niemożliwe, ponieważ wykonanie niektórych przypadków testowych zajęłoby zbyt wiele czasu.

Dlatego należy zaimplementować obiekt zastępczy reprezentujący generator drgań, który zastąpi odliczanie sekund prostszym i konfigurowalnym mechanizmem. Obiekt zastępczy jest alternatywną (w stosunku do istniejącego generatora drgań) implementacją interfejsu GeneratorDrgan, którego metody posiadają najmniejszą możliwą funkcjonalność, a jednocześnie są konfigurowalne.

Zadanie 2

Drugim zadaniem jest zrealizowanie tego samego obiektu zastępczego za pomocą biblioteki EasyMock, która pozwala na dynamiczne (tj. bez konieczności ich ręcznej implementacji) utworzenie obiektów z wykorzystaniem mechanizmu Java Dynamic Proxy.

Dokumentacja systemu EasyMock znajduje się pod adresem EasyMock

Literatura

  1. T. Mackinnon, S. Freeman, P. Craig "Endo testing. Unit testing with mock objects". [PDF]
  2. "Mock objects i EasyMock w praktyce". [Java Developers Network]
  3. A. Chaffee, W. Pietri "Unit testing with mock objects". [IBM]
  4. EasyMock Homepage, http://www.easymock.org