Celem artykułu będzie zaproponowanie strategii testowania automatycznego

Wielkość: px
Rozpocząć pokaz od strony:

Download "Celem artykułu będzie zaproponowanie strategii testowania automatycznego"

Transkrypt

1 Domain Driven Design krok po kroku Część V: Kompendium testowania aplikacji opartej o DDD problemy, strategie, taktyki i techniki W jaki sposób zapewnić jakość systemu? Czy pokrycie 80% kodu testami jest wystarczające? A może wystarczy 20%, ale zainwestowane racjonalnie. Czy praca z Javą lub.net musi być mozolna z uwagi na redeploy? Na wszystkie te pytania odpowiemy w przedostatniej części naszej serii. Celem artykułu będzie zaproponowanie strategii testowania automatycznego dopasowanej do projektów opartych o DDD. Strategia odpowie na pytanie: co, kiedy i w jaki sposób testować, aby osiągnąć korzystny współczynnik poniesionego na testy kosztu w stosunku do jakości. W artykule zostaną przedstawione również konkretne taktyki testowania poszczególnych Building Blocks DDD. Proponowane taktyki zwiększają również produktywność zespołów pracujących z kompilowanymi językami dzięki temu, że ogranicza w dużej mierze czas marnowany na redeploy testowanego systemu. PROJEKT REFERENCYJNY Wszystkich tych Czytelników, którzy już teraz chcieliby zapoznać się z kolejnymi zagadnieniami naszej serii, zapraszam do odwiedzenia strony projektu DDD&CqRS Laven, której adres znajduje się w ramce W sieci. Dostępne wersje: Java Spring, Java EJB 3.1 i.net C#. SYSTEMATYZACJA POJĘĆ Zanim przejdziemy do omawiania konkretnych technik, chciałbym na wstępie uzgodnić wspólny zakres pojęć. Jest to o tyle ważne, że w nomenklaturze testowania automatycznego mamy kilka podejść do kategoryzacji testów i często dochodzi do sytuacji, gdzie dwie osoby, używając tego samego słowa, mają na myśli inny rodzaj testu. W niniejszym artykule będziemy posługiwać się pojęciami z jednej z najnowszych książek Growing Object-Oriented Software, Guided by Tests Steva Freemana. Spojrzymy na testy w ujęciu 2-wymiarowym: pod kątem zakresu i roli. Oba wymiary przecinają się, tak więc testy o danym zakresie mogą potencjalnie grać różne role. Zakres testów Z punktu widzenia zakresu testów będziemy zajmować się testami jednostkowymi, testami End2End oraz integracyjnymi. Testów jednostkowych będziemy używać do testowania zachowania poszczególnych Building Blocks DDD. BB będą testowane w izolacji, tak więc będziemy posługiwać się różnego rodzaju zaślepkami (Fake, Mock, Stub). Testy jednostkowe posłużą nam do sprawdzenia, czy logika działa dokładnie tak, jak założono. Testów End2End będziemy używać w celu testowania poprzez warstwy począwszy od warstwy logiki aplikacyjnej (lub ew. UI), aż po warstwę infrastruktury. Z uwagi na możliwą ilość kombinacji nie będziemy w stanie sprawdzić wszystkich przypadków, zatem nie będziemy stosować testów o tym zakresie do sprawdzenia perfekcji. Testy End2End mogą mieś zakres komponentu lub całego systemu. W naszym przypadku skupimy się na zakresie komponentu rozumianego jako Serwis w stylu SOA czyli nasze Serwisy Aplikacyjne. Testami integracyjnymi nazywa się czasem testy, które my nazwaliśmy End2End. Natomiast w niniejszym artykule (zgodnie z nową nomenklaturą) testami integracyjnymi będziemy nazywać takie testy, które sprawdzają poprawność integracji z innymi komponentami (np. innymi modułami systemu lub usługami technicznymi). W przypadku projektu opartego o 4-warstwową architekturę DDD testami integracyjnymi pokrylibyśmy wybrane abstrakcje z Warstwy Infrastruktury. Ze względu na specyfikę tych testów charakterystyczną dla danego typu infrastruktury pominiemy ten rodzaj testów. Rola testów Większość testów będziemy wykorzystywać, aby upewnić się, czy kod działa dokładnie zgodnie z wymaganiami. Inne testy będą służyły nam jako ogólny cel biznesowy, wyznaczający zadania i kryteria akceptacji. Oba rodzaje testów zwykle przechodzą do roli regresyjnych, gdzie sprawdzają, czy kod po zmianach wciąż działa tak jak założono. DRAŻLIWY TEMAT: POKRYCIE KODU TESTAMI Wiele projektów czy nawet całych organizacji przyjmuje metrykę zakładającą, że 80% kodu powinno być pokryte testami. Liczba 80 jest popularna zapewne z uwagi na to, że często pojawia się jako przykład w literaturze. Oczywiście w projektach rozwiązujących pewne klasy problemów 80% to stanowczo zbyt mało, ale w oprogramowaniu biznesowym jest to powszechnie przyjęta poprzeczka. Z drugiej zaś strony, gdy zapytać doświadczonych programistów o ich intuicyjne odczucia co do procenta kodu, który warto pokryć testami z uwagi na zawiłość lub potrzebę siatki bezpieczeństwa wynikającą z częstych zmian, to zwykle dla systemów biznesowych pada odpowiedź: 20%. Tak się paradoksalnie składa, że 20% + 80% = 100%. Tak więc przy odrobinie szczęścia może się okazać, że będziemy mieć pokrycie kodu testami w 80%, ale testy trafią akurat w mniej istotne 80% kodu. Zaczyna być to prawdopodobne, gdy połączymy bezkontekstową metrykę z zespołem, który nie ma jeszcze wyrobionej intuicji lub jest niezaangażowany emocjonalnie w projekt... A czy nie lepiej byłoby mieć pokrycie 20% krytycznego kodu na poziomie bliskim 100%? Czyli innymi słowy czy nie lepiej zainwestować wysiłek tam, gdzie zwrot będzie najbardziej korzystny? W DDD wiemy dokładnie, gdzie znajduje się większość krytycznego kodu: w Core Domain w warstwie logiki domenowej. Pojęcie Core Domain zostało opisane szerzej w drugiej części naszej serii, a warstwy w pierwszej. 66 / (6) /

2 TYTUŁ Problemy, strategie, taktyki i techniki Testowania Problemy: Eksplozja kombinatoryczna przypadków w górnych warstwa multiplikują się możliwe stany obiektów domenowych Koszt stworzenia i utrzymania testów zaślepki (Fake/Mock/Stub), dane testowe np. w bazie danych Strategie: Mapowanie piramidy testów na warstwy aplikacji Perfekcja domeny, ogólna zgodność wymagań Obniżanie kosztów poprzez unikanie zbędnej pracy Taktyki: Warstwa Aplikacji Testy End2end Komponentowe Warstwa Domenowa Testy jednostkowe Abstrakcje Warstwy Infrastruktury Testy integracyjne Unikaj pracy z serwerem Natomiast w DDD mamy bardzo silne założenia architektoniczne, np. podział logiki na aplikacyjną (model Use Case/User Story) i domenową. Dzięki temu możemy czytać piramidę dosłownie... STRATEGIA: MAPOWANIE PIRAMIDY NA WARSTWY APLIKACJI Podstawowa strategia testowania, jaką rekomendujemy, polega na dosłownym przełożeniu Piramidy Testów (zarówno zakresu, jak i roli testów) na warstwy logiki: górne warstwy logika aplikacji (ew. UI): testy End2End, akceptacyjne, relatywnie mało dolna warstwa logika domenowa: testy jednostkowe, dążenie do maksymalnego pokrycia Techniki: Testowanie niezmienników Agregatów Assembler Agregatów Testowanie Serwisów Domenowych w stylu funkcyjnym Jak zaślepiać: Command-Mock, Query-Stub PROBLEMY Z TESTAMI Problem: Eksplozja kombinatoryczna przypadków W naszym przykładowym projekcie w warstwie logiki domenowej mamy 3 przykładowe klasy modelujące koncepcje biznesowe: Order, Invoice i InvoicingService. Załóżmy, że aby przetestować w 100% każdą z nich, musimy stworzyć po 100 testów jednostkowych, czyli =300 testów. Gdybyśmy natomiast chcieli przetestować działanie przez wyższe warstwy (logikę aplikacyjną lub UI), wówczas możemy spodziewać się nie sumowania, a multiplikacji przypadków, czyli 100*100*100= przypadków. Oczywiście nie wszystkie kombinacje są możliwe, być może tylko 1% procent. Jeden procent z miliona to sto tysięcy. Natomiast trudne pytanie brzmi: który jeden procent. Problem: Koszt stworzenia i utrzymania testów Z technicznego punktu widzenia największy koszt stworzenia i utrzymania testów to przygotowanie S.U.T. (System Under Test). W przypadku testów jednostkowych są to zaślepki interfejsów, które chcemy odizolować, a w przypadku testów End2End są to dane testowe lub zaślepki innych modułów. Na poziomie kodu testów jest to sekcja GIVEN. PIRAMIDA TESTÓW TEORIA A PRAKTYKA Piramida testów jest ogólnym kanonem, mówiącym o proporcjach testów. Duża podstawa piramidy jest mantrą: dużo testów jednostkowych, natomiast zwężający się czubek jest mantrą: mało testów end2end. Piramida testów pozbawiona kontekstu architektury aplikacji i systemu nie mówi nic o tym, kiedy i gdzie stosować testy danego typu. Rysunek 1. Piramida Testów Rysunek 2. Mapowanie Piramidy Testów na warstwy DDD Strategia ta wynika z dwóch przesłanek: złożoności każdej z warstw ilości możliwych kombinacji przypadków Złożonością zajmiemy się w kolejnych rozdziałach, natomiast teraz przedyskutujmy ilość możliwych kombinacji przypadków. STRATEGIA: PERFEKCJA DOMENY, OGÓLNA ZGODNOŚĆ WYMAGAŃ Ze względu na mnogość przypadków nie jesteśmy w praktyce w stanie testować perfekcji działania poprzez warstwę logiki aplikacyjnej (API). Perfekcję będziemy sprawdzać przy pomocy testów jednostkowych działających na modelu w warstwie logiki domenowej. Natomiast poprzez warstwę logiki aplikacyjnej będziemy uruchamiać testy akceptacyjne komponentowe oraz (w kolejnej części naszej serii) scenariusze akceptacyjne BDD i wykonywalne specyfikacje. Ich celem nie jest sprawdzenie perfekcji ze względu na ilość przypadków. Celem tych testów będzie prowadzenie procesu tworzenia oprogramowania, skupianie uwagi programistów na zadaniach i mierzenie postępu pracy (np. Scrum Velocity). STRATEGIA: OBNIŻANIE KOSZTÓW POPRZEZ UNIKANIE ZBĘDNEJ PRACY Strategia obniżania kosztów tworzenia testów wspiera dodatkowo dwie powyższe strategie. Kod serwisów aplikacyjnych (Listing 1) ma następujące cechy: są to procedury (zwane w językach obiektowych Serwisami), więc są relatywnie mało skomplikowane jest to po prostu sekwencja czynności do / / 67

3 wykonania. Jeżeli pojawia się tutaj złożoność, to zwykle jest to symptom tego, że brakuje dla niej modelu w niższej warstwie posiadają wiele zależności, np. wstrzyknięte repozytoria i ogólnie usługi infrastruktury Z tych dwóch cech wynika strategia polegająca na unikaniu testów jednostkowych (izolowanych) w tej warstwie, ponieważ: ryzyko błędu w procedurze jest relatywnie nieduże (jednak to zależy od natury systemu) ilość zaślepek (Mock/Stub/Fake), jakie należałoby stworzyć, generuje wysokie koszty stworzenia i utrzymania testów jednostkowych na tym poziomie Zatem rachunek kosztów i ryzyka sugeruje nam, aby warstwy aplikacyjnej nie testować jednostkowo. Listing 1. Serwis Aplikacyjny pl.com.bottega.erp.sales.application. services.purchaseapplicationservice - charakteryzujący się: a) relatywnie niską komplikacją, oraz b) dużą ilością public class PurchaseApplicationService { private OrderRepository orderrepository; private OrderFactory orderfactory; private ProductRepository productrepository; private InvoiceRepository invoicerepository; private InvoicingService invoicingservice; private SystemUser systemuser; private ApplicationEventPublisher eventpublisher; public void approveorder(long orderid) { Order order = orderrepository.load(orderid); Specification<Order> orderspecification = generatespecification(systemuser); if (!orderspecification.issatisfiedby(order)) throw new OrderOperationException( Order does not meet specification, order.getentityid()); order.submit(); Invoice invoice = invoicingservice.issuance(order, generatetaxpolicy(systemuser)); invoicerepository.save(invoice); orderrepository.save(order); TAKTYKA: WARSTWA APLIKACJI TESTY END2END KOMPONENTOWE/SYSTEMOWE Serwisy Warstwy aplikacji testujemy testami o zakresie End2End komponentowym lub systemowym. Z uwagi na ilości zależności nie inwestujemy czasu w tworzenie zaślepek, zatem nie będą to testy jednostkowe. Tworzenie zaślepek np. Repozytoriów jest żmudne i kosztowne, a z drugiej strony ryzyko wystąpienia błędu w tej warstwie jest relatywnie małe. Z uwagi na ilość możliwych przypadków nie testujemy perfekcji działania, a jedynie ogólną zgodność z wymaganiami (np. Use Case lub User Story). Testy Systemowe Przedstawiony na Listingu 2 test o zakresie systemowym łączy się ze zdalną usługą serwera (w przypadku Spring można wykorzystać SpringRemoting, w przypadku EJB: Remote Interface). Listing 2. Przykładowy test Serwisu Aplikacyjnego pl.com.bottega. erp.sales.productsorderingfunctionaltest oparty o Spring Test i classpath:/functionaltestscontext.xml = ClassMode.AFTER_EACH_TEST_METHOD) public class ProductsOrderingFunctionalTest public ExpectedEvents events; private ProductFinder productfinder; private Gate gate; private OrderFinder orderfinder; public void shouldaddalreadyaddedprodcybyincreasingquantity(){ //given Long existingproductid = anyproduct().getproductid(); //when Long orderid = createorderwithproduct(existingproductid); addproduct(existingproductid, orderid); //then assertequals(1, orderfinder.getclientorderdetails(orderid). getorderedproducts().size()); Testy Komponetowe Innym podejściem może być testowanie o zakresie komponentowym, gdzie test uruchamia kontekst Spring, z którego pobiera testowany komponent i operuje na nim w swej pamięci. W tego typu testach izolujemy komponent - np. Serwis Aplikacyjny lub cały moduł w rozumieniu Bounded Context. Izolacja może polegać na zaślepieniu np. silnika zdarzeń i sprawdzaniu, czy w razie wykonania pewnych operacji na API, na interfejsie zdarzeń pojawiają się oczekiwane komunikaty. TAKTYKA: WARSTWA DOMENOWA TESTY JEDNOSTKOWE W warstwie domenowej przyjmiemy zupełnie inną taktykę niż w warstwie aplikacyjnej. Klasy domenowe charakteryzują się: dużą złożonością, z której wynika ryzyko błędu zawierają newralgiczny kod, z czego wynika wysoka dotkliwość błędu relatywnie często podlegają zmianom, z czego wynika potrzeba siatki bezpieczeństwa niewielką ilością zależności technicznych, z czego wynika niski koszt stworzenia zaślepek Klasy z tej warstwy będziemy zatem pokrywać testami o zakresie jednostkowym w celu sprawdzenia perfekcji działania kodu. Technika: Testowanie Value Objects Jeżeli pokryjemy testami w 100% VO, to wówczas nie musimy ich zaślepiać w testach innych Building Blocks, takich jak Agregaty i Serwisy Domenowe. Zapewne każdy z nas widział w swej karierze testy jednostkowe, które dokonywały zaślepiania struktur danych. Nie jest to ani produktywne, ani nie wnosi wartości. Listing 3. Przykładowy test jednostkowy Value Object pl.com. bottega.ddd.domain.sharedkernel.moneytest public class MoneyTest { private static final Currency USD = Currency.getInstance( USD ); private static final Currency EUR = Currency.getInstance( EUR ); 68 / (6) /

4 TYTUŁ public void shouldincreasenegaiveamountbydiving(){ //given Money money = new Money(-10); //when Money result = money.increaseby(2); //then assertequals(new Money(-5), result); Technika: Testowanie niezmienników Agregatów W drugiej części naszej serii opisaliśmy jedną z technik modelowania granicy Agregatów, polegającą na hermetyzacji niezmienników. Przykładowo jeżeli pomiędzy obiektami a,b, c zachodzi niezmiennik a+c=c, to wówczas modelujemy Agregat, który zawiera a,b,c oraz posiada metody, które operują na a,b,c, zapewniając niezmiennik. Testy jednostkowe Agregatów powinny sprawdzać wszystkie metody pod kątem zapewniania niezmienników. Pozwala to na zwiększenie czytelności testów (ich intencja jest jasna) oraz na zmniejszenie kosztu utrzymania testów skupiamy testowane hipotezy wokół niezmienników, które są sensem istnienia Agregatów. Listing 4. Przykładowy test jednostkowy Agregatu pl.com.bottega.erp.sales.domain.ordertest public class OrderTest { private Order order; private DomainEventPublisher eventpublishermock; private RebatePolicy rebatepolicymock; Technika: Assembler Agregatów Wprowadzenie Agregatów w odpowiedni stan przed testem może być złożonym procesem. Zakładając, że chcemy osiągnąć pokrycie Agregatów testami bliskie 100% oraz że chcemy testować zgodnie z dobrą praktyką jeden test jedna hipoteza biznesowa (niezmiennik metody), ilość testów będzie bardzo duża. Aby zredukować wysiłek i uodpornić kod testów na zmiany, możemy wprowadzić do kodu testów wzorzec Assemblera (trywializacja wzorce Builder) przykład na Listingu 5. Listing 5. Przykładowy Assembler Agregatu wraz z techniką użycia, która nadaje testom styl DSL, zwiększając ich czytelność. public void correctorderwithoneproductcanbesubmitted() throws Exception { givenorder().with(productassembler.product( Gizmo ).withprice(2.33)); whenorder().submit(); thenorder().issubmitted().hasproductcosting( Gizmo, 2.33); private OrderAssembler givenorder() { return orderassembler; private Order whenorder() { order = orderassembler.build(); return order; private OrderAssert thenorder() { return new OrderAssert(order); public void beforeeachmethod() throws Exception { rebatepolicymock = mock(rebatepolicy.class); eventpublishermock = mock(domaineventpublisher.class); applyrebate(money.zero); order = new Order(new Client(), Money.ZERO, OrderStatus.DRAFT); order.setrebatepolicy(rebatepolicymock); order.seteventpubslisher(eventpublishermock); public void shouldbedraftwhencreated() throws Exception { assertequals(orderstatus.draft, order.getstatus()); public void shouldsubmitorderwithproduct() throws Exception // when order.addproduct(anyproduct(), 1); order.submit(); // then expectevent(ordersubmittedevent.class); Technika: Testowanie Serwisów Domenowych w stylu funkcyjnym Dobrze zaprojektowane Serwisy Domenowe powinny być utrzymane w stylu funkcyjnym, tj: posiadają wejście i wyjścia oraz nie komunikują się z infrastrukturą. Na Listingu 1 widzimy przykład użycia InvoicingService, gdzie na wejściu podajemy zamówienie oraz politykę rabatową, a na wyjściu otrzymujemy fakturę. InvoicingService jest funkcją, która modeluje algorytm wystawiania faktury na zamówienie i jest domknięta funkcją obliczania podatku. Dzięki takiemu stylowi (brak efektów ubocznych oraz brak komunikacji z infrastrukturą) nasze funkcje możemy relatywnie łatwo i tanio (bez tworzenia zaślepek i przygotowywania danych) testować jednostkowo pod kątem poprawności algorytmu. Technika: Testowanie Fabryk public void shouldcountproductsnumbercorrectly() throws Exception { // given Product product = anyproduct(); // when order.addproduct(product, 1); order.addproduct(product, 1); // then OrderedProduct ordered = getonlyelement(order. getorderedproducts()); assertequals(product.getname(), ordered.getname()); assertequals(2, ordered.getquantity()); Technika: W testach Agregatów zaślepiamy Polityki i silnik zdarzeń Test przedstawiony na Listingu 4 tworzy zaślepki (w tym wypadku zaślepki typu Stub) dla silnika zdarzeń i polityki rabatowej. Pozwala to odizolować na czas testów Agregat od infrastruktury oraz od kodu biznesowego obliczania rabatów. Jest to szczególnie istotne z powodu: Fabryki grają istotną rolę w modelu DDD są modelem reguł rządzących tworzeniem nowego Agregatu (wymagane obiekty i ich walidacja, wstrzykiwanie, ustawienie parametrów początkowych). Od strony technicznej Fabryki biorą na siebie większość Couplingu (miara powiązania), dzięki czemu tworzone przez nie Agregaty charakteryzują się mniejszym Couplingiem. Znaczenie Fabryk omawialiśmy w pierwszej części serii, dlatego w tym miejscu nie będziemy powtarzać informacji na ich temat. Natomiast z perspektywy testowania trzeba jasno powiedzieć, że testowanie jednostkowe Fabryk jest kosztowne z uwagi na Coupling (często techniczny, np. zależność od Repozytoriów), czyli konieczność tworzenia wielu zaślepek. Warto zatem przyjąć regułę: po prostu nie testujemy jednostkowo Fabryk. Jeżeli Fabryki zawierają złożoną logikę, którą należałoby poddać testom, to wówczas wydzielamy ją do Serwisów Domenowych projektowanych w stylu funkcyjnym i testujemy zgodnie z taktyką z poprzedniego rozdziału. Technika: Testowanie Polityk i Specyfikacji precyzyjnej lokalizacji błędów, zmniejszenia ilości możliwych kombinacji, uniknięcia długotrwałych operacji, izolacji od kodu, który może podlegać zmianom zmiana algorytmu rabatowania wpłynęłaby na asercje Agregatu Order. Podczas testowania Agregatów i Serwisów Domenowych izolujemy je od domknięć, czyli Polityk i Specyfikacji. Dzięki temu precyzyjnie lokalizujemy błędy oraz odcinamy się od zmian w Politykach i Specyfikacjach. Izolacji dokonujemy poprzez wprowadzeniu zaślepek typu Mock albo Stub. O tym, jaki rodzaj zaślepki dobrać, traktuje następny rozdział. / / 69

5 Natomiast konkretne implementacje Polityk i Specyfikacji testujemy osobnymi, odpowiednimi dla nich testami jednostkowymi, osiągając tanim kosztem wysokie pokrycie kodu. Przykładowo Serwis Domenowy Invoicng Service użyty w Listingu 1 pokrywamy testami algorytmu generowania faktury dla różnych zamówień, natomiast polityki obliczania podatku (zgodne z prawem polskim i niemieckim) testujemy testami algorytmów podatkowych. Technika: Jak zaślepiać: Command-Mock, Query-Stub W testowaniu automatycznym możemy stosować 4 rodzaje zaślepek: Dummy zaślepki nieistotnych parametrów, Fake własne implementacje (np. bazy danych), Stub obiekty, które uczymy, jak powinny się zachować podczas interakcji z nimi, Mock Stub, które dodatkowo weryfikujemy, czy odbyto z nimi założoną interakcję. Najbardziej rozsądna wydaje się być prosta reguła kciuka : metody typu Command zaślepiamy przy pomocy Mock objectów, natomiast metody typu Query zaślepiamy przy pomocy Stub objectów. Podział metod na Command i Query jest zdefiniowany przez paradygmat Command-query Separation (nie mylić z architekturą CqRS). Metody typu Command modyfikują stan obiekty, natomiast metody typu Query odpytują obiekt o jego stan, nie modyfikując go. Zatem przykładowo: jeżeli nasz testowany Agregat lub Serwis Domenowy woła metodę innej klasy, to: jeżeli jest to wywołanie typu Query ( podaj dane ), to wówczas wystarczy nam zaślepka typu Stub uczymy zaślepkę jedynie zachowania, natomiast nie weryfikujemy, ile razu i z jakimi parametrami była ona wykonana, jeżeli to jest wywołanie typu Command ( wykonaj operację/zmień się ), to wówczas użyjemy zaślepki typu Mock, ponieważ raczej będzie nam zależało na sprawdzeniu, ile razy polecanie zostało wydane i z jakimi parametrami. TAKTYKA: WARSTWA INFRASTRUKTURY TESTY INTEGRACYJNE Jako uzupełnienie zakresu testowania nakreślimy jedynie podejścia do testów integracyjnych takich, które sprawdzają, czy moduły (w sensie Bounded Context, jak i usług technicznych) całego systemu współpracują ze sobą. W naszej architekturze będą to testy abstrakcji z warstwy infrastruktury. Testy tego typu nie sprawdzają logiki biznesowej, a jedynie integrację technologii. W prostych systemach mogą być zbędne. Najważniejsza zasada : w testach tego typu nie posługujemy się kodem biznesowym, ponieważ może się on zmienić, rujnując testy technologii. Na potrzeby tych testów najlepszym podejściem będzie stworzenie osobnej domeny, która nie będzie podlegać zmianom. TAKTYKA: UNIKAJ PRACY Z SERWEREM Czy zastanawiałeś się, ile czasu zajmuje Ci proces: od momentu naciśnięcia ctrl+s w edytorze kodu do momentu, gdy wiesz, czy w tym kodzie nie popełniłeś błędu? Być może w tym procesie są takie czynności jak: redeply aplikacji (hot deploy znowu nie zadziałał), restart serwera (wyciek pamięci), wprowadzenie danych roboczych do bazy, przejście przez kilkanaście ekranów aplikacji, wpisując na każdym z nim wartości do kilku pól, kliknięcie finish na ostatnim formularzu. Mija kilka/kilkanaście minut, a być może chodziło jedynie o zmianę jednego operatora w metodzie jednego Agregatu. Mapując piramidę testów na warstwy aplikacji, doszliśmy do taktyki polegającej na pracy z kodem domenowym przy użyciu testów jednostkowych. W projektach DDD to w kodzie domenowym znajduje się największa złożoność systemu, zatem możemy znaczną część codziennej pracy z kodem wykonać jedynie poprzez testy jednostkowe bez potrzeby wykonywania żmudnych czynności. PROCES AGILE: SCENARIUSZE BEHAWIORALNE I WYKONYWALNE SPECYFIKACJE Na wyższym poziomie tworzymy: wykonywalne scenariusze akceptacyjne sprawdzające zgodność zachowania systemu z User Story na poziomie flow użytkownika, wykonywalne Specification by Example sprawdzające realizację celów biznesowych stojących ponad flow użytkownika. W przypadku tych technik nie mówimy już o testach, a o wykonywalnej dokumentacji wymagań. Kolejną część naszej serii poświęcimy omówieniu: kompletnego procesu modelowania DDD Modeling Whirlpool, procesu wytwórczego Behavior Driven Development (zwanego Agile drugiej generacji) narzędzi wspierających BDD i Specification by Example: Jbehave i Selenium Oficjalna strona DDD: Wstępny artykuł poświęcony DDD: Przykładowy projekt: Mock i Stub: Mockito: Sławomir Sobótka slawomir.sobotka@bottega.com.pl Programujący architekt aplikacji specjalizujący się w technologiach Java i efektywnym wykorzystaniu zdobyczy inżynierii oprogramowania. Trener i doradca w firmie Bottega IT Solutions. W wolnych chwilach działa w community jako: prezes Stowarzyszenia Software Engineering Professionals Polska ( publicysta w prasie branżowej i blogger ( 70 / (6) /

Program szkolenia: Receptury testowania automatycznego - problemy, strategie, taktyki, techniki, narzędzia

Program szkolenia: Receptury testowania automatycznego - problemy, strategie, taktyki, techniki, narzędzia Program szkolenia: Receptury testowania automatycznego - problemy, strategie, taktyki, techniki, narzędzia Informacje: Nazwa: Kod: Kategoria: Grupa docelowa: Czas trwania: Forma: Receptury testowania automatycznego

Bardziej szczegółowo

Zwinna współpraca programistów i testerów z wykorzystaniem BDD i. by Example (JBehave/Spock/SpecFlow)

Zwinna współpraca programistów i testerów z wykorzystaniem BDD i. by Example (JBehave/Spock/SpecFlow) Program szkolenia: Zwinna współpraca programistów i testerów z wykorzystaniem BDD i Spec Informacje: Nazwa: Kod: Kategoria: Grupa docelowa: Czas trwania: Forma: Zwinna współpraca programistów i testerów

Bardziej szczegółowo

Instalacja. Zawartość. Wyszukiwarka. Instalacja... 1. Konfiguracja... 2. Uruchomienie i praca z raportem... 4. Metody wyszukiwania...

Instalacja. Zawartość. Wyszukiwarka. Instalacja... 1. Konfiguracja... 2. Uruchomienie i praca z raportem... 4. Metody wyszukiwania... Zawartość Instalacja... 1 Konfiguracja... 2 Uruchomienie i praca z raportem... 4 Metody wyszukiwania... 6 Prezentacja wyników... 7 Wycenianie... 9 Wstęp Narzędzie ściśle współpracujące z raportem: Moduł

Bardziej szczegółowo

Politechnika Warszawska Wydział Matematyki i Nauk Informacyjnych ul. Koszykowa 75, 00-662 Warszawa

Politechnika Warszawska Wydział Matematyki i Nauk Informacyjnych ul. Koszykowa 75, 00-662 Warszawa Zamawiający: Wydział Matematyki i Nauk Informacyjnych Politechniki Warszawskiej 00-662 Warszawa, ul. Koszykowa 75 Przedmiot zamówienia: Produkcja Interaktywnej gry matematycznej Nr postępowania: WMiNI-39/44/AM/13

Bardziej szczegółowo

Strategia rozwoju kariery zawodowej - Twój scenariusz (program nagrania).

Strategia rozwoju kariery zawodowej - Twój scenariusz (program nagrania). Strategia rozwoju kariery zawodowej - Twój scenariusz (program nagrania). W momencie gdy jesteś studentem lub świeżym absolwentem to znajdujesz się w dobrym momencie, aby rozpocząć planowanie swojej ścieżki

Bardziej szczegółowo

*** Przeczytaj najpierw, ponieważ to WAŻNE: ***

*** Przeczytaj najpierw, ponieważ to WAŻNE: *** *** Przeczytaj najpierw, ponieważ to WAŻNE: Niniejszy materiał możesz dowolnie wykorzystywać. Możesz rozdawać go na swoim blogu, liście adresowej, gdzie tylko chcesz za darmo lub możesz go dołączyć, jako

Bardziej szczegółowo

KLAUZULE ARBITRAŻOWE

KLAUZULE ARBITRAŻOWE KLAUZULE ARBITRAŻOWE KLAUZULE arbitrażowe ICC Zalecane jest, aby strony chcące w swych kontraktach zawrzeć odniesienie do arbitrażu ICC, skorzystały ze standardowych klauzul, wskazanych poniżej. Standardowa

Bardziej szczegółowo

API transakcyjne BitMarket.pl

API transakcyjne BitMarket.pl API transakcyjne BitMarket.pl Wersja 20140314 1. Sposób łączenia się z API... 2 1.1. Klucze API... 2 1.2. Podpisywanie wiadomości... 2 1.3. Parametr tonce... 2 1.4. Odpowiedzi serwera... 3 1.5. Przykładowy

Bardziej szczegółowo

Audyt SEO. Elementy oraz proces przygotowania audytu. strona

Audyt SEO. Elementy oraz proces przygotowania audytu. strona Audyt SEO Elementy oraz proces przygotowania audytu 1 Spis treści Kim jesteśmy? 3 Czym jest audyt SEO 4 Główne elementy audytu 5 Kwestie techniczne 6 Słowa kluczowe 7 Optymalizacja kodu strony 8 Optymalizacja

Bardziej szczegółowo

POMOC PSYCHOLOGICZNO-PEDAGOGICZNA Z OPERONEM. Vademecum doradztwa edukacyjno-zawodowego. Akademia

POMOC PSYCHOLOGICZNO-PEDAGOGICZNA Z OPERONEM. Vademecum doradztwa edukacyjno-zawodowego. Akademia POMOC PSYCHOLOGICZNO-PEDAGOGICZNA Z OPERONEM PLANOWANIE DZIAŁAŃ Określanie drogi zawodowej to szereg różnych decyzji. Dobrze zaplanowana droga pozwala dojechać do określonego miejsca w sposób, który Ci

Bardziej szczegółowo

Edycja geometrii w Solid Edge ST

Edycja geometrii w Solid Edge ST Edycja geometrii w Solid Edge ST Artykuł pt.: " Czym jest Technologia Synchroniczna a czym nie jest?" zwracał kilkukrotnie uwagę na fakt, że nie należy mylić pojęć modelowania bezpośredniego i edycji bezpośredniej.

Bardziej szczegółowo

Harmonogramowanie projektów Zarządzanie czasem

Harmonogramowanie projektów Zarządzanie czasem Harmonogramowanie projektów Zarządzanie czasem Zarządzanie czasem TOMASZ ŁUKASZEWSKI INSTYTUT INFORMATYKI W ZARZĄDZANIU Zarządzanie czasem w projekcie /49 Czas w zarządzaniu projektami 1. Pojęcie zarządzania

Bardziej szczegółowo

Wdrożenie modułu płatności eservice dla systemu Virtuemart 2.0.x

Wdrożenie modułu płatności eservice dla systemu Virtuemart 2.0.x Wdrożenie modułu płatności eservice dla systemu Virtuemart 2.0.x Wersja 02 Styczeń 2016 Centrum Elektronicznych Usług Płatniczych eservice Sp. z o.o. Spis treści 1. Wstęp... 3 1.1. Przeznaczenie dokumentu...

Bardziej szczegółowo

W dobie postępującej digitalizacji zasobów oraz zwiększającej się liczby dostawców i wydawców

W dobie postępującej digitalizacji zasobów oraz zwiększającej się liczby dostawców i wydawców W dobie postępującej digitalizacji zasobów oraz zwiększającej się liczby dostawców i wydawców oferujących dostępy do tytułów elektronicznych, zarówno bibliotekarze jak i użytkownicy coraz większą ilość

Bardziej szczegółowo

Odpowiedzi na pytania zadane do zapytania ofertowego nr EFS/2012/05/01

Odpowiedzi na pytania zadane do zapytania ofertowego nr EFS/2012/05/01 Odpowiedzi na pytania zadane do zapytania ofertowego nr EFS/2012/05/01 1 Pytanie nr 1: Czy oferta powinna zawierać informację o ewentualnych podwykonawcach usług czy też obowiązek uzyskania od Państwa

Bardziej szczegółowo

Zarządzanie projektami. wykład 1 dr inż. Agata Klaus-Rosińska

Zarządzanie projektami. wykład 1 dr inż. Agata Klaus-Rosińska Zarządzanie projektami wykład 1 dr inż. Agata Klaus-Rosińska 1 DEFINICJA PROJEKTU Zbiór działań podejmowanych dla zrealizowania określonego celu i uzyskania konkretnego, wymiernego rezultatu produkt projektu

Bardziej szczegółowo

Stanowisko Rzecznika Finansowego i Prezesa Urzędu Ochrony Konkurencji i Konsumentów w sprawie interpretacji art. 49 ustawy o kredycie konsumenckim

Stanowisko Rzecznika Finansowego i Prezesa Urzędu Ochrony Konkurencji i Konsumentów w sprawie interpretacji art. 49 ustawy o kredycie konsumenckim Prezes Urzędu Ochrony Konkurencji i Konsumentów Warszawa, 16 maja 2016 r. Stanowisko Rzecznika Finansowego i Prezesa Urzędu Ochrony Konkurencji i Konsumentów w sprawie interpretacji art. 49 ustawy o kredycie

Bardziej szczegółowo

Bazy danych. Andrzej Łachwa, UJ, 2013 andrzej.lachwa@uj.edu.pl www.uj.edu.pl/web/zpgk/materialy 9/15

Bazy danych. Andrzej Łachwa, UJ, 2013 andrzej.lachwa@uj.edu.pl www.uj.edu.pl/web/zpgk/materialy 9/15 Bazy danych Andrzej Łachwa, UJ, 2013 andrzej.lachwa@uj.edu.pl www.uj.edu.pl/web/zpgk/materialy 9/15 Przechowywanie danych Wykorzystanie systemu plików, dostępu do plików za pośrednictwem systemu operacyjnego

Bardziej szczegółowo

INSTRUKCJA TESTOWANIA USŁUG NA PLATFORMIE ELA-ENT

INSTRUKCJA TESTOWANIA USŁUG NA PLATFORMIE ELA-ENT Załącznik nr 1 Siedlce-Warszawa, dn. 16.06.2009 r. Opracowanie: Marek Faderewski (marekf@ipipan.waw.pl) Dariusz Mikułowski (darek@ii3.ap.siedlce.pl) INSTRUKCJA TESTOWANIA USŁUG NA PLATFORMIE ELA-ENT Przed

Bardziej szczegółowo

GEO-SYSTEM Sp. z o.o. GEO-RCiWN Rejestr Cen i Wartości Nieruchomości Podręcznik dla uŝytkowników modułu wyszukiwania danych Warszawa 2007

GEO-SYSTEM Sp. z o.o. GEO-RCiWN Rejestr Cen i Wartości Nieruchomości Podręcznik dla uŝytkowników modułu wyszukiwania danych Warszawa 2007 GEO-SYSTEM Sp. z o.o. 02-732 Warszawa, ul. Podbipięty 34 m. 7, tel./fax 847-35-80, 853-31-15 http:\\www.geo-system.com.pl e-mail:geo-system@geo-system.com.pl GEO-RCiWN Rejestr Cen i Wartości Nieruchomości

Bardziej szczegółowo

emszmal 3: Automatyczne księgowanie przelewów w sklepie internetowym Magento (plugin dostępny w wersji ecommerce)

emszmal 3: Automatyczne księgowanie przelewów w sklepie internetowym Magento (plugin dostępny w wersji ecommerce) emszmal 3: Automatyczne księgowanie przelewów w sklepie internetowym Magento (plugin dostępny w wersji ecommerce) Zastosowanie Rozszerzenie to dedykowane jest sklepom internetowych zbudowanym w oparciu

Bardziej szczegółowo

System kontroli wersji SVN

System kontroli wersji SVN System kontroli wersji SVN Co to jest system kontroli wersji Wszędzie tam, gdzie nad jednym projektem pracuje wiele osób, zastosowanie znajduje system kontroli wersji. System, zainstalowany na serwerze,

Bardziej szczegółowo

Systemy mikroprocesorowe - projekt

Systemy mikroprocesorowe - projekt Politechnika Wrocławska Systemy mikroprocesorowe - projekt Modbus master (Linux, Qt) Prowadzący: dr inż. Marek Wnuk Opracował: Artur Papuda Elektronika, ARR IV rok 1. Wstępne założenia projektu Moje zadanie

Bardziej szczegółowo

Dziedziczenie : Dziedziczenie to nic innego jak definiowanie nowych klas w oparciu o już istniejące.

Dziedziczenie : Dziedziczenie to nic innego jak definiowanie nowych klas w oparciu o już istniejące. Programowanie II prowadzący: Adam Dudek Lista nr 8 Dziedziczenie : Dziedziczenie to nic innego jak definiowanie nowych klas w oparciu o już istniejące. Jest to najważniejsza cecha świadcząca o sile programowania

Bardziej szczegółowo

Uchwała z dnia 20 października 2011 r., III CZP 53/11

Uchwała z dnia 20 października 2011 r., III CZP 53/11 Uchwała z dnia 20 października 2011 r., III CZP 53/11 Sędzia SN Zbigniew Kwaśniewski (przewodniczący) Sędzia SN Anna Kozłowska (sprawozdawca) Sędzia SN Grzegorz Misiurek Sąd Najwyższy w sprawie ze skargi

Bardziej szczegółowo

Praca na wielu bazach danych część 2. (Wersja 8.1)

Praca na wielu bazach danych część 2. (Wersja 8.1) Praca na wielu bazach danych część 2 (Wersja 8.1) 1 Spis treści 1 Analizy baz danych... 3 1.1 Lista analityczna i okno szczegółów podstawowe informacje dla każdej bazy... 3 1.2 Raporty wykonywane jako

Bardziej szczegółowo

Objaśnienia wartości, przyjętych do Projektu Wieloletniej Prognozy Finansowej Gminy Golina na lata 2012-2015

Objaśnienia wartości, przyjętych do Projektu Wieloletniej Prognozy Finansowej Gminy Golina na lata 2012-2015 Załącznik Nr 2 do Uchwały Nr XIX/75/2011 Rady Miejskiej w Golinie z dnia 29 grudnia 2011 r. Objaśnienia wartości, przyjętych do Projektu Wieloletniej Prognozy Finansowej Gminy Golina na lata 2012-2015

Bardziej szczegółowo

Warunki Oferty PrOmOcyjnej usługi z ulgą

Warunki Oferty PrOmOcyjnej usługi z ulgą Warunki Oferty PrOmOcyjnej usługi z ulgą 1. 1. Opis Oferty 1.1. Oferta Usługi z ulgą (dalej Oferta ), dostępna będzie w okresie od 16.12.2015 r. do odwołania, jednak nie dłużej niż do dnia 31.03.2016 r.

Bardziej szczegółowo

Projektowanie bazy danych

Projektowanie bazy danych Projektowanie bazy danych Pierwszą fazą tworzenia projektu bazy danych jest postawienie definicji celu, założeo wstępnych i określenie podstawowych funkcji aplikacji. Każda baza danych jest projektowana

Bardziej szczegółowo

Microsoft Management Console

Microsoft Management Console Microsoft Management Console Konsola zarządzania jest narzędziem pozwalającym w prosty sposób konfigurować i kontrolować pracę praktycznie wszystkich mechanizmów i usług dostępnych w sieci Microsoft. Co

Bardziej szczegółowo

PODSTAWY METROLOGII ĆWICZENIE 4 PRZETWORNIKI AC/CA Międzywydziałowa Szkoła Inżynierii Biomedycznej 2009/2010 SEMESTR 3

PODSTAWY METROLOGII ĆWICZENIE 4 PRZETWORNIKI AC/CA Międzywydziałowa Szkoła Inżynierii Biomedycznej 2009/2010 SEMESTR 3 PODSTAWY METROLOGII ĆWICZENIE 4 PRZETWORNIKI AC/CA Międzywydziałowa Szkoła Inżynierii Biomedycznej 29/2 SEMESTR 3 Rozwiązania zadań nie były w żaden sposób konsultowane z żadnym wiarygodnym źródłem informacji!!!

Bardziej szczegółowo

ZAPYTANIE OFERTOWE. Nazwa zamówienia: Wykonanie usług geodezyjnych podziały nieruchomości

ZAPYTANIE OFERTOWE. Nazwa zamówienia: Wykonanie usług geodezyjnych podziały nieruchomości Znak sprawy: GP. 271.3.2014.AK ZAPYTANIE OFERTOWE Nazwa zamówienia: Wykonanie usług geodezyjnych podziały nieruchomości 1. ZAMAWIAJĄCY Zamawiający: Gmina Lubicz Adres: ul. Toruńska 21, 87-162 Lubicz telefon:

Bardziej szczegółowo

JĘZYK UML JAKO NARZĘDZIE MODELOWANIA PROCESU PROJEKTOWO-KONSTRUKCYJNEGO

JĘZYK UML JAKO NARZĘDZIE MODELOWANIA PROCESU PROJEKTOWO-KONSTRUKCYJNEGO JĘZYK UML JAKO NARZĘDZIE MODELOWANIA PROCESU PROJEKTOWO-KONSTRUKCYJNEGO Andrzej BAIER, Tomasz R. LUBCZYŃSKI Streszczenie: W ostatnich latach można zaobserwować dynamiczny rozwój analizy zorientowanej obiektowo.

Bardziej szczegółowo

- o zmianie o Krajowym Rejestrze Sądowym

- o zmianie o Krajowym Rejestrze Sądowym Warszawa, dnia 28 sierpnia, 2012 rok Grupa Posłów na Sejm RP Klubu Poselskiego Ruch Palikota Szanowna Pani Ewa Kopacz Marszałek Sejmu Rzeczypospolitej Polskiej Na podstawie art. 118 ust. 1 Konstytucji

Bardziej szczegółowo

OPIS PRZEDMIOTU ZAMÓWIENIA DO ZAPYTANIA KE1/POIG 8.2/13

OPIS PRZEDMIOTU ZAMÓWIENIA DO ZAPYTANIA KE1/POIG 8.2/13 Zapytanie ofertowe - Działanie PO IG 8.2 Warszawa, dnia 13.12.2013 r. OPIS PRZEDMIOTU ZAMÓWIENIA DO ZAPYTANIA KE1/POIG 8.2/13 ISTOTNE INFORMACJE O PROJEKCIE: Celem projektu "Wdrożenie zintegrowanego systemu

Bardziej szczegółowo

Rudniki, dnia 10.02.2016 r. Zamawiający: PPHU Drewnostyl Zenon Błaszak Rudniki 5 64-330 Opalenica NIP 788-000-22-12 ZAPYTANIE OFERTOWE

Rudniki, dnia 10.02.2016 r. Zamawiający: PPHU Drewnostyl Zenon Błaszak Rudniki 5 64-330 Opalenica NIP 788-000-22-12 ZAPYTANIE OFERTOWE Zamawiający: Rudniki, dnia 10.02.2016 r. PPHU Drewnostyl Zenon Błaszak Rudniki 5 64-330 Opalenica NIP 788-000-22-12 ZAPYTANIE OFERTOWE W związku z planowaną realizacją projektu pn. Rozwój działalności

Bardziej szczegółowo

Opis programu do wizualizacji algorytmów z zakresu arytmetyki komputerowej

Opis programu do wizualizacji algorytmów z zakresu arytmetyki komputerowej Opis programu do wizualizacji algorytmów z zakresu arytmetyki komputerowej 3.1 Informacje ogólne Program WAAK 1.0 służy do wizualizacji algorytmów arytmetyki komputerowej. Oczywiście istnieje wiele narzędzi

Bardziej szczegółowo

Warszawa, 08.01.2016 r.

Warszawa, 08.01.2016 r. Warszawa, 08.01.2016 r. INSTRUKCJA KORZYSTANIA Z USŁUGI POWIADOMIENIA SMS W SYSTEMIE E25 BANKU BPS S.A. KRS 0000069229, NIP 896-00-01-959, kapitał zakładowy w wysokości 354 096 542,00 złotych, który został

Bardziej szczegółowo

Program Google AdSense w Smaker.pl

Program Google AdSense w Smaker.pl Smaker.pl Program Google AdSense w Smaker.pl Pytania i odpowiedzi dotyczące programu Google AdSense Spis treści Czym jest AdSense... 2 Zasady działania AdSense?... 2 Jak AdSense działa w Smakerze?... 3

Bardziej szczegółowo

DE-WZP.261.11.2015.JJ.3 Warszawa, 2015-06-15

DE-WZP.261.11.2015.JJ.3 Warszawa, 2015-06-15 DE-WZP.261.11.2015.JJ.3 Warszawa, 2015-06-15 Wykonawcy ubiegający się o udzielenie zamówienia Dotyczy: postępowania prowadzonego w trybie przetargu nieograniczonego na Usługę druku książek, nr postępowania

Bardziej szczegółowo

UCHWAŁA. SSN Zbigniew Kwaśniewski (przewodniczący) SSN Anna Kozłowska (sprawozdawca) SSN Grzegorz Misiurek

UCHWAŁA. SSN Zbigniew Kwaśniewski (przewodniczący) SSN Anna Kozłowska (sprawozdawca) SSN Grzegorz Misiurek Sygn. akt III CZP 53/11 UCHWAŁA Sąd Najwyższy w składzie : Dnia 20 października 2011 r. SSN Zbigniew Kwaśniewski (przewodniczący) SSN Anna Kozłowska (sprawozdawca) SSN Grzegorz Misiurek w sprawie ze skargi

Bardziej szczegółowo

Możemy zapewnić pomoc z przeczytaniem lub zrozumieniem tych informacji. Numer dla telefonów tekstowych. boroughofpoole.

Możemy zapewnić pomoc z przeczytaniem lub zrozumieniem tych informacji. Numer dla telefonów tekstowych. boroughofpoole. Informacje na temat dodatku na podatek lokalny (Council Tax Support), które mogą mieć znaczenie dla PAŃSTWA Możemy zapewnić pomoc z przeczytaniem lub zrozumieniem tych informacji 01202 265212 Numer dla

Bardziej szczegółowo

Pracownia internetowa w każdej szkole. Opiekun pracowni internetowej SBS 2003 PING

Pracownia internetowa w każdej szkole. Opiekun pracowni internetowej SBS 2003 PING Instrukcja numer PING Pracownia internetowa w każdej szkole Opiekun pracowni internetowej SBS 2003 PING Poniższe rozwiązanie opisuje, jak zapisywać i odtwarzać obrazy całych dysków lub poszczególne partycje

Bardziej szczegółowo

Całościowe podejście do testowania automatycznego dla programistów. (TDD, BDD, Spec. by Example, wzorce, narzędzia)

Całościowe podejście do testowania automatycznego dla programistów. (TDD, BDD, Spec. by Example, wzorce, narzędzia) Program szkolenia: Całościowe podejście do testowania automatycznego dla programistów Ruby (TDD, BDD, Spec. by Example, wzorce, narzędzia) Informacje: Nazwa: Kod: Kategoria: Grupa docelowa: Czas trwania:

Bardziej szczegółowo

Postanowienia ogólne. Usługodawcy oraz prawa do Witryn internetowych lub Aplikacji internetowych

Postanowienia ogólne. Usługodawcy oraz prawa do Witryn internetowych lub Aplikacji internetowych Wyciąg z Uchwały Rady Badania nr 455 z 21 listopada 2012 --------------------------------------------------------------------------------------------------------------- Uchwała o poszerzeniu możliwości

Bardziej szczegółowo

Instrukcja zarządzania systemem informatycznym służącym do przetwarzania danych osobowych

Instrukcja zarządzania systemem informatycznym służącym do przetwarzania danych osobowych Załącznik nr 1 do Zarządzenia Nr 1/2013 Dyrektora Zespołu Obsługi Szkół i Przedszkoli w Muszynie z dnia 30 grudnia 2013 r. Instrukcja zarządzania systemem informatycznym służącym do przetwarzania danych

Bardziej szczegółowo

Projekt MES. Wykonali: Lidia Orkowska Mateusz Wróbel Adam Wysocki WBMIZ, MIBM, IMe

Projekt MES. Wykonali: Lidia Orkowska Mateusz Wróbel Adam Wysocki WBMIZ, MIBM, IMe Projekt MES Wykonali: Lidia Orkowska Mateusz Wróbel Adam Wysocki WBMIZ, MIBM, IMe 1. Ugięcie wieszaka pod wpływem przyłożonego obciążenia 1.1. Wstęp Analizie poddane zostało ugięcie wieszaka na ubrania

Bardziej szczegółowo

epuap Ogólna instrukcja organizacyjna kroków dla realizacji integracji

epuap Ogólna instrukcja organizacyjna kroków dla realizacji integracji epuap Ogólna instrukcja organizacyjna kroków dla realizacji integracji Projekt współfinansowany ze środków Europejskiego Funduszu Rozwoju Regionalnego w ramach Programu Operacyjnego Innowacyjna Gospodarka

Bardziej szczegółowo

Motywuj świadomie. Przez kompetencje.

Motywuj świadomie. Przez kompetencje. styczeń 2015 Motywuj świadomie. Przez kompetencje. Jak wykorzystać gamifikację i analitykę HR do lepszego zarządzania zasobami ludzkimi w organizacji? 2 Jak skutecznie motywować? Pracownik, który nie ma

Bardziej szczegółowo

Zamawiający potwierdza, że zapis ten należy rozumieć jako przeprowadzenie audytu z usług Inżyniera.

Zamawiający potwierdza, że zapis ten należy rozumieć jako przeprowadzenie audytu z usług Inżyniera. Pytanie nr 1 Bardzo prosimy o wyjaśnienie jak postrzegają Państwo możliwość przeliczenia walut obcych na PLN przez Oferenta, który będzie składał ofertę i chciał mieć pewność, iż spełnia warunki dopuszczające

Bardziej szczegółowo

Budowa systemów komputerowych

Budowa systemów komputerowych Budowa systemów komputerowych dr hab. inż. Krzysztof Patan, prof. PWSZ Instytut Politechniczny Państwowa Wyższa Szkoła Zawodowa w Głogowie k.patan@issi.uz.zgora.pl Współczesny system komputerowy System

Bardziej szczegółowo

Komputer i urządzenia z nim współpracujące

Komputer i urządzenia z nim współpracujące Temat 1. Komputer i urządzenia z nim współpracujące Realizacja podstawy programowej 1. 1) opisuje modułową budowę komputera, jego podstawowe elementy i ich funkcje, jak również budowę i działanie urządzeń

Bardziej szczegółowo

Wiedza niepewna i wnioskowanie (c.d.)

Wiedza niepewna i wnioskowanie (c.d.) Wiedza niepewna i wnioskowanie (c.d.) Dariusz Banasiak Katedra Informatyki Technicznej Wydział Elektroniki Wnioskowanie przybliżone Wnioskowanie w logice tradycyjnej (dwuwartościowej) polega na stwierdzeniu

Bardziej szczegółowo

Roman Dmowski Centrum Usług Wspólnych

Roman Dmowski Centrum Usług Wspólnych Czy PRINCE2 może być pomocny w zamówieniach publicznych Roman Dmowski Best Practice Showcase, 10 czerwca 2011 PRINCE2 jest znakiem handlowym Office of Government Commerce zarejestrowanym w Zjednoczonym

Bardziej szczegółowo

System Informatyczny CELAB. Przygotowanie programu do pracy - Ewidencja Czasu Pracy

System Informatyczny CELAB. Przygotowanie programu do pracy - Ewidencja Czasu Pracy Instrukcja obsługi programu 2.11. Przygotowanie programu do pracy - ECP Architektura inter/intranetowa System Informatyczny CELAB Przygotowanie programu do pracy - Ewidencja Czasu Pracy Spis treści 1.

Bardziej szczegółowo

Niniejszy ebook jest własnością prywatną.

Niniejszy ebook jest własnością prywatną. Niniejszy ebook jest własnością prywatną. Niniejsza publikacja, ani żadna jej część, nie może być kopiowana, ani w jakikolwiek inny sposób reprodukowana, powielana, ani odczytywana w środkach publicznego

Bardziej szczegółowo

Warunki formalne dotyczące udziału w projekcie

Warunki formalne dotyczące udziału w projekcie Witaj. Interesuje Cię udział w projekcie Trener w rolach głównych. Zapraszamy więc do prześledzenia dokumentu, który pozwoli Ci znaleźć odpowiedź na pytanie, czy możesz wziąć w nim udział. Tym samym znajdziesz

Bardziej szczegółowo

VinCent Office. Moduł Drukarki Fiskalnej

VinCent Office. Moduł Drukarki Fiskalnej VinCent Office Moduł Drukarki Fiskalnej Wystawienie paragonu. Dla paragonów definiujemy nowy dokument sprzedaży. Ustawiamy dla niego parametry jak podano na poniższym rysunku. W opcjach mamy możliwość

Bardziej szczegółowo

Spring MVC Andrzej Klusiewicz 1/18

Spring MVC Andrzej Klusiewicz 1/18 Spring MVC pierwsza aplikacja Kod źródłowy aplikacji którą tworzę w niniejszym kursie jest do pobrania z adresu: http://www.jsystems.pl/storage/spring/springmvc1.zip Aplikacja jest tworzona w NetBeans,

Bardziej szczegółowo

FORUM ZWIĄZKÓW ZAWODOWYCH

FORUM ZWIĄZKÓW ZAWODOWYCH L.Dz.FZZ/VI/912/04/01/13 Bydgoszcz, 4 stycznia 2013 r. Szanowny Pan WŁADYSŁAW KOSINIAK - KAMYSZ MINISTER PRACY I POLITYKI SPOŁECZNEJ Uwagi Forum Związków Zawodowych do projektu ustawy z dnia 14 grudnia

Bardziej szczegółowo

Efektywna strategia sprzedaży

Efektywna strategia sprzedaży Efektywna strategia sprzedaży F irmy wciąż poszukują metod budowania przewagi rynkowej. Jednym z kluczowych obszarów takiej przewagi jest efektywne zarządzanie siłami sprzedaży. Jak pokazują wyniki badania

Bardziej szczegółowo

Stan prac w zakresie wdrożenia systemów operacyjnych: NCTS2, AIS/INTRASTAT, AES, AIS/ICS i AIS/IMPORT. Departament Ceł, Ministerstwo Finansów

Stan prac w zakresie wdrożenia systemów operacyjnych: NCTS2, AIS/INTRASTAT, AES, AIS/ICS i AIS/IMPORT. Departament Ceł, Ministerstwo Finansów Stan prac w zakresie wdrożenia systemów operacyjnych: NCTS2, AIS/INTRASTAT, AES, AIS/ICS i AIS/IMPORT Departament Ceł, Ministerstwo Finansów Usługa e-tranzyt System NCTS 2 Aktualny stan wdrożenia Ogólnopolskie

Bardziej szczegółowo

emszmal 3: Automatyczne księgowanie przelewów w menedżerze sprzedaży BaseLinker (plugin dostępny w wersji ecommerce)

emszmal 3: Automatyczne księgowanie przelewów w menedżerze sprzedaży BaseLinker (plugin dostępny w wersji ecommerce) emszmal 3: Automatyczne księgowanie przelewów w menedżerze sprzedaży BaseLinker (plugin dostępny w wersji ecommerce) Zastosowanie Rozszerzenie to dedykowane jest internetowemu menedżerowi sprzedaży BaseLinker.

Bardziej szczegółowo

Ostatnia cena sprzeda y klienta 1.0 dodatek do Symfonia Faktura dla 1 firmy

Ostatnia cena sprzeda y klienta 1.0 dodatek do Symfonia Faktura dla 1 firmy Podr cznik u ytkownika Ostatnia cena sprzeda y klienta 1.0 dodatek do Symfonia Faktura dla 1 firmy Masz pytanie? zadzwo 693 936 046 lub napisz handel@symfoniadodatki.pl SPIS TRE CI 1. Instalacja dodatku

Bardziej szczegółowo

Strona Wersja zatwierdzona przez BŚ Wersja nowa 26 Dodano następujący pkt.: Usunięto zapis pokazany w sąsiedniej kolumnie

Strona Wersja zatwierdzona przez BŚ Wersja nowa 26 Dodano następujący pkt.: Usunięto zapis pokazany w sąsiedniej kolumnie Zmiany w Podręczniku Realizacji PIS (wersja z dnia 25 sierpnia 2008) (W odniesieniu do wersji z 11 lipca 2008 zatwierdzonej warunkowo przez Bank Światowy w dniu 21 lipca 2008) Strona Wersja zatwierdzona

Bardziej szczegółowo

ZAPYTANIE OFERTOWE. Tłumaczenie pisemne dokumentacji rejestracyjnej ZAPYTANIE OFERTOWE

ZAPYTANIE OFERTOWE. Tłumaczenie pisemne dokumentacji rejestracyjnej ZAPYTANIE OFERTOWE ZAPYTANIE OFERTOWE Tłumaczenie pisemne dokumentacji rejestracyjnej Biofarm sp. z o.o. ul. Wałbrzyska 13 60-198 Poznań Poznań, 09 grudnia 2015r. ZAPYTANIE OFERTOWE I. Nazwa i adres Zamawiającego: Biofarm

Bardziej szczegółowo

SYSTEM FINANSOWANIA NIERUCHOMOŚCI MIESZKANIOWYCH W POLSCE

SYSTEM FINANSOWANIA NIERUCHOMOŚCI MIESZKANIOWYCH W POLSCE SYSTEM FINANSOWANIA NIERUCHOMOŚCI MIESZKANIOWYCH W POLSCE Wstęp Rozdział 1 przedstawia istotę mieszkania jako dobra ekonomicznego oraz jego rolę i funkcje na obecnym etapie rozwoju społecznego i ekonomicznego.

Bardziej szczegółowo

PROE wykład 7 kontenery tablicowe, listy. dr inż. Jacek Naruniec

PROE wykład 7 kontenery tablicowe, listy. dr inż. Jacek Naruniec PROE wykład 7 kontenery tablicowe, listy dr inż. Jacek Naruniec Prosty kontener oparty na tablicach Funkcja dodawanie pojedynczego słonia do kontenera: 1 2 3 4 5 6 7 11 12 13 14 15 16 17 21 22 23 24 25

Bardziej szczegółowo

DOPALACZE. - nowa kategoria substancji psychoaktywnych

DOPALACZE. - nowa kategoria substancji psychoaktywnych DOPALACZE - nowa kategoria substancji psychoaktywnych CZYM SĄ DOPALACZE? Dopalacze stosowana w Polsce, potoczna nazwa różnego rodzaju produktów zawierających substancje psychoaktywne, które nie znajdują

Bardziej szczegółowo

KOMISJA WSPÓLNOT EUROPEJSKICH. Wniosek DECYZJA RADY

KOMISJA WSPÓLNOT EUROPEJSKICH. Wniosek DECYZJA RADY KOMISJA WSPÓLNOT EUROPEJSKICH Bruksela, dnia 13.12.2006 KOM(2006) 796 wersja ostateczna Wniosek DECYZJA RADY w sprawie przedłużenia okresu stosowania decyzji 2000/91/WE upoważniającej Królestwo Danii i

Bardziej szczegółowo

UCHWAŁ A SENATU RZECZYPOSPOLITEJ POLSKIEJ. z dnia 18 października 2012 r. w sprawie ustawy o zmianie ustawy o podatku dochodowym od osób fizycznych

UCHWAŁ A SENATU RZECZYPOSPOLITEJ POLSKIEJ. z dnia 18 października 2012 r. w sprawie ustawy o zmianie ustawy o podatku dochodowym od osób fizycznych UCHWAŁ A SENATU RZECZYPOSPOLITEJ POLSKIEJ z dnia 18 października 2012 r. w sprawie ustawy o zmianie ustawy o podatku dochodowym od osób fizycznych Senat, po rozpatrzeniu uchwalonej przez Sejm na posiedzeniu

Bardziej szczegółowo

Strategia rozwoju sieci dróg rowerowych w Łodzi w latach 2015-2020+

Strategia rozwoju sieci dróg rowerowych w Łodzi w latach 2015-2020+ Strategia rozwoju sieci dróg rowerowych w Łodzi w latach 2015-2020+ Projekt: wersja β do konsultacji społecznych Opracowanie: Zarząd Dróg i Transportu w Łodzi Ul. Piotrkowska 175 90-447 Łódź Spis treści

Bardziej szczegółowo

Zagospodarowanie magazynu

Zagospodarowanie magazynu Zagospodarowanie magazynu Wymagania wobec projektu magazynu - 1 jak najlepsze wykorzystanie pojemności związane z szybkością rotacji i konieczną szybkością dostępu do towaru; im większa wymagana szybkość

Bardziej szczegółowo

InsERT GT Własne COM 1.0

InsERT GT Własne COM 1.0 InsERT GT Własne COM 1.0 Autor: Jarosław Kolasa, InsERT Wstęp... 2 Dołączanie zestawień własnych do systemu InsERT GT... 2 Sposób współpracy rozszerzeń z systemem InsERT GT... 2 Rozszerzenia standardowe

Bardziej szczegółowo

System wielokryterialnej optymalizacji systemu traderskiego na rynku kontraktów terminowych

System wielokryterialnej optymalizacji systemu traderskiego na rynku kontraktów terminowych System wielokryterialnej optymalizacji systemu traderskiego na rynku kontraktów terminowych Bartłomiej Wietrak 1 1 Wydział Inżynierii Mechanicznej i Informatyki Kierunek informatyka, Rok IV Streszczenie

Bardziej szczegółowo

WF-FaKir dla Windows

WF-FaKir dla Windows 1 WF-FaKir dla Windows Zamknięcie roku (opracował Przemysław Gola) Na to, co w księgowości nazywamy zamknięciem roku obrachunkowego, składa się wiele czynności. Doświadczonemu księgowemu żadna z tych czynności

Bardziej szczegółowo

Programowanie Zespołowe

Programowanie Zespołowe Programowanie Zespołowe Systemy kontroli wersji dr Rafał Skinderowicz mgr inż. Michał Maliszewski Systemy kontroli wersji Śledzenie zmian, np.: w kodzie źródłowym Łączenie zmian dokonanych w plikach Ułatwienie

Bardziej szczegółowo

Integracja systemów, integracja procesów

Integracja systemów, integracja procesów Nowe rozwiązania informatyczne w zmieniającej się rzeczywistości akademickiej Integracja systemów, integracja procesów... Janina Mincer-Daszkiewicz Uniwersytet Warszawski, MUCI jmd@mimuw.edu.pl Warszawa,

Bardziej szczegółowo

Skuteczność i regeneracja 48h albo zwrot pieniędzy

Skuteczność i regeneracja 48h albo zwrot pieniędzy REGULAMIN AKCJI PROMOCYJNEJ Skuteczność i regeneracja 48h albo zwrot pieniędzy 1. ORGANIZATOR, CZAS TRWANIA AKCJI PROMOCYJNEJ, PROGRAM AKCJI 1.1 Organizatorem akcji promocyjnej prowadzonej pod nazwą Skuteczność

Bardziej szczegółowo

Ogólna charakterystyka kontraktów terminowych

Ogólna charakterystyka kontraktów terminowych Jesteś tu: Bossa.pl Kurs giełdowy - Część 10 Ogólna charakterystyka kontraktów terminowych Kontrakt terminowy jest umową pomiędzy dwiema stronami, z których jedna zobowiązuje się do nabycia a druga do

Bardziej szczegółowo

Lublin, 19.07.2013. Zapytanie ofertowe

Lublin, 19.07.2013. Zapytanie ofertowe Lublin, 19.07.2013 Zapytanie ofertowe na wyłonienie wykonawcy/dostawcy 1. Wartości niematerialne i prawne a) System zarządzania magazynem WMS Asseco SAFO, 2. usług informatycznych i technicznych związanych

Bardziej szczegółowo

Dziękujemy za zainteresowanie

Dziękujemy za zainteresowanie Dziękujemy za zainteresowanie Dlaczego wybrać wizualizacje? Wizualizacje mebli wykonywane przez wizualizacjemebli.org są tańsze, mniej czasochłonne i pozwalają ukazywać każdy zestaw mebli w całkowicie

Bardziej szczegółowo

Zarządzanie Zasobami by CTI. Instrukcja

Zarządzanie Zasobami by CTI. Instrukcja Zarządzanie Zasobami by CTI Instrukcja Spis treści 1. Opis programu... 3 2. Konfiguracja... 4 3. Okno główne programu... 5 3.1. Narzędzia do zarządzania zasobami... 5 3.2. Oś czasu... 7 3.3. Wykres Gantta...

Bardziej szczegółowo

Informacja dotycząca adekwatności kapitałowej HSBC Bank Polska S.A. na 31 grudnia 2010 r.

Informacja dotycząca adekwatności kapitałowej HSBC Bank Polska S.A. na 31 grudnia 2010 r. Informacja dotycząca adekwatności kapitałowej HSBC Bank Polska S.A. na 31 grudnia 2010 r. Spis treści: 1. Wstęp... 3 2. Fundusze własne... 4 2.1 Informacje podstawowe... 4 2.2 Struktura funduszy własnych....5

Bardziej szczegółowo

Podstawy programowania

Podstawy programowania Podstawy programowania Elementy algorytmiki C w środowisku.e (C#) dr inŝ. Grzegorz Zych Copernicanum, pok. 104 lub 206a 1 Minimum programowe reści kształcenia: Pojęcie algorytmu. Podstawowe konstrukcje

Bardziej szczegółowo

Rozdział 6. Pakowanie plecaka. 6.1 Postawienie problemu

Rozdział 6. Pakowanie plecaka. 6.1 Postawienie problemu Rozdział 6 Pakowanie plecaka 6.1 Postawienie problemu Jak zauważyliśmy, szyfry oparte na rachunku macierzowym nie są przerażająco trudne do złamania. Zdecydowanie trudniejszy jest kryptosystem oparty na

Bardziej szczegółowo

Utrzymanie aplikacji biznesowych SI PSZ

Utrzymanie aplikacji biznesowych SI PSZ Utrzymanie aplikacji biznesowych SI PSZ Grzegorz Dziwoki/Dawid Batko Inżynier Systemowy, Sygnity S.A. Kwiecień 2014 r. Plan prezentacji Aplikacje utrzymywane w CPD MPiPS Kolokacja Syriusz Std w CPD MPiPS

Bardziej szczegółowo

Polityka prywatności strony internetowej wcrims.pl

Polityka prywatności strony internetowej wcrims.pl Polityka prywatności strony internetowej wcrims.pl 1. Postanowienia ogólne 1.1. Niniejsza Polityka prywatności określa zasady gromadzenia, przetwarzania i wykorzystywania danych w tym również danych osobowych

Bardziej szczegółowo

Poradnik, jak zamontować kompletny cylinder z głowicą 50, 60, 80ccm.

Poradnik, jak zamontować kompletny cylinder z głowicą 50, 60, 80ccm. Poradnik, jak zamontować kompletny cylinder z głowicą 50, 60, 80ccm. Poniższy poradnik przedstawia ogólny zarys montażu głowic i cylindrów w skuterach posiadających silniki 50ccm typu 139QMA/139QMB. Montaż

Bardziej szczegółowo

1. Korzyści z zakupu nowej wersji... 2. 2. Poprawiono... 2. 3. Zmiany w słowniku Stawki VAT... 2. 4. Zmiana stawki VAT w kartotece Towary...

1. Korzyści z zakupu nowej wersji... 2. 2. Poprawiono... 2. 3. Zmiany w słowniku Stawki VAT... 2. 4. Zmiana stawki VAT w kartotece Towary... Forte Handel 1 / 8 Nowe funkcje w module Forte Handel w wersji 2011a Spis treści: 1. Korzyści z zakupu nowej wersji... 2 2. Poprawiono... 2 Nowe funkcje w module Forte Handel w wersji 2011 Spis treści:

Bardziej szczegółowo

ZAPRASZA DO SKŁADNIA OFERT

ZAPRASZA DO SKŁADNIA OFERT Tytuł projektu: Przygotowanie Planu Rozwoju Eksportu przez Godzikowice, dnia 18.11.2015 r. Zapytanie ofertowe z siedzibą przy ul. Stalowej 7-9 w Godzikowicach (kod pocztowy ), Tel. 71 313 95 18, NIP: 9121654900,

Bardziej szczegółowo

ZAPROSZENIE DO SKŁADANIA OFERT

ZAPROSZENIE DO SKŁADANIA OFERT 1 Centrum Doradztwa Unijnego Wioletta Piotrowska Tarapacz, Jacek Frankowski s.c. 61-815 Poznań, ul. Ratajczaka 26/3, Poznań, 16.10.2013 ZAPROSZENIE DO SKŁADANIA OFERT CENTRUM DORADZTWA UNIJNEGO S.C. zaprasza

Bardziej szczegółowo

Opis modułu analitycznego do śledzenia rotacji towaru oraz planowania dostaw dla programu WF-Mag dla Windows.

Opis modułu analitycznego do śledzenia rotacji towaru oraz planowania dostaw dla programu WF-Mag dla Windows. Opis modułu analitycznego do śledzenia rotacji towaru oraz planowania dostaw dla programu WF-Mag dla Windows. Zadaniem modułu jest wspomaganie zarządzania magazynem wg. algorytmu just in time, czyli planowanie

Bardziej szczegółowo

Materiały szkoleniowe dla partnerów. Prezentacja: FIBARO a system grzewczy.

Materiały szkoleniowe dla partnerów. Prezentacja: FIBARO a system grzewczy. Materiały szkoleniowe dla partnerów. Prezentacja: FIBARO a system grzewczy. Twój inteligentny system grzewczy Inteligentny system grzewczy to w pełni zautomatyzowany system sterowania i monitoringu ogrzewania

Bardziej szczegółowo

INDATA SOFTWARE S.A. Niniejszy Aneks nr 6 do Prospektu został sporządzony na podstawie art. 51 Ustawy o Ofercie Publicznej.

INDATA SOFTWARE S.A. Niniejszy Aneks nr 6 do Prospektu został sporządzony na podstawie art. 51 Ustawy o Ofercie Publicznej. INDATA SOFTWARE S.A. Spółka akcyjna z siedzibą we Wrocławiu, adres: ul. Strzegomska 138, 54-429 Wrocław, zarejestrowana w rejestrze przedsiębiorców Krajowego Rejestru Sądowego pod numerem KRS 0000360487

Bardziej szczegółowo

Techniki korekcyjne wykorzystywane w metodzie kinesiotapingu

Techniki korekcyjne wykorzystywane w metodzie kinesiotapingu Techniki korekcyjne wykorzystywane w metodzie kinesiotapingu Jak ju wspomniano, kinesiotaping mo e byç stosowany jako osobna metoda terapeutyczna, jak równie mo e stanowiç uzupe nienie innych metod fizjoterapeutycznych.

Bardziej szczegółowo

Excel w logistyce - czyli jak skrócić czas przygotowywania danych i podnieść efektywność analiz logistycznych

Excel w logistyce - czyli jak skrócić czas przygotowywania danych i podnieść efektywność analiz logistycznych Excel w logistyce - czyli jak skrócić czas przygotowywania danych i podnieść efektywność analiz logistycznych Terminy szkolenia 25-26 sierpień 2016r., Gdańsk - Mercure Gdańsk Posejdon**** 20-21 październik

Bardziej szczegółowo

Dlaczego warto inwestować w promocję projektu od chwili jego narodzin

Dlaczego warto inwestować w promocję projektu od chwili jego narodzin Dlaczego warto inwestować w promocję projektu od chwili jego narodzin Aneta Prymaka, Dorota Stojda Dział Informacji i Marketingu Centrum Nauki Kopernik W promocję projektu warto zainwestować w celu: znalezienia

Bardziej szczegółowo

Nie racjonalnych powodów dla dopuszczenia GMO w Polsce

Nie racjonalnych powodów dla dopuszczenia GMO w Polsce JANUSZ WOJCIECHOWSKI POSEŁ DO PARLAMENTU EUROPEJSKIEGO WICEPRZEWODNICZĄCY KOMISJI ROLNICTWA I ROZWOJU WSI Tekst wystąpienia na Konferencji: "TRADYCYJNE NASIONA - NASZE DZIEDZICTWO I SKARB NARODOWY. Tradycyjne

Bardziej szczegółowo