Jak pisać testy? Wersja 2

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

Download "Jak pisać testy? Wersja 2"

Transkrypt

1 Jak pisać testy? Wersja 2 Jakub Stolarski Spis treści 1 Wymagania i 1.1 Instalacja i 2 Testy akceptacyjne ii 2.1 Przygotowanie danych do testów ii 2.2 Przygotowanie testów iii 3 Testy funkcjonalne v 3.1 Testowanie javascript viii 4 Test driven development xi 1 Wymagania Do testów oprócz Django potrzebne są biblioteki: Django-WebTest 1, WebTest 2, AllPairs 3 perf_utils, selenium Instalacja Instalacja zewnętrznych bibliotek za pomocą pip odbywa się poprzez wpisanie:

2 pip install webtest pip install django-webtest pip install AllPairs pip install selenium Zamiast pip install można użyć easy_install. Perf_utils znajduje się w naszym svn w django_project_templates (jak tak jak cms_project) ściągamy z svn: svn co svn:// /django_project_templates I uzupełniamy jeden z plików.pth w site-packages ścieżkami wskazującymi na katalogi: django_project_templates/src django_project_templates/src/cms_project Aplikację perf_utils należy dodać do INSTALED_APPS w pliku local_settings.py. 2 Testy akceptacyjne W MowimyJakV1 w pliku cms_local/acceptance_tests.py znajduje się przykładowy test akceptacyjny opisujący podstawowy przebieg tworzenia i publikowania artykułu w serwisie Opis przypadku testowego: admin lub kierownik definiują nowe zadanie (artykuł z kategorią i tytułem) redaktor widzi listę nowych zadań i pobiera interesujący go temat redaktor pisze tekst i przesyła go do sprawdzenia do admina (długość tekstu musi wynosić minimum 1000 znaków) kierownik otrzymuje podgląd artykułu przy sprawdzeniu admin może: opulikować artykuł lub zwrócić go do redaktora W tym przypadku testowym mamy 3 role admin, kierownik oraz redaktor. 2.1 Przygotowanie danych do testów Na początek wypełnijmy testową bazę. Uruchamiamy aplikację na testowej bazie: python manage.py testserver Wchodzimy do panelu administracyjnego i tworzymy użytkowników dla odpowiednich ról. Nazwijmy ich superredaktor1 (admin), kierownik1 (kierownik), redaktor1 (redaktor). Oprócz ról tworzymy potrzebne kategorie, grupy użytkowników, uprawnienia itp. Jeżeli mamy już działającą bazę można ją skopiować. Utworzona baza ma prefix test_ (możemy dodać w konfiguracji baz danych taką baze z aliasem test_mowimyjak, aby wygodniej operować na bazie danych). Możemy zgrać jej zawartość do plików json, które wykorzystamy jako fixture w naszych testach: python manage.py dumpdata --database test_mowimyjak auth articles.articleblocktype \ > cms_local/fixtures/auth.json python manage.py dumpdata --database test_mowimyjak categories \ > cms_local/fixtures/categories.json python manage.py dumpdata --database test_mowimyjak authors > cms_local/fixtures/authors.json python manage.py dumpdata --database test_mowimyjak agency > cms_local/fixtures/agency.json python manage.py dumpdata --database test_mowimyjak editorprofiles.editorial \

3 > editorprofiles/fixtures/editorial.json python manage.py dumpdata --database test_mowimyjak editorprofiles.editorprofile \ > editorprofiles/fixtures/editorprofiles.json 2.2 Przygotowanie testów Następnie tworzymy szablon testów: python manage.py gen_tests --template acceptance > acceptance_tests.py W szablonie uzupełniamy fixtures o ścieżki do wcześniej wygenerowanych fixtures i tworzymy klasę dla naszego testu: class AbstractMuratorTest(AcceptanceTestCase): fixtures = [ cms_local/fixtures/auth.json, cms_local/fixtures/categories.json, cms_loca/fixtures/authors.json, cms_loca/fixtures/agency.json, editorprofiles/fixtures/editorial.json, editorprofiles/fixtures/editorprofiles.json, ] class BasicWorkflowTest(AbstractMuratorTest): Teraz zróbmy test sprawdzający poprawność dodawania i publikacji artykułu. Metdy testów muszą zaczynać się od prefiksu test_: class BasicWorkflowTest(AbstractMuratorTest): def test_add_article(self): task_num = 1 self.task_title = test_zadanie%s % task_num # dodanie zadania przez kierownika self._supervisor_add_task() # dodawanie artykulu przez redaktora self._editor_add_article() # kierownik ma wgląd do artykulu self._supervisor_view_article() # zatwierdzenie artykulu przez administratora self._admin_publish_article() Przygotowaliśmy sobie pomocniczą zmienną task_title, która będzie tytułem zadania, a następnie artykułu. Test podzieliliśmy dla wygody na części wykonywane poprzez poszczególne role. Uzupełnijmy teraz część testu przypisaną do roli kierownika: def _supervisor_add_task(self): ## kierownik loguje sie do panelu kierownika response = self.app.get( /panel-kierownika/ ) response.form[ username ] = kierownik1 response.form[ word ] = test response = response.form.submit().follow()

4 ## klika dodaj zadanie response = response.click(href= articles/task/add/ ) ## wypelnia formularz response.form[ title ] = self.task_title response.form[ category ] = 22 ## klika na zapisz response = response.form.submit().follow() self.assertequals(response.status_code, 200) try: self.task = Task.objects.get(title=self.task_title) except Task.DoesNotExist: self.task = None self.assertfalse(self.task is None) ## i wylogowuje sie response.click(href= /panel-kierownika/logout ) Pod zmienną self.app znajduje się testowana aplikacja (więcej informacji w dokumentacji WebTest 2 ). Otwieramy stronę poprzez get, pobieramy jedyny znajdujący się tam formularz, uzupełniamy go i logujemy się. Ponieważ po poprawnym zalogowaniu następuje przekierowanie, to dorzucamy follow. Następnie klikamy na przycisk dodawania zadania, wypełniamy formularz i tworzymy nowe zadanie. Nowo utworzone zadanie zapisujemy, aby móc odwołać się do tego samego zadania w dalszej części testu. Na koniec wylogowujemy się. Analogicznie postępujemy dla pozostałych ról. Następnie wyciągamy testy z naszej klasy (aktualnie tylko jeden test) i tworzymy z nich zestaw testów, który podpinamy do głownego zestawu testów: basic_suite = test_loader.loadtestsfromtestcase(test_case) def suite(): suite = unittest.testsuite() test_suites = [ basic_suite ] test_loader = unittest.testloader() for test_suite in test_suites: suite.addtest(test_suite) return suite W tej samej klasie testów możemy i powinniśmy zdefiniować inne testy sprawdzające alternatywne ścieżki przebiegu (np. odrzucenie artykułu przez kierownika). Django automatycznie uruchamia jedynie te testy, które podpięte są w pliku tests.py w katalogu aplikacji. Dlatego musimy zaimportować tam nasze testy: import unittest def suite(): from cms_local.acceptance_tests import suite as acceptance_suite suite = unittest.testsuite() test_suites = [ acceptance_suite() ] for test_suite in test_suites: suite.addtest(test_suite) return suite Testy uruchamiamy poleceniem:

5 python manage.py test cms_local 3 Testy funkcjonalne W MowimyJakV1 w pliku cms_local/functional_tests.py znajduje się przykładowy test funkcjonalny sprawdzający działanie formularza tworzenia artykułu dla redaktora serwisu Opis przypadku testowego: jako zalogowany redaktor pobieramy zadanie, na podstawie którego tworzymy artykuł wypelniamy pola zajawka, tagi, treść, nadtytul, zdjęcie główne, galeria klikamy Zapisz i wyślij do sprawdzenia w wyniku otrzymujemy potwierdzenie, że artykuł został wysłany i trafiamy na strone główną panelu redaktora Alternatywne przypadki do przetestowania: uzupełniona zbyt długa zajawka brak zajawki brak tagów brak treści za długi nadtytuł Na początek generujemy szablon testów funkcjonalnych: python manage.py gen_tests --template functional > functional_tests.py Uzupełniamy szablon przez wcześniej wygenerowane fixtures oraz naszą klasą testową AddArticleTest. W każdym teście bedziemy potrzebować zadania, na podstawie którego powstanie artykuł. Dlatego w metodzie setup tworzymy takie zadanie i przypisujemy je pod self.task, aby łatwiej odwołać się do niego w testach. W częsci teardown powinniśmy wyczyścić wszystko to, co utworzyliśmy w setup (czyli nasze zadanie): class AbstractMuratorTest(AcceptanceTestCase): fixtures = [ cms_local/fixtures/auth.json, cms_local/fixtures/categories.json, cms_loca/fixtures/authors.json, cms_loca/fixtures/agency.json, editorprofiles/fixtures/editorial.json, editorprofiles/fixtures/editorprofiles.json, ] class AddArticleTest(AbstractMuratorTest): def setup(self): super(addarticletest, self).setup() task_num = 1 self.task_title = test_zadanie%s % task_num # tworzymy zadanie supervisor = User.objects.get(username= superredaktor1 ) category = Category.objects.get(pk=22) self.proposal = TaskProposal.objects.create(title=self.task_title, status=taskproposal.status self.task = Task(title=self.task_title) self.task.category = category

6 self.task.user = User.objects.get_or_create(username=settings.NOT_SET_USERNAME)[0] self.task.status = Task.STATUS_NEW self.task.save() def teardown(self): # usuwamy artykul self.task.delete() self.proposal.delete() super(addarticletest, self).teardown() Następnie tworzymy pomocniczą metodę, która zasymuluje pobranie zadania przez zalogowanego redaktora, wypełni formularz, zapisze i wyśle do sprawdzenia: def _add_article(self, lead, tags, text, overtitle, lead_photo, gallery): editor = User.objects.get(username= redaktor1 ) response = self.app.get( /panel-redaktora/articles/task/take/%s/ % self.task.id, user=editor) response = response.follow() response.form[ lead ] = lead response.form[ tags ] = tags response.form[ text ] = text response.form[ overtitle ] = overtitle response.form[ lead_photo ] = lead_photo response.form[ gallery ] = gallery return response.form.submit( _save_and_sent_to_check, 0) Pod self.app mamy utworzony obiekt aplikacji WebTest, przez który możemy wykonywać zapytania na naszej aplikacji. W tym teście wywołujemy metodę get, która pobiera odpowiednie zadanie. Opis pozostałych metod (m.in. post) znajduje się w dokumentacji WebTest 2. Jako parametr user podaliśmy obiekt redaktora. Takie użycie powoduje, że zapytanie jest traktowane, jakbyśmy byli zalogowani jako ten użytkownik. W wyniku zapytania otrzymujemy obiekt response. Ponieważ pobranie zadania powoduje przekierowanie, to podążamy za przekierowaniem przy użyciu metody follow. W wyniku otrzymujemy kolejny obiekt response. W obiekcie response pod zmienną form znajduje się pierwszy formularz znaleziony na stronie. Jeżeli formularzy byłoby więcej, to wszystkie znajduja się w słowniku forms. Formularz zachowuje się jak słownik i możemy zupełnić poszczególne pola podpisując je pod kluczami, które odpowiadają artybutom name w formularzu. Na koniec wysyłamy formularz za pomocą przycisk o nazwie _save_and_sent_to_check. Jeżeli takich przycisków byłoby więcej, to drugi parametr mówi, który z nich użyć. Dopisujemy jeszcze dwie kolejne metody pomocnicze. Jedną wykorzystamy do testów, które zakładają, że wszystko zadziałało prawidłowo. Drugą do testów, w których oczekujemy, że system poinformuje nas o źle wypełnionym formularzu: def _add_article_ok(self, lead, tags, text, overtitle, lead_photo, gallery): response = self._add_article(lead, tags, text, overtitle, lead_photo, gallery) try: errors = response.context[ errors ] except (TypeError, KeyError): errors = [] self.assertequals(errors, [], msg=errors) self.assertequals(response.status_code, 302) response = response.follow() self.assertequals(response.status_code, 200) def _add_article_error(self, lead, tags, text, overtitle, lead_photo, gallery): response = self._add_article(lead, tags, text, overtitle, lead_photo, gallery) try: errors = response.context[ errors ] except (TypeError, KeyError): errors = []

7 self.assertnotequals(errors, []) self.assertequals(response.status_code, 200) Obiekt response posiada atrybut context, w którym znajduje się kontekst użyty do renderowania szablonów. Jeżeli wystąpił błąd w formularzu, to znajdzie się tam lista errors wskazująca, jakie błędy wystąpiły. Jeżeli poprawnie został dodany artykuł to oczekujemy, że errors będzie puste, a kod zwrócony przez aplikację będzie przekierowywał nas na inną stronę. Jeżeli źle wypełniliśmy formularz oczekujemy niepustej listy błędów oraz braku przekierowania. Metody self.assert sprawdzają te warunki w testach. Więcej metod jest opisanych w dokumentacji Django na temat testów 5. Jeżeli funkcja przyjmuje różne parametry, to należałoby przetestować wszystkie możliwe kombinacje tych parametrów. Niestety jest to czasochłonne, a czasami wręcz niemożliwe. Dlatego metodą przynoszącą dobre efekty jest sprawdzanie każdej pary takich parametrów. Aby to zrobić wykorzystamy dekorator generator, który na podstawie szablonu metody i przekazanych parametrów, automatycznie wygeneruje zajawka1 ], [ tag1,tag2 ], [ Tresc artykulu ], [, Nadtytul ], [ ], [ ]) def _add_article(self, lead, tags, text, overtitle, lead_photo, gallery): # poprawne dodanie artykulu self._add_article_ok(lead, tags, text, overtitle, lead_photo, za_dluga_zajawka * 100], [ tag1,tag2 ], [ Tresc artykulu ], [ ], [ ], [ ]) def _add_article_with_wrong_lead(self, lead, tags, text, overtitle, lead_photo, gallery): # blad dodawania artykulu - niepoprawna zajawka self._add_article_error(lead, tags, text, overtitle, lead_photo, zajawka ], [ ], [ Tresc artykulu ], [ ], [ ], [ ]) def _add_article_with_wrong_tags(self, lead, tags, text, overtitle, lead_photo, gallery): # blad dodawania artykulu - niepoprawne tagi self._add_article_error(lead, tags, text, overtitle, lead_photo, zajawka ], [ tag1,tag2 ], [ ], [ ], [ ], [ ]) def _add_article_with_wrong_text(self, lead, tags, text, overtitle, lead_photo, gallery): # blad dodawania artykulu - niepoprawny tekst self._add_article_error(lead, tags, text, overtitle, lead_photo, zajawka ], [ tag1,tag2 ], [ tresc ], [ za dlugi nadtytul * 100], [ ], [ ]) def _add_article_with_wrong_overtitle(self, lead, tags, text, overtitle, lead_photo, gallery): # blad dodawania artykulu - niepoprawny nadtylul self._add_article_error(lead, tags, text, overtitle, lead_photo, gallery) Kolejnymi parametrami generatora są listy zawierające możliwe wartości dla kolejnych argumentów dekorowanej funkcji. W przypadku wartości liczbowych, warto wprowadzić przynajmniej wartości ze skraju zakresu, w którym wartość jest poprawna oraz jakąś typową wartość ze środka zakresu. W przypadku łańcuchów znaków, warto sprawdzać, jak zachowuje się test przy pustych łańcuchach, bardzo długich, zawierających spacje i znaki diakrytyczne. Na koniec wyciągamy testy z naszej klasy i tworzymy z nich zestaw testów, który podpinamy do głownego zestawu testów: add_article_suite = test_loader.loadtestsfromtestcase(addarticletest) def suite(): suite = unittest.testsuite() test_suites = [ add_article_suite ] for test_suite in test_suites: suite.addtest(test_suite) return suite 5 https://docs.djangoproject.com/en/1.2/topics/testing/

8 Analogicznie jak w testach akcpetacyjnych należy podpiąć testy do głownego tests.py: import unittest def suite(): from cms_local.functional_tests import suite as functional_suite suite = unittest.testsuite() test_suites = [ functional_suite() ] for test_suite in test_suites: suite.addtest(test_suite) return suite Testy uruchamiamy poleceniem: python manage.py test cms_local 3.1 Testowanie javascript W MowimyJakV1 w pliku cms_local/selenium_tests.py znajduje się przykładowy test funkcjonalny sprawdzający działanie autouzupełniania tagów w formularzu tworzenia artykułu dla redaktora serwisu Opis przypadku testowego: redaktor loguje się do panelu redaktora klika na link Dodaj nowy artykuł uzupełnia pole title zaczyna uzupełnianie pola tags wybranym tagiem i czeka na podpowiedzi systemu widząc interesujący go tag potwierdza naciśnięciem klawisza ENTER następnie uzupełnia zajawkę oraz treść w edytorze TinyMCE zapisuje artykuł wylogowuje się Na początek generujemy szablon testów selenium: python manage.py gen_tests --template selenium > selenium_tests.py Szablon uzupełniamy o nowy test AddArticleTest: class AddArticleTest(AbstractMuratorTest): def setup(self): super(addarticletest, self).setup() def teardown(self): super(addarticletest, self).teardown() def test_should_show_autocomplete(self): Pod zmienną self.driver znajduje się webdriver selenium, który steruje zachowaniem przeglądarki. Uzupełniamy dwie pomocniczne metody do logowania i wylogowania:

9 def _login(self): self.driver.get(self.host_name + /panel-redaktora ) login_form = self.driver.find_element_by_id("login-form") login_form.find_element_by_name( username ).send_keys("redaktor1") login_form.find_element_by_name( word ).send_keys("test") login_form.submit() def _logout(self): /panel-redaktora/logout )]").click() Polecenie metoda self.driver.get powoduje uruchomienie w przeglądarce strony podanej w parametrze metodą GET. Za pomocą self.drive.find_element_by_id możemy pobrać interesujący nas element na stronie. W naszym przypadku jest to formularz. Inne dostępne metody to: find_element_by_xpath - pobiera element na stronie za pomocą wyrażenia xpath find_element_by_link_text - pobiera element na stronie na podstawie treści linku find_element_by_partial_link_text - pobiera element na stronie na podstawie fragmentu treści linku find_element_by_name - pobiera element na stronie na podstawie atrybutu name find_element_by_tag_name - pobiera element na stronie na podstawie nazwy taga find_element_by_class_name - pobiera element na stronie na podstawie nazwy klasy find_element_by_css_selector - pobiera element na stronie w sposób analogiczny do selektorów css Oprócz tego występują wszystkie wyżej wymienione metody w wersji find_elements, która powoduje pobranie listy wszystkich takich elementów, a nie tylko jednego. Dokumentacja do selenium webdriver jest dostępna w postaci pythonowych docstringów: import selenium.webdriver.remote.webdriver help(selenium.webdriver.remote.webdriver) Elementy pobrane za pomocą metod find_element same również posiadają wiele z wcześniej wymienionych metod oraz swoje unikalne. Wewnątrz pobranego formularza logowania wyszukujemy po name pola username oraz word i uzupełniamy je symulując wpisywanie tekstu za pomocą metody send_keys. Następnie na formularzu wywołujemy metodę submit, która wywoła domyślną akcję dla formularza. Jeżeli chcielibyśmy wywołać jedną z alternatywnych akcji, należałoby uruchomić submit na konkretnym elemencie np. przycisku OK lub Anuluj. Wypełniamy naszą metodę testową: def test_should_show_autocomplete(self): self._login() # potwierdz, zapytanie "Czy jestes pewien?" # czekamy, na zaladowanie sie strony # wypelniamy formularz ## wypelniamy tagi i czekamy na podpowiedz ## sprawdzamy, czy podpowiedziano tam wlasciwy tag # wypelniamy TinyMCE # zapisujemy formularz self._logout() Kliknięcie na link Dodaj nowy artykuł powoduje wyświetlenie alertu z informacją typu Czy jesteś pewien, że chcesz odstrzelić sobie palca?. Metodą self.driver.switch_to_alert przechodzimy do okienka alertu, a następnie potwierdzamy poprzez alert: self.driver.find_element_by_link_text(u"dodaj nowy artykuł").click() self.driver.switch_to_alert().accept()

10 Strona może ładować się dłużej lub krócej i powinniśmy zaczekać na załadowanie się jej. Załóżmy, że jak się wyświetli już właściwy tytuł, to strona jest załadowana. Do oczekiwania na pewne zdarzenie służy obiekt WebDriverWait: from selenium.webdriver.support.ui import WebDriverWait... try: # czekamy, na zaladowanie sie strony WebDriverWait(self.driver, 20).until(lambda driver : driver.title.lower().startswith(u"dodaj")) finally: Jako parametry przekazujemy webdriver oraz czas, po który zostanie wyrzucony wyjątek informujący, że nie doczekaliśmy się żądanego efektu. Następnie na naszym obiekcie, wywołujemy metodę until, której parametrem jest funkcja sprawdzająca, czy zaszło oczekiwane zdarzenie. Prototyp tej funkcji to: def func(driver): Przekazywany parametr driver to przekazany webdriver do obiektu WebDriverWait. W chwili, gdy funkcja zwróci True, kończymy oczekiwanie. W dalszej części testu wyszukujemy poszczególne pola formularza i uzupełniamy je. W przypadku tagów chcemy sprawdzić podpowiedzi. Dlatego wypełniamy tylko fragment nazwy taga i następnie oczekujemy, aż pojawi się okieno z podpowiedziami. W chwili, gdy widoczne jest okno z podpowiedziami wybieramy pierwszą automatycznie zaznaczoną odpowiedź. Aby zasymulować naciśnięcie klawisza ENTER musimy wykorzystać moduł z listą kodów klawiszy: from selenium.webdriver.common import keys W tym module znajduje się klasa Key, w której zdefiniowane są różne kody klawiszy. My wybieramy Keys.RETURN: self.driver.find_element_by_name( title ).send_keys( Artykul testowy ) self.driver.find_element_by_name( tags ).send_keys( infor ) try: def has_response(driver): ac_results = driver.find_element_by_class_name( ac_results ) return ac_results.value_of_css_property( display )!= none # czekamy, az przyjdzie odpowiedz z lista tagow WebDriverWait(self.driver, 20).until(has_response) finally: self.driver.find_element_by_name( tags ).send_keys(keys.keys.return) Na koniec sprawdzamy, czy oby na pewno uzupełniło nam o tag, który wcześniej przygotowaliśmy: value = self.driver.find_element_by_name( tags ).get_attribute( value ).strip().strip(, ) self.assertequals(value, informacja ) Zajawkę uzupełniamy w sposób analogiczny do title: self.driver.find_element_by_name( lead ).send_keys( zajawka ) Na koniec uzupełniania formularza, trzeba się trochę pogimnastykować z TinyMCE. Używając w zwykły sposób tego edytora, tak na prawdę nie uzupełniamy pola textarea, a jedynie wypełniamy iframe umieszczany na jego miejscu. Aby przejść do odpowiedniego iframe należy wykorzystać metodę switch_to_frame i jako parametr podać nazwę iframe:

11 # TinyMCE dziala w iframe self.driver.switch_to_frame( id_text_ifr ) Dalej już pobieramy element body wewnątrze tego iframe, które w przypadku TinyMCE jest zasze tinymce i klikamy na paragraf, czyli symulujemy dokładnie to co byśmy robili kursorem: tinymce_frame = self.driver.find_element_by_id( tinymce ) textarea = tinymce_frame.find_element_by_xpath( p ) textarea.click() Dalej pozostaje już tylko zasymulować wpisywanie tekstu i przełączyć się z iframe do głownego okna: textarea.send_keys( tresc ) self.driver.switch_to_default_content() Na koniec zapisujemy i wylogowujemy się: self.driver.find_element_by_name( _save ).submit() self._logout() Teraz należy uruchomić testy. Testy selenium działają poprzez instruowanie rzeczywistej przeglądarki do wykonywania poleceń, jakie wykonywałby człowiek. Z tego powodu, musimy mieć uruchomiony serwer z działającą aplikacją oraz odpalić oddzielnie testy. Inaczej, niż to było w przypadku testów akceptacyjnych, które w całości odbywały się po stronie pythona. Do uruchomienia serwera z aplikacją wykorzystamy serwer testowy django: python manage.py testserver cms_local/fixtures/all.json W pliku cms_local/fixtures/all.json znajdują się fixtures wykorzystywane w tym teście. W przypadku MowimyJakV1 ten plik jest generowany poprzez uruchomienie merge_fixtures.py. Można by te wszystkie fixtures podać po kolei jako parametry do testserver, ale z lenistwa wolę generować jeden plik... Następnie należy uruchomić nasze testy. Testy selenium uruchamiamy za pomocą polecenia: python manage.py testselenium cms_local To polecenie zakłada, że testy selenium umieszczone są w pliku selenium_tests.py w katalogu podanej aplikacji. Domyślnie uruchamiana jest przeglądarka Firefox. Jeżeli chcecie wykorzystać inną ustawcie w pliku local_settings.py zmienną SELENIUM_WEBDRIVER na wartość Firefox, Ie lub Chrome. Jeżeli testserver działa pod adresem innym niż to należy adres tego serwera przekazać do testselenium za pomocą parametry testserver. 4 Test driven development W podejściu TDD w pierwszej kolejności pisane są testy, następnie kod. Takie podejście powoduje, że więcej pracy jest na początku tworzenia projektu, ale nie ma lawiny rzeczy do poprawy bliżej końca projektu. Tworzenie według TDD działa według schematu: 1. Weź przypadek użycia. 2. Utwórz przypadek testowy na podstawie przypadku użycia. 3. Utwórz test na podstawie przypadku testowego. 4. Uruchom test. Test wyszedł niepomyślnie? To dobrze. 5. Dopisz fragment testowanej funkcjonalności. 6. Uruchom test.

12 jeżeli test przeszedł pomyślnie, funkcjonalność jest skończona; przejdź do punktu 1 jeżeli test nie powiódł się, przejdź do punktu 5 Dzięki TDD czas nie jest tracony na przygotowanie funkcjonalności, która może się nam przydać. Robione jest tylko to, co niezbędne. W przypadku późniejszych zmian, testy zapewniają, że nie wprowadzimy błędów w istniejącej funkcjonalności. Kluczem do sprawnego stosowania TDD jest dobry opis przypadków użycia. Przypadek użycia musi zawierać przynajmniej: aktorów biorących udział warunki początkowe warunki końcowe przebieg zdarzeń Przykładowy przypadek użycia rejestracja użytkownika : aktorzy niezalogowany użytkownik warunki poczatkowe brak konta w serwisie warunki końcowe: utworzone aktywne konto w serwisie konto jest przypisane do grupy użytkownicy użytkownik jest zalogowany przebieg zdarzeń: niezarejestrowany użytkownik wchodzi na stronę rejestracji użytkownik wypełnia obowiazkowe pola: nazwa użytkownika hasło powtórz hasło adres akceptuję regulamin użytkownik klika zarejestruj system przekierowuje użytkownika na SG i wyświetla komunikat z informacją, aby użytkownik aktywował link w mailu wysłanym na jego skrzynkę użytkownik wchodzi na skrzynkę, otwiera maila i klika link aktywacyjny system aktywuje konto użytkownika i wyświetla informację o poprawnej aktywacji alternatywny przebieg zdarzeń: użytkownik wypełnia również niektóre pola nieobowiązkowe Przypadek testowy to realizacja przypadku użycia widziana już z perspektywy wyłacznie strony testującej. Pomijamy elementy, które musi wykonać system, ale sprawdzamy, czy interesujące nas efekty zaszły. Na tym etapie wiemy

13 już lub przewidujemy jak będą nazywać się poszczególne pola w formularzach, więc wykorzystujemy tę wiedzę przy opisywaniu przebiegu zdarzeń. Przykładowy przypadek testowy: aktorzy niezalogowany użytkownik warunki poczatkowe czysty system bez użytkowników, ale z danymi umożliwiającymi uruchomienie go, np. predefiniowane grupy użytkowników warunki końcowe utworzone aktywne konto użytkownika utworzony profil użytkownika konto przypisane do grupy użytkownicy wysłany 1 mail aktywacyjny użytkownik jest zalogowany przebieg zdarzeń niezarejestrowany użytkownik wchodzi na stronę rejestracji pod adresem /rejestracja/ użytkownik wypełnia pola obowiązkowe username, word, reword, , reg_accept użytkownik klika przycisk zarejestruj użytkownik trafia na SG i otrzymuje komunikat, z informacją o poprawnej rejestracji i informacją o konieczności aktywacji z maila użytkownik klika na link z maila użytkownik otrzymuje informację, że jego konto jest zarejestrowane alternatywne przebiegi zdarzeń: użytkownik błędnie wypełnia pola obowiązkowe - otrzymuje komunikat o błędzie użytkownik wypełnia pola nieobowiązkowe - na zakończenie powinny być ustawione te pola Następnie przechodzimy do tworzenia kodu samego testu. Tworzymy szablon testów akceptacyjnych: python manage.py gen_tests --template acceptance > acceptance_tests.py Ponieważ jeszcze nie mamy danych, nie wypełniamy fixtures. Jak już będą istniały zręby projektu z wypełnionymi podstawowymi kategoriami itp. będzie można wykorzystać te dane do inicjalizacji testów: class AbstractMuratorTest(AcceptanceTestCase): fixtures = [ ] Dla każdej funkcjonalności tworzymy oddzielną klase testów: class RegistrationTest(AbstractMuratorTest): def setup(self): super(registrationtest, self).setup() def teardown(self): super(registrationtest, self).teardown()

14 def test_register_basic(self): Warunki początkowe przypadku testowego definiują nam środowisko, w jakim uruchamiany musi być test. To środowisko przygotowujemy w metodzie setup. W przykładowym teście wymagane jest, aby istniała już grupa użytkownicy : def setup(self): super(registrationtest, self).setup() self.group = Group.objects.create(name=u użytkownicy ) self.user_name = testuser self.user_word = testword self.user_ = W części teardown sprzątamy wszystko po sobie. Testy w django uruchamiane są wewnątrz jednej transakcji, która jest wycofywana na zakończenie testów i bazwa wraca do stanu pierwotnego. Dlatego można pominąć czyszczenie utworzonych obiektów w bazie. Jednak jeżeli w trakcie testu wykorzystywane były jakieś inne moduły aplikacji (np. zapis plików na dysku, cache), to trzeba je przywrócić do pierwotnego statu własnie w metodzie teardown. W klasie testu powinien znaleźć się przynajmniej jeden test, odpowiadający głownemu przebiegowi zdarzeń oraz testy odpowiadające alternatywnym przebiegom. Zacznijmy od wypełnienia testu opisem przebiegu zdarzeń.: def test_register_basic(self): # niezarejestrowany użytkownik wchodzi na stronę rejestracji pod adresem /rejestracja/ # użytkownik wypełnia pola obowiązkowe username, word, reword, , reg_accept # użytkownik klika przycisk "zarejestruj" # użytkownik trafia na SG i otrzymuje komunikat, z informacją o poprawnej rejestracji i informacj # użytkownik klika na link z maila # użytkownik otrzymuje informację, że jego konto jest zarejestrowane # sprawdzenie warunków końcowych Teraz zamieniamy poszczególne kroki przebiegu zdarzeń na symulowane czynności wykonywane przez użytkownika. W pierwszej kolejności musimy wejść na stronę rejestracji.: def test_register_basic(self): # niezarejestrowany użytkownik wchodzi na stronę rejestracji pod adresem /rejestracja/ response = self.app.get( /rejestracja/ ) # użytkownik wypełnia pola obowiązkowe username, word, reword, , reg_accept # użytkownik klika przycisk "zarejestruj" # użytkownik trafia na SG i otrzymuje komunikat, z informacją o poprawnej rejestracji i informacj # użytkownik klika na link z maila # użytkownik otrzymuje informację, że jego konto jest zarejestrowane # sprawdzenie warunków końcowych Pod atrybutem app znajduje się testowana aplikacja. Wywołując na niej metodę get( /rejestracja/ ) symulujemy zapytanie, jakie wykonałaby przeglądarka użytkownika. W wyniku otrzymujemy obiekt response. Jeżeli na stronie rejestracyjnej znajduje się jeden formularz to znajdzie się on pod atrybutem form obiektu response. Wszystkie formularze dostępne są w słowniku forms. Formularz zachowuje się podobnie do słownika. Możemy wypełnić interesujące nas pola podpisując odpowiednie wartości w formularzu. Zgodnie z opisem musimy wypełnić pola username, word, reword (czyli ponownie wpisane hasło), i zaakceptować regulamin ( reg_accept ).: def test_register_basic(self): # niezarejestrowany użytkownik wchodzi na stronę rejestracji pod adresem /rejestracja/ response = self.app.get( /rejestracja/ ) # użytkownik wypełnia pola obowiązkowe username, word, reword, , reg_accept form = response.form form[ username ] = self.user_name

15 form[ word ] = self.user_word form[ reword ] = self.user_word form[ ] = self.user_ form[ reg_accept ] = True # użytkownik klika przycisk "zarejestruj" # użytkownik trafia na SG i otrzymuje komunikat, z informacją o poprawnej rejestracji i informacj # użytkownik klika na link z maila # użytkownik otrzymuje informację, że jego konto jest zarejestrowane # sprawdzenie warunków końcowych Użytkownik klika przycisk zarejestruj. Wysłanie formularza symulujemy metodą submit formularz. Metoda wywołana bez parametrów wykona domyślną akcję formularza. Jeżeli podamy parametry, to pierwszy z nich jest wartością name przycisku, a drugi jest indeksem takich przycisków (w przypadku, gdyby było więcej przycisków z takim samym name).: def test_register_basic(self): # niezarejestrowany użytkownik wchodzi na stronę rejestracji pod adresem /rejestracja/ response = self.app.get( /rejestracja/ ) # użytkownik wypełnia pola obowiązkowe username, word, reword, , reg_accept form = response.form form[ username ] = self.user_name form[ word ] = self.user_word form[ reword ] = self.user_word form[ ] = self.user_ form[ reg_accept ] = True # użytkownik klika przycisk "zarejestruj" response = form.submit( zarejestruj, 0) # użytkownik trafia na SG i otrzymuje komunikat, z informacją o poprawnej rejestracji i informacj # użytkownik klika na link z maila # użytkownik otrzymuje informację, że jego konto jest zarejestrowane # sprawdzenie warunków końcowych Po poprawnej rejestracji powinniśmy być przekierowani na SG i otrzymać komunikat z informacją Na adres XYZ został wysłany link aktywacyjny.. Aby podążać za przekierowaniem należy wywołać metodę follow na obiekcie response. Do sprawdzenia, czy na stronie znajduje się oczekiwany przez nas tekst możemy użyć atrybutu content.: def test_register_basic(self): # niezarejestrowany użytkownik wchodzi na stronę rejestracji pod adresem /rejestracja/ response = self.app.get( /rejestracja/ ) # użytkownik wypełnia pola obowiązkowe username, word, reword, , reg_accept form = response.form form[ username ] = self.user_name form[ word ] = self.user_word form[ reword ] = self.user_word form[ ] = self.user_ form[ reg_accept ] = True # użytkownik klika przycisk "zarejestruj" response = form.submit( zarejestruj, 0) # użytkownik trafia na SG i otrzymuje komunikat, z informacją o poprawnej rejestracji i informacj response = response.follow() self.assertequals(response.status_code, 200) self.asserttrue((u Na adres %s został wysłany link aktywacyjny % self.user_ ) in response.co # użytkownik klika na link z maila # użytkownik otrzymuje informację, że jego konto jest zarejestrowane # sprawdzenie warunków końcowych

16 W trakcie działania testów Django zamiast wysyłać maile umieszcza je w testowej skrzynce django.core.mail.outbox. Testowa skrzyna jest zwykła listą wysłanych maili zawierającą obiekty Message. W naszym teście sprawdzamy, czy został wysłany jeden mail, na podany przez nas adres i czy zawiera link rejestracyjny.: def test_register_basic(self): # niezarejestrowany użytkownik wchodzi na stronę rejestracji pod adresem /rejestracja/ response = self.app.get( /rejestracja/ ) # użytkownik wypełnia pola obowiązkowe username, word, reword, , reg_accept form = response.form form[ username ] = self.user_name form[ word ] = self.user_word form[ reword ] = self.user_word form[ ] = self.user_ form[ reg_accept ] = True # użytkownik klika przycisk "zarejestruj" response = form.submit( zarejestruj, 0) # użytkownik trafia na SG i otrzymuje komunikat, z informacją o poprawnej rejestracji i informacj response = response.follow() self.assertequals(response.status_code, 200) self.asserttrue((u Na adres %s został wysłany link aktywacyjny % self.user_ ) in response.co # użytkownik klika na link z maila from django.core import mail self.assertequals(len(mail.outbox), 1) activation_mail = mail.outbox[0] self.asserttrue(activation_mail.subject.startswith(u Aktywuj konto )) self.asserttrue(self.user_ in activation_mail.to) import re match = re.search( (?P<link>/aktywacja/\w+/), activation_mail.body) self.asserttrue(match is not None) link = match.groupdict()[ link ] response = self.app.get(link) # użytkownik otrzymuje informację, że jego konto jest zarejestrowane self.asserttrue((u Twoje konto zostało zarejestrowane ) in response.content) # sprawdzenie warunków końcowych Na sam koniec sprawdzamy rzecz najważniejszą - czy mamy utworzone konto i jest ono poprawne.: def test_register_basic(self): # niezarejestrowany użytkownik wchodzi na stronę rejestracji pod adresem /rejestracja/ response = self.app.get( /rejestracja/ ) # użytkownik wypełnia pola obowiązkowe username, word, reword, , reg_accept form = response.form form[ username ] = self.user_name form[ word ] = self.user_word form[ reword ] = self.user_word form[ ] = self.user_ form[ reg_accept ] = True # użytkownik klika przycisk "zarejestruj" response = form.submit( zarejestruj, 0) # użytkownik trafia na SG i otrzymuje komunikat, z informacją o poprawnej rejestracji i informacj response = response.follow() self.assertequals(response.status_code, 200) self.asserttrue((u Na adres %s został wysłany link aktywacyjny % self.user_ ) in response.co # użytkownik klika na link z maila from django.core import mail self.assertequals(len(mail.outbox), 1) activation_mail = mail.outbox[0] self.asserttrue(activation_mail.subject.startswith(u Aktywuj konto ))

17 self.asserttrue(self.user_ in activation_mail.to) import re match = re.search( (?P<link>/aktywacja/\w+/), activation_mail.body) self.asserttrue(match is not None) link = match.groupdict()[ link ] response = self.app.get(link) # użytkownik otrzymuje informację, że jego konto jest zarejestrowane self.asserttrue((u Twoje konto zostało zarejestrowane ) in response.content) # sprawdzenie warunków końcowych # czy konto istnieje i jest poprawne? try: user = User.objects.get(username=self.user_name) except User.DoesNotExist: user = None self.asserttrue(user is not None) self.assertequals(user.username, self.user_name) self.assertequals(user. , self.user_ ) # czy użytkownik jest przypisany do grupy użytkowników? self.asserttrue(self.group in user.groups.all()) # czy profil istnieje? try: profile = user.profile except Profile.DoesNotExist: profile = None self.asserttrue(profile is not None) # czy użytkownik jest zalogowany? self.asserttrue((u /logout ) in response.content) Po zakończeniu pisania testu podłączamy go do testów aplikacji w pliku tests.py.: import unittest def suite(): from cms_local.acceptance_tests import suite as acceptance_suite suite = unittest.testsuite() test_suites = [ acceptance_suite() ] for test_suite in test_suites: suite.addtest(test_suite) return suite Następnie uruchamiamy testy.: python manage.py test -v 2 <aplikacja> Testy powinny dać w rezultacie fail lub error. Jeżeli któryś test przeszedł poprawnie, a nie mamy napisanego dla niego kodu, który miałby go wykonywać, to znaczy, że ten test nic nie sprawdza. W następnej kolejności tworzymy kod, który wykonuje opisaną funkcjonalność. W chwili, gdy test przechodzi poprawnie, funkcjonalność jest zakończona (albo test jest niekompletny).

Mazowiecki Elektroniczny Wniosek Aplikacyjny

Mazowiecki Elektroniczny Wniosek Aplikacyjny Mazowiecki Elektroniczny Wniosek Aplikacyjny Generator Offline Instrukcja użytkownika Problemy z aplikacją można zgłaszad pod adresem: zgloszenie@mazowia.eu SPIS TREŚCI Zawartość 1 Instalacja Generatora

Bardziej szczegółowo

Instalacja systemu zarządzania treścią (CMS): Joomla

Instalacja systemu zarządzania treścią (CMS): Joomla Instalacja systemu zarządzania treścią (CMS): Joomla Na stronie http://www.cba.pl/ zarejestruj nowe konto klikając na przycisk:, następnie wybierz nazwę domeny (Rys. 1a) oraz wypełnij obowiązkowe pola

Bardziej szczegółowo

LeftHand Sp. z o. o.

LeftHand Sp. z o. o. LeftHand Sp. z o. o. Producent oprogramowania finansowo-księgowe, handlowego i magazynowego na Windows i Linux Instrukcja rejestracji wersji testowej programu LeftHand Ten dokument ma na celu przeprowadzić

Bardziej szczegółowo

Instrukcja zarządzania kontem przedsiębiorstwa w serwisie internetowym www.esiop.legionowo.pl

Instrukcja zarządzania kontem przedsiębiorstwa w serwisie internetowym www.esiop.legionowo.pl Instrukcja zarządzania kontem przedsiębiorstwa w serwisie internetowym www.esiop.legionowo.pl Rejestracja w serwisie: Aby utworzyć konto w serwisie, należy otworzyć w przeglądarce internetowej stronę www.esiop.legionowo.pl,

Bardziej szczegółowo

INSTRUKCJA UŻYTKOWNIKA GENERATORA WNIOSKÓW O DOFINANSOWANIE DLA WNIOSKODAWCÓW

INSTRUKCJA UŻYTKOWNIKA GENERATORA WNIOSKÓW O DOFINANSOWANIE DLA WNIOSKODAWCÓW INSTRUKCJA UŻYTKOWNIKA GENERATORA WNIOSKÓW O DOFINANSOWANIE DLA WNIOSKODAWCÓW Historia zmian dokumentu Nr wersji Data wersji Komentarz/Uwagi/Zakres zmian 1.0 2015-11-19 Utworzenie dokumentu 1 Spis treści

Bardziej szczegółowo

epuap Zakładanie konta organizacji

epuap Zakładanie konta organizacji epuap Zakładanie konta organizacji Projekt współfinansowany ze środków Europejskiego Funduszu Rozwoju Regionalnego w ramach Programu Operacyjnego Innowacyjna Gospodarka Jak założyć konto? Proces zakładania

Bardziej szczegółowo

INSTRUKCJA OBSŁUGI Proces rejestracji i logowania

INSTRUKCJA OBSŁUGI Proces rejestracji i logowania INSTRUKCJA OBSŁUGI Proces rejestracji i logowania 1 Spis treści Omówienie funkcjonalności w panelu Beneficjenta...3 Strona główna...4 Proces rejestracji i logowania...5 Ponowne wysłanie linku aktywacyjnego...6

Bardziej szczegółowo

Elektroniczna Skrzynka Podawcza

Elektroniczna Skrzynka Podawcza Elektroniczna Skrzynka Podawcza Instrukcja dla administratora Wersja 1.6.0 Przewodnik przeznaczony jest dla użytkowników, którzy administrują kontem urzędu w systemie Elektronicznej Skrzynki Podawczej.

Bardziej szczegółowo

Testowanie aplikacji. Kurs języka Ruby

Testowanie aplikacji. Kurs języka Ruby Testowanie aplikacji Kurs języka Ruby Rodzaje testów Testy jednostkowe Testy funkcjonalne Testy integracyjne Testy jednostkowe (unit tests) Testy sprawdzające pojedyncze funkcjonalności (metodę, funkcję

Bardziej szczegółowo

Podręcznik Użytkownika LSI WRPO

Podręcznik Użytkownika LSI WRPO Podręcznik użytkownika Lokalnego Systemu Informatycznego do obsługi Wielkopolskiego Regionalnego Programu Operacyjnego na lata 2007 2013 w zakresie wypełniania wniosków o dofinansowanie Wersja 1 Podręcznik

Bardziej szczegółowo

Internetowy System Zgłoszeń Postępowanie Kwalifikacyjne w Służbie Cywilnej PRZEWODNIK

Internetowy System Zgłoszeń Postępowanie Kwalifikacyjne w Służbie Cywilnej PRZEWODNIK Internetowy System Zgłoszeń Postępowanie Kwalifikacyjne w Służbie Cywilnej PRZEWODNIK Wstęp...1 Zakładanie konta...3 Aktywowanie konta...3 Wypełnianie formularza zgłoszenia...5 Drukowanie formularza zgłoszenia...6

Bardziej szczegółowo

Programowanie w Ruby

Programowanie w Ruby Programowanie w Ruby Wykład 13 Marcin Młotkowski 16 stycznia 2013 Plan wykładu Testowanie aplikacji w Ruby on Rails Testowanie modeli Testy funkcjonalne: testowanie kontrolerów Testy integracyjne Testowanie

Bardziej szczegółowo

Extranet KLUBY.PZPN.PL Instrukcja obsługi

Extranet KLUBY.PZPN.PL Instrukcja obsługi Data utworzenia : 07.03.2013 Extranet KLUBY.PZPN.PL Instrukcja obsługi utworzył : Maciej Sobol korekta : Henryk Świerczek aktualizacja 14.03.2013 strona 1/13 Spis treści TWORZENIE KONTA UŻYTKOWNIKA...2

Bardziej szczegółowo

Poradnik zetula.pl. Jak założyć konto na zetula.pl. i zabezpieczyć dane na swoim komputerze?

Poradnik zetula.pl. Jak założyć konto na zetula.pl. i zabezpieczyć dane na swoim komputerze? Poradnik zetula.pl Jak założyć konto na zetula.pl i zabezpieczyć dane na swoim komputerze? 1.Wejdź na stronę www.zetula.pl 2.Kliknij na odnośniku Utwórz nowe konto 3.Wypełnij formularz rejestracyjny. Pola

Bardziej szczegółowo

Biblioteki publiczne

Biblioteki publiczne Instrukcja pracy w programie do gromadzenia danych statystycznych w ramach projektu Analiza Funkcjonowania Bibliotek Biblioteki publiczne Spis treści 1. Użytkownicy i uprawnienia 1 2. Logowanie/rejestracja

Bardziej szczegółowo

Instrukcja obsługi systemu MEDIABIN Grudzień 2012

Instrukcja obsługi systemu MEDIABIN Grudzień 2012 Instrukcja obsługi systemu MEDIABIN Grudzień 2012 Spis treści: 1. Rejestracja i logowanie do systemu MEDIABIN.3 2. Zamieszczanie reklamy w systemie.7 2.1. Wysyłka przez link autoryzacyjny upload.10 3.

Bardziej szczegółowo

Jak złożyć wniosek o dotację Fundacji PZU? - instrukcja dla użytkownika

Jak złożyć wniosek o dotację Fundacji PZU? - instrukcja dla użytkownika Jak złożyć wniosek o dotację Fundacji PZU? - instrukcja dla użytkownika Wnioski o dotację w trybie konkursowym i pozakonkursowym składa się wyłącznie za pomocą Generatora wniosków, znajdującego się pod

Bardziej szczegółowo

Portal Personelu Medycznego. 2010 Global Services Sp. z o.o.

Portal Personelu Medycznego. 2010 Global Services Sp. z o.o. Portal Personelu Medycznego 2 Portal Personelu Medycznego Spis treści Rozdział I Wprowadzenie 3 Rozdział II Konfiguracja 4 Rozdział III Aktywacja 5 Rozdział IV Opis aplikacji 7 Rozdział V Obsługa okien

Bardziej szczegółowo

Instrukcja Użytkownika Systemu Zarządzania Tożsamością Wersja. 1.0

Instrukcja Użytkownika Systemu Zarządzania Tożsamością Wersja. 1.0 Instrukcja Użytkownika Systemu Zarządzania Tożsamością Wersja. 1.0 1 SPIS TREŚCI 1. Wstęp... 3 2. Strona logowania do Systemu Zarządzania Tożsamością... 3 3. Pierwsze logowanie do systemu... 4 4. Logowanie

Bardziej szczegółowo

Nowe funkcjonalności w wersji 3.14. 1. Automatyczne uzupełnianie zakładek w dokumentach WORD przy podpisywaniu

Nowe funkcjonalności w wersji 3.14. 1. Automatyczne uzupełnianie zakładek w dokumentach WORD przy podpisywaniu Nowe funkcjonalności w wersji 3.14 1. Automatyczne uzupełnianie zakładek w dokumentach WORD przy podpisywaniu Istnieje możliwość zdefiniowania 3 pól, które w sposób automatyczny zostaną uzupełnione w trakcie

Bardziej szczegółowo

Tworzenie konta Na stronie głównej www.witkac.pl klikamy w przycisk Zarejestruj się

Tworzenie konta Na stronie głównej www.witkac.pl klikamy w przycisk Zarejestruj się Tworzenie konta Na stronie głównej www.witkac.pl klikamy w przycisk Zarejestruj się 1. Pierwszym krokiem rejestracji jest wybranie Rejestracja organizacji składającej wnioski. 2. W miejscu E-mail podajemy

Bardziej szczegółowo

Podręcznik użytkownika Publikujący aplikacji Wykaz2

Podręcznik użytkownika Publikujący aplikacji Wykaz2 Podręcznik użytkownika Publikujący aplikacji Wykaz2 TiMSI Sp z o o ul Czapli 63, 02-781 Warszawa tel : +48 22 644 86 76, fax: +48 22 644 78 52 NIP: 951-19-39-800 Sąd Rejonowy dla mst Warszawy w Warszawie,

Bardziej szczegółowo

INSTRUKCJA SKŁADANIA OFERT W SYSTEMIE WITKAC.PL

INSTRUKCJA SKŁADANIA OFERT W SYSTEMIE WITKAC.PL INSTRUKCJA SKŁADANIA OFERT W SYSTEMIE WITKAC.PL Tworzenie konta Na stronie głównej www.witkac.pl klikamy w przycisk Zarejestruj się 1. Pierwszym krokiem rejestracji jest wybranie Rejestracja organizacji

Bardziej szczegółowo

AKTYWNY SAMORZĄD. Instrukcja użytkownika. www.as.tylda.pl

AKTYWNY SAMORZĄD. Instrukcja użytkownika. www.as.tylda.pl AKTYWNY SAMORZĄD Instrukcja użytkownika TYLDA Sp. z o.o. 65-001 Zielona Góra ul. Wazów 6a tel. 68 324-24-72 68 325-75-10 www.tylda.pl tylda@tylda.pl wersja 1.1 2014.12.01 2 Spis treści 1. Konta użytkowników...

Bardziej szczegółowo

INSTRUKCJA zakładania konta w Społecznoś ci CEO

INSTRUKCJA zakładania konta w Społecznoś ci CEO INSTRUKCJA zakładania konta w Społecznoś ci CEO KROK 1 W celu uzupełnienia formularza rejestracyjnego należy zarejestrować/zalogować się w Społeczności CEO https://spolecznosc.ceo.org.pl. Społeczność CEO

Bardziej szczegółowo

1.2 Prawa dostępu - Role

1.2 Prawa dostępu - Role Portlet Użytkownik Login Uprawnienie Rola Kontekst podmiotu Okno w serwisie portalu, udostępniające konkretne usługi lub informacje, na przykład kalendarz lub wiadomości Jest to osoba korzystająca z funkcjonalności

Bardziej szczegółowo

SUPLEMENT DO DYPLOMU

SUPLEMENT DO DYPLOMU Projekt Jednolity System Obsługi Studentów Podręcznik użytkownika aplikacji SUPLEMENT DO DYPLOMU POLITECHNIKA WROCŁAWSKA wersja 1.02 ComputerLand Wrocław, czerwiec 2005 ComputerLand Podręcznik użytkownika

Bardziej szczegółowo

ZESTAW PLATINUM. - instrukcja pobrania i instalacji certyfikatu niekwalifikowanego wersja 1.2

ZESTAW PLATINUM. - instrukcja pobrania i instalacji certyfikatu niekwalifikowanego wersja 1.2 ZESTAW PLATINUM - instrukcja pobrania i instalacji certyfikatu niekwalifikowanego wersja 1.2 Spis treści 1. ZAMÓWIENIE I ZAKUP ZESTAWU PLATINUM...3 2. ZESTAW PLATINUM INSTALACJA I AKTYWACJA PROFILU NA

Bardziej szczegółowo

https://lsi.ncbr.gov.pl

https://lsi.ncbr.gov.pl Instrukcja składania wniosku o dofinansowanie w systemie informatycznym IP na potrzeby konkursu nr 2/1.1.2/2015 INFORMACJE OGÓLNE 1. Wnioski o dofinansowanie projektu w ramach konkursu nr 2/1.1.2/2015

Bardziej szczegółowo

Instrukcja. Elektronicznej Skrzynki Podawczej

Instrukcja. Elektronicznej Skrzynki Podawczej Instrukcja Elektronicznej Skrzynki Podawczej Podstawowe funkcje elektronicznej skrzynki podawczej 1. Możliwość składania do urzędu podań w formie elektronicznej (zarówno w postaci przygotowanych przez

Bardziej szczegółowo

1. Rejestracja 2. Logowanie 3. Zgłaszanie nowego wniosku projektowego

1. Rejestracja 2. Logowanie 3. Zgłaszanie nowego wniosku projektowego 1. Rejestracja Dostęp do wniosku projektowego możliwy jest jedynie dla zarejestrowanych użytkowników. Aby zostać zarejestrowanym należy wypełnić formularz dostępny na stronie www.polskapomoc.gov.pl, a

Bardziej szczegółowo

System epon Dokumentacja użytkownika

System epon Dokumentacja użytkownika System epon Dokumentacja użytkownika Prawa autorskie tego opracowania należą do MakoLab S.A. Dokument ten, jako całość, ani żadna jego część, nie może być reprodukowana lub rozpowszechniana w jakiejkolwiek

Bardziej szczegółowo

1. Klienci... 2. 2. Logowanie i Pulpit... 9. 3. Mój profil... 10. 4. Wyniki testów... 12. 5. Moje CV... 13. 6. Kapitał Kariery...

1. Klienci... 2. 2. Logowanie i Pulpit... 9. 3. Mój profil... 10. 4. Wyniki testów... 12. 5. Moje CV... 13. 6. Kapitał Kariery... Spis treści 1. Klienci... 2 2. Logowanie i Pulpit... 9 3. Mój profil... 10 4. Wyniki testów... 12 5. Moje CV... 13 6. Kapitał Kariery... 15 6.1. Moje kwalifikacje i doświadczenie... 16 6.2. Moje kompetencje

Bardziej szczegółowo

epuap Zakładanie konta podmiotu i dodawanie usług

epuap Zakładanie konta podmiotu i dodawanie usług epuap Zakładanie konta podmiotu i dodawanie usług Projekt współfinansowany ze środków Europejskiego Funduszu Rozwoju Regionalnego w ramach Programu Operacyjnego Innowacyjna Gospodarka Jak założyć konto?

Bardziej szczegółowo

Instrukcja obsługi Zaplecza epk w zakresie zarządzania tłumaczeniami opisów procedur, publikacji oraz poradników przedsiębiorcy

Instrukcja obsługi Zaplecza epk w zakresie zarządzania tłumaczeniami opisów procedur, publikacji oraz poradników przedsiębiorcy Instrukcja obsługi Zaplecza epk w zakresie zarządzania tłumaczeniami opisów procedur, publikacji oraz poradników przedsiębiorcy Spis treści: 1 WSTĘP... 3 2 DOSTĘP DO SYSTEMU... 3 3 OPIS OGÓLNY SEKCJI TŁUMACZENIA...

Bardziej szczegółowo

epuap Archiwizacja w Osobistym Składzie Dokumentów

epuap Archiwizacja w Osobistym Składzie Dokumentów epuap Archiwizacja w Osobistym Składzie Dokumentów Projekt współfinansowany ze środków Europejskiego Funduszu Rozwoju Regionalnego w ramach Programu Operacyjnego Innowacyjna Gospodarka SPIS TREŚCI SPIS

Bardziej szczegółowo

Instrukcja dla Kandydatów na staż w Projekcie SIMS

Instrukcja dla Kandydatów na staż w Projekcie SIMS Instrukcja dla Kandydatów na staż w Projekcie SIMS Narodowe Centrum Badań i Rozwoju ul. Nowogrodzka 47a 00-695 Warszawa Warszawa, 28 czerwca 2013 r. Spis treści Rejestracja na staż instrukcja dla Kandydatów...2

Bardziej szczegółowo

Instrukcja zakładania konta pocztowego na stronie www-tz.c.pl

Instrukcja zakładania konta pocztowego na stronie www-tz.c.pl Instrukcja zakładania konta pocztowego na stronie www-tz.c.pl Krok 1 Należy wpisać w okno przeglądarki adres strony: www.tz-c.pl Na górze strony www.tz-c.pl należy odnaleźć przycisk Rejestracja (podświetlony

Bardziej szczegółowo

HOTSPOT. [ konfiguracja, rejestracja, użytkowanie ]

HOTSPOT. [ konfiguracja, rejestracja, użytkowanie ] G [ internet.partner ] HOTSPOT [ konfiguracja, rejestracja, użytkowanie ] 1.Konfiguracja połączenia bezprzewodowego W pierwszej kolejności należy upewnić się, iż komputer jest poprawnie skonfigurowany,

Bardziej szczegółowo

1. REJESTRACJA W INTERIM24.PL... 2 2. PANEL UŻYTKOWNIKA ZAWARTOŚĆ... 8 3. UZUPEŁNIENIE PROFILU... 9

1. REJESTRACJA W INTERIM24.PL... 2 2. PANEL UŻYTKOWNIKA ZAWARTOŚĆ... 8 3. UZUPEŁNIENIE PROFILU... 9 Strona1 Platforma Interim24.pl została stworzona w ramach projektu Interim management nowość w zarządzaniu wiekiem i firmą współfinansowanego przez Unię Europejską w ramach Europejski Funduszu Społecznego.

Bardziej szczegółowo

CMS Admin instrukcja administratora

CMS Admin instrukcja administratora CMS Admin instrukcja administratora system zarządzania treścią CMS Made Simple http://www.cmsmadesimple.org/ 1 Strona bazowa konferencji: http://bcc.impan.pl/test/ Link do panelu administracyjnego: http://bcc.impan.pl/test/

Bardziej szczegółowo

VENUS-BEAUTY.pl. Instrukcja obsługi procesu zamówienia

VENUS-BEAUTY.pl. Instrukcja obsługi procesu zamówienia VENUS-BEAUTY.pl Instrukcja obsługi procesu zamówienia 1 Wymagania techniczne Komputer podłączony do sieci internetowej (ze stałym łączem internetowym) System Windows z zainstalowanym oprogramowaniem antywirusowym

Bardziej szczegółowo

darmowe zdjęcia - allegro.pl

darmowe zdjęcia - allegro.pl darmowe zdjęcia - allegro.pl 1 Darmowe zdjęcia w Twoich aukcjach allegro? Tak to możliwe. Wielu sprzedających robi to od dawna i wbrew pozorom jest to bardzo proste. Serwis allegro oczywiście umożliwia

Bardziej szczegółowo

I. Informacje ogólne. Jednym z takich systemów jest Mambo.

I. Informacje ogólne. Jednym z takich systemów jest Mambo. MAMBO (CMS) I. Informacje ogólne CMS, Content Management System ("system zarządzania treścią") jest to jedna lub zestaw aplikacji internetowych pozwalających na łatwe utworzenie oraz późniejszą aktualizację

Bardziej szczegółowo

Internetowy System Składania Wniosków PISF wersja 2.2. Instrukcja dla Wnioskodawców

Internetowy System Składania Wniosków PISF wersja 2.2. Instrukcja dla Wnioskodawców Internetowy System Składania Wniosków PISF wersja 2.2 Instrukcja dla Wnioskodawców Poznań 2011 1 Spis treści 1.Dostęp do ISSW... str.3 1.1.Zakładanie konta ISSW 1.2.Logowanie do systemu ISSW 1.3. Logowanie

Bardziej szczegółowo

REJESTRACJA I PUBLIKACJA ARTYKUŁÓW W SERWISIE. www.swiat-angielskiego.pl TUTORIAL

REJESTRACJA I PUBLIKACJA ARTYKUŁÓW W SERWISIE. www.swiat-angielskiego.pl TUTORIAL REJESTRACJA I PUBLIKACJA ARTYKUŁÓW W SERWISIE www.swiat-angielskiego.pl TUTORIAL REJESTRACJA Aby zostać Redaktorem portalu i mieć możliwość publikacji swoich artykułów należy wykonać krok 1 REJESTRACJA

Bardziej szczegółowo

Instrukcja użytkownika. Instrukcja konfiguracji i obsługi modułu e-rejestracja

Instrukcja użytkownika. Instrukcja konfiguracji i obsługi modułu e-rejestracja Instrukcja użytkownika Instrukcja konfiguracji i obsługi modułu e-rejestracja Spis treści 1. Wprowadzenie... 3 1.1. Do czego służy moduł e-rejestracji?... 3 1.2. Schemat działania systemu e-rejestracja...

Bardziej szczegółowo

Instrukcja zamawiania usług systemu ASG-EUPOS za pomocą Portalu PZGiK

Instrukcja zamawiania usług systemu ASG-EUPOS za pomocą Portalu PZGiK Instrukcja zamawiania usług systemu ASG-EUPOS za pomocą Portalu PZGiK Spis treści 1 WPROWADZENIE... 3 1.1. Cel dokumentu... 3 2 OPIS FUNKCJI PORTALU PZGIK... 3 2.1 Uruchomienie portalu... 3 2.2 Zamawianie

Bardziej szczegółowo

Spis treści. Warto zapamiętać...2. Podstawy...3

Spis treści. Warto zapamiętać...2. Podstawy...3 Spis treści Warto zapamiętać...2 Podstawy...3 Moduły:...12 Aktualności...12 Fotogaleria i galeria wideo...13 Download...15 Przekierowanie...16 Formularz...17 Katalog produktów...18 Komponenty...18 Pokaz

Bardziej szczegółowo

Zakładanie konta na portalu OX.PL Uruchamianie linku aktywacyjnego Co zrobić w przypadku kiedy link nie dotarł na skrzynkę mailową Dodawanie ogłoszeń

Zakładanie konta na portalu OX.PL Uruchamianie linku aktywacyjnego Co zrobić w przypadku kiedy link nie dotarł na skrzynkę mailową Dodawanie ogłoszeń Spis treści: 1. 2. 3. 4. Zakładanie konta na portalu OX.PL Uruchamianie linku aktywacyjnego Co zrobić w przypadku kiedy link nie dotarł na skrzynkę mailową Dodawanie ogłoszeń 1. Zakładanie konta na portalu

Bardziej szczegółowo

INSTRUKCJA. rejestrowania się na szkolenie/cykl szkoleniowy oraz uzupełniania niezbędnej unijnej dokumentacji uczestnictwa w projekcie (PEFS)

INSTRUKCJA. rejestrowania się na szkolenie/cykl szkoleniowy oraz uzupełniania niezbędnej unijnej dokumentacji uczestnictwa w projekcie (PEFS) Wersja 1.3.5 INSTRUKCJA rejestrowania się na szkolenie/cykl szkoleniowy oraz uzupełniania niezbędnej unijnej dokumentacji uczestnictwa w projekcie (PEFS) Warunkiem uczestnictwa w szkoleniu (lub cyklu szkoleniowym)

Bardziej szczegółowo

INSTRUKCJA instalacji aplikacji elisty.pl

INSTRUKCJA instalacji aplikacji elisty.pl INSTRUKCJA instalacji aplikacji elisty.pl Korzystanie z usługi elisty.pl jest bardzo proste musisz tylko: - zarejestrować się utwórz i aktywuj konto użytkownika w serwisie elisty.pl - pobrać i zainstalować

Bardziej szczegółowo

Program dla praktyki lekarskiej

Program dla praktyki lekarskiej Program dla praktyki lekarskiej ErLab Instrukcja konfiguracji i obsługi Spis Treści 1. Wstęp... 2 2. Konfiguracja... 3 2.1. Serwer... 3 2.2. Laboratorium... 3 2.3. Punkt pobrań... 4 3. Wysyłanie skierowania...

Bardziej szczegółowo

INSTRUKCJA OBSŁUGI PROGRAMU PRZEDSZKOLE (CZ.1)

INSTRUKCJA OBSŁUGI PROGRAMU PRZEDSZKOLE (CZ.1) INSTRUKCJA OBSŁUGI PROGRAMU PRZEDSZKOLE (CZ.1) Uruchomienie programu Po uruchomieniu programu wyświetlane jest okno logowania, w którym wprowadza się nazwę użytkownika (opis w dalszej części instrukcji)

Bardziej szczegółowo

autor poradnika - KS Jak zamieszczać i edytować artykuły na szkolnej stronie internetowej

autor poradnika - KS Jak zamieszczać i edytować artykuły na szkolnej stronie internetowej Jak zamieszczać i edytować artykuły na szkolnej stronie internetowej adres naszej strony: www.zs3.wroc.pl logo liceum 1. Aby dodać artykuł należy się zalogować: System pokaże nazwę zalogowanego użytkownika

Bardziej szczegółowo

Instrukcja. Zarządu Cmentarzy Komunalnych w Warszawie

Instrukcja. Zarządu Cmentarzy Komunalnych w Warszawie Instrukcja Korzystania z systemu rezerwacji kremacji i pogrzebów Zarządu Cmentarzy Komunalnych w Warszawie Wersja 1.1 Zawartość Zakładanie konta użytkownika...3 Logowanie się do serwisu...5 Ekran główny

Bardziej szczegółowo

Elektroniczny Urząd Podawczy

Elektroniczny Urząd Podawczy Elektroniczny Urząd Podawczy Dzięki Elektronicznemu Urzędowi Podawczemu Beneficjent może wypełnić i wysłać formularz wniosku o dofinansowanie projektów w ramach Regionalnego Programu Operacyjnego Województwa

Bardziej szczegółowo

Dokumentacja serwisu internetowego Zespołu Szkół Technicznych w Radomiu.

Dokumentacja serwisu internetowego Zespołu Szkół Technicznych w Radomiu. Dokumentacja serwisu internetowego Zespołu Szkół Technicznych w Radomiu. Wykonanie: Radom Maj 2008 1 Serwis WWW szkoły w Internecie to obecnie najszybszy i najtańszy sposób dotarcia do największego kręgu

Bardziej szczegółowo

STARS UP. Innowacyjna platforma modelingu dzieci i współpracy z agencjami INSTRUKCJA UŻYTKOWNIKA

STARS UP. Innowacyjna platforma modelingu dzieci i współpracy z agencjami INSTRUKCJA UŻYTKOWNIKA STARS UP Innowacyjna platforma modelingu dzieci i współpracy z agencjami INSTRUKCJA UŻYTKOWNIKA 1 1 Spis treści 1. Wstęp... 3 2. Portal WWW... 3 2.1. Strona główna... 3 2.2. Rejestracja.... 5 2.2.1. Rejestracja

Bardziej szczegółowo

Instrukcja składania wniosku o dofinansowanie w systemie informatycznym IP na potrzeby konkursu nr 1/1.1.1/2015

Instrukcja składania wniosku o dofinansowanie w systemie informatycznym IP na potrzeby konkursu nr 1/1.1.1/2015 Instrukcja składania wniosku o dofinansowanie w systemie informatycznym IP na potrzeby konkursu nr 1/1.1.1/2015 INFORMACJE OGÓLNE 1. Wnioski o dofinansowanie projektu w ramach konkursu nr 1/1.1.1/2015

Bardziej szczegółowo

INSTRUKCJA REJESTRACJI ORGANIZACJI W GENERATORZE WNIOSKÓW APLIKACYJNYCH SI NAWIKUS

INSTRUKCJA REJESTRACJI ORGANIZACJI W GENERATORZE WNIOSKÓW APLIKACYJNYCH SI NAWIKUS INSTRUKCJA REJESTRACJI ORGANIZACJI W GENERATORZE WNIOSKÓW APLIKACYJNYCH SI NAWIKUS Wersja 1.1 Pro j e k t P I N A W I K U S i n n o w a c y j n a m e t o d a m o n i t o r i n g u k o n t r a k t o w a

Bardziej szczegółowo

Instrukcja pobrania i instalacji. certyfikatu niekwalifikowanego na komputerze lub karcie kryptograficznej wersja 1.2

Instrukcja pobrania i instalacji. certyfikatu niekwalifikowanego na komputerze lub karcie kryptograficznej wersja 1.2 Instrukcja pobrania i instalacji certyfikatu niekwalifikowanego na komputerze lub karcie kryptograficznej wersja 1.2 Spis treści 1. NIEZBĘDNE ELEMENTY DO WGRANIA CERTYFIKATU NIEKWALIFIKOWANEGO NA KARTĘ

Bardziej szczegółowo

Akredytacja Egzaminatora VCC. Wprowadzenie

Akredytacja Egzaminatora VCC. Wprowadzenie Akredytacja Egzaminatora VCC Wprowadzenie Egzaminator ma za zadanie przeprowadzać egzamin praktyczny, w oparciu o wytyczne i zestawy egzaminacyjne otrzymane od Akademii Regionalnej. Do jego podstawowych

Bardziej szczegółowo

Zakładanie konta użytkownika na platformie do nauczania na odległość http://moodle.ckp.edu.pl

Zakładanie konta użytkownika na platformie do nauczania na odległość http://moodle.ckp.edu.pl Projekt językowy Zakładanie konta użytkownika na platformie do nauczania na odległość http://moodle.ckp.edu.pl Zygmunt Sumiec Zespół Szkół Ogólnokształcących nr 1 w Mielcu I. Abyś mógł korzystać z platformy

Bardziej szczegółowo

DODAWANIE ARTYKUŁÓW DO STRONY INTERNETOWEJ

DODAWANIE ARTYKUŁÓW DO STRONY INTERNETOWEJ DODAWANIE ARTYKUŁÓW DO STRONY INTERNETOWEJ Aby dodać artykuł musimy się zalogować. W tym celu wchodzimy na stronę http://sp1.brzesckujawski.pl/3/administrator/, wprowadzamy swoje dane: Nazwę użytkownika,

Bardziej szczegółowo

Tworzenie dokumentów oraz prezentacji programu Młodzi Aktywiści Prezydencji przy wykorzystaniu EduTuby

Tworzenie dokumentów oraz prezentacji programu Młodzi Aktywiści Prezydencji przy wykorzystaniu EduTuby Tworzenie dokumentów oraz prezentacji programu Młodzi Aktywiści Prezydencji przy wykorzystaniu EduTuby W tym dokumencie pokażemy wam jak stworzyć dokument oraz prezentację wykorzystując do tego możliwości,

Bardziej szczegółowo

Własna strona WWW w oparciu o CMS

Własna strona WWW w oparciu o CMS Własna strona WWW w oparciu o CMS 1. Uruchomienie własnej strony WWW w oparciu o CMS Do uruchomienia własnej strony WWW, służy Aplikacja do zarządzania kontem w Uczelnianej Sieci Komputerowej ZUT, dostępna

Bardziej szczegółowo

Instrukcja korzystania z Systemu Telnom - Nominacje

Instrukcja korzystania z Systemu Telnom - Nominacje Instrukcja korzystania z Systemu Telnom - Nominacje Opis panelu użytkownika Pierwsze zalogowanie w systemie Procedura resetowania hasła Składanie nominacji krok po kroku System Telnom Nominacje znajduje

Bardziej szczegółowo

INSTRUKCJA OBSŁUGI PROGRAMU DO OBRÓBKI ZDJĘĆ NA POTRZEBY SYSTEMU EXTRANET

INSTRUKCJA OBSŁUGI PROGRAMU DO OBRÓBKI ZDJĘĆ NA POTRZEBY SYSTEMU EXTRANET INSTRUKCJA OBSŁUGI PROGRAMU DO OBRÓBKI ZDJĘĆ NA POTRZEBY SYSTEMU EXTRANET PODSTAWOWE INFORMACJE Opolski Związek Piłki Nożnej przygotowując wszelkie procedury produkcji Licencji Zawodnika, opracował program

Bardziej szczegółowo

INSTRUKCJA Panel administracyjny

INSTRUKCJA Panel administracyjny INSTRUKCJA Panel administracyjny Konto nauczyciela Spis treści Instrukcje...2 Rejestracja w systemie:...2 Logowanie do systemu:...2 Przypomnienie hasła:...2 Przypomnienie hasła:...2 Przesłanie zgłoszenia

Bardziej szczegółowo

Poradnik obsługi systemu zarządzania treścią (CMS) Concrete5. Informacje podstawowe

Poradnik obsługi systemu zarządzania treścią (CMS) Concrete5. Informacje podstawowe Poradnik obsługi systemu zarządzania treścią (CMS) Concrete5 Informacje podstawowe 1 Spis treści 1. Logowanie... 4 1.1 Widok strony po zalogowaniu... 5 1.2 Widok zaplecza... 6 2. Kopia zapasowa... 9 3.

Bardziej szczegółowo

Wersja 2.0 SERWISOWO. Instrukcja obsługi systemu. Autor: Piotr Koblak. Instrukcja obsługi sytemu SERWIS wersja 2.0 Kontakt do autora: piotr@koblak.

Wersja 2.0 SERWISOWO. Instrukcja obsługi systemu. Autor: Piotr Koblak. Instrukcja obsługi sytemu SERWIS wersja 2.0 Kontakt do autora: piotr@koblak. Instrukcja obsługi systemu SERWISOWO Autor: Piotr Koblak Wersja 2.0 Instrukcja obsługi sytemu SERWIS wersja 2.0 Kontakt do autora: piotr@koblak.pl P.P.U.H. HORUS-ENERGIA Sp. z o.o. ul. Drobiarska 43, 05-070

Bardziej szczegółowo

Instrukcja do I edycji Konkursu Systemu Informacji Przestrzennej Powiatu Cieszyńskiego pod hasłem "Znane i nieznane miejsca Ziemi Cieszyńskiej"

Instrukcja do I edycji Konkursu Systemu Informacji Przestrzennej Powiatu Cieszyńskiego pod hasłem Znane i nieznane miejsca Ziemi Cieszyńskiej Instrukcja do I edycji Konkursu Systemu Informacji Przestrzennej Powiatu Cieszyńskiego pod hasłem "Znane i nieznane miejsca Ziemi Cieszyńskiej" Ogólnie o Instrukcji Niniejszy dokument zawiera szczegółowe

Bardziej szczegółowo

Instrukcja rejestracji organizacji w podsystemie. Generator Wniosków Aplikacyjnych (GWA) Systemu Informatycznego NAWIKUS

Instrukcja rejestracji organizacji w podsystemie. Generator Wniosków Aplikacyjnych (GWA) Systemu Informatycznego NAWIKUS Instrukcja rejestracji organizacji w podsystemie Generator Wniosków Aplikacyjnych (GWA) Systemu Informatycznego NAWIKUS Opracowanie: ACK Cyfronet AGH Wersja: 1.1 (październik 2013) Strona 1 Zawartość Instrukcja

Bardziej szczegółowo

Rejestracja faktury VAT. Instrukcja stanowiskowa

Rejestracja faktury VAT. Instrukcja stanowiskowa Rejestracja faktury VAT Instrukcja stanowiskowa 1. Uruchomieni e formatki Faktury VAT. Po uruchomieniu aplikacji pojawi się okno startowe z prośbą o zalogowanie się. Wprowadzamy swoją nazwę użytkownika,

Bardziej szczegółowo

INSTRUKCJA UŻYTKOWNIKA

INSTRUKCJA UŻYTKOWNIKA INSTRUKCJA UŻYTKOWNIKA DLA UCZNIÓW JAK KORZYSTAĆ Z MODUŁU UCZNIA narzędzia informatycznego opracowanego w ramach projektu Czas zawodowców wielkopolskie kształcenie zawodowe Wielkopolski system doradztwa

Bardziej szczegółowo

INSTRUKCJA dla opiekunów SKC

INSTRUKCJA dla opiekunów SKC INSTRUKCJA dla opiekunów SKC 1 Spis treści Wstęp...3 Logowanie się do systemu...4 Poczta...5 Strona...6 Aktualności...7 Dodawanie zdjęć do aktualności...7 Galerie...8 Dodawanie zdjęć do galerii...9 Pliki...10

Bardziej szczegółowo

Instrukcja korzystania z usługi EMAIL2SMS. Wersja 2.0 [12 stycznia 2014] http://bramka.gsmservice.pl e-mail: bramka@gsmservice.pl

Instrukcja korzystania z usługi EMAIL2SMS. Wersja 2.0 [12 stycznia 2014] http://bramka.gsmservice.pl e-mail: bramka@gsmservice.pl http://bramka.gsmservice.pl e-mail: bramka@gsmservice.pl Bramka SMS: Obsługiwanych ponad 700 sieci w ponad 200 krajach Świata SMSy z własnym polem nadawcy Raporty doręczeń Obsługa długich wiadomości SMS

Bardziej szczegółowo

INSTRUKCJA zakładania konta w Społeczności CEO

INSTRUKCJA zakładania konta w Społeczności CEO INSTRUKCJA zakładania konta w Społeczności CEO KROK 1 W celu uzupełnienia formularza rejestracyjnego należy zarejestrować/zalogować się w Społeczności CEO https://spolecznosc.ceo.org.pl. Społeczność CEO

Bardziej szczegółowo

Instrukcja Integracja z istore. Wersja z 07/02/2015. Copyright Zakupteraz.pl

Instrukcja Integracja z istore. Wersja z 07/02/2015. Copyright Zakupteraz.pl Instrukcja Integracja z istore Wersja z 07/02/2015 Copyright Zakupteraz.pl 1. SPIS TREŚCI 1. SPIS TREŚCI... 2 2. WSTĘP... 3 3. OPIS PROCEDURY INTEGRACJI... 4 1.1. LOGOWANIE... 4 1.2. PANEL KLIENTA INTEGRACJA

Bardziej szczegółowo

Instrukcja. Zobacz jak w prosty sposób założyć swoją własną stronę www. ZDJĘĆ DODAWANIE INFORMACJI EDYCJA

Instrukcja. Zobacz jak w prosty sposób założyć swoją własną stronę www. ZDJĘĆ DODAWANIE INFORMACJI EDYCJA 1 Instrukcja Zobacz jak w prosty sposób założyć swoją własną stronę www. REJESTRACJA DODAWANIE INFORMACJI DODAWANIE ZDJĘĆ EDYCJA 2 KROK 1. Jak zarejestrować się na Kardiowizyta.pl? 1. Wejdź na stronę www.kardiowizyta.pl

Bardziej szczegółowo

Rejestr transakcji GIIF - instrukcja

Rejestr transakcji GIIF - instrukcja Rejestr transakcji GIIF - instrukcja 2 1 Kancelaria Notarialna - Rejestr Transakcji GIIF instrukcja Rejestr Transakcji GIIF Poniższa instrukcja przedstawia sposób przygotowania transakcji i realizację

Bardziej szczegółowo

Podręcznik Integracji

Podręcznik Integracji Podręcznik Integracji Spis treści 1. Integracja oferty... 3 1.1. Samodzielne wprowadzanie oferty sklepu... 3 1.2. Automatyczne wprowadzanie oferty z pliku XML... 3 1.3. Cyklicznie pobieranie oferty ze

Bardziej szczegółowo

Instrukcja użytkownika

Instrukcja użytkownika Instrukcja użytkownika Systemu MEWA 2.0 w ramach Regionalnego Programu Operacyjnego Województwa Mazowieckiego 2014-2020 dla wnioskodawców/beneficjentów 1. Wstęp System MEWA 2.0 jest narzędziem przeznaczonym

Bardziej szczegółowo

Facebook, Nasza klasa i inne. www.facebook.com. podstawowe informacje o serwisach społeczności internetowych. Cz. 2. Facebook

Facebook, Nasza klasa i inne. www.facebook.com. podstawowe informacje o serwisach społeczności internetowych. Cz. 2. Facebook Facebook, Nasza klasa i inne podstawowe informacje o serwisach społeczności internetowych Cz. 2. Facebook www.facebook.com Facebook to drugi najczęściej wykorzystywany portal społecznościowy w Polsce i

Bardziej szczegółowo

SYSTEM ZARZĄDZANIA RELACJAMI Z KLIENTEM CRM7

SYSTEM ZARZĄDZANIA RELACJAMI Z KLIENTEM CRM7 SYSTEM ZARZĄDZANIA RELACJAMI Z KLIENTEM CRM7 Administracja instrukcja Panel administracyjny jest dostępny z menu po lewej stronie ekranu. Użytkownicy bez uprawnień administracyjnych mają tylko możliwość

Bardziej szczegółowo

Opis działania portalu Elektroniczny Generator Wniosków (styczeń 2015)

Opis działania portalu Elektroniczny Generator Wniosków (styczeń 2015) Opis działania portalu Elektroniczny Generator Wniosków (styczeń 2015) Wymagania odnośnie przeglądarki Internet Explorer: wersja równa lub wyższa od IE9, wyłączony tryb zgodności, wyłączone blokowanie

Bardziej szczegółowo

1. Aby na stronie ZS umieścić artykuł np. news, wymagania edukacyjne, konspekt trzeba założyć sobie konto, w tym celu naciskamy

1. Aby na stronie ZS umieścić artykuł np. news, wymagania edukacyjne, konspekt trzeba założyć sobie konto, w tym celu naciskamy 1. Aby na stronie ZS umieścić artykuł np. news, wymagania edukacyjne, konspekt trzeba założyć sobie konto, w tym celu naciskamy Następnie wypełniamy pola oznaczone * (hasło musi mieć co najmniej 6 znaków

Bardziej szczegółowo

Funkcje dodatkowe. Wersja 1.2.1

Funkcje dodatkowe. Wersja 1.2.1 Funkcje dodatkowe Wersja 1..1 Dokumentacja SMSAPI (https) FUNKCJE DODATKOWE z dnia 1.06.01 Wersja 1..1 SPIS TREŚCI 1.Wprowadzenie 1.1 Adresy URL do połączenia z aplikacją dla funkcji zarządzania kontem

Bardziej szczegółowo

Instrukcja użytkownika STUDENTA AKADEMICKIEGO SYSTEMU ARCHIWIZACJI PRAC

Instrukcja użytkownika STUDENTA AKADEMICKIEGO SYSTEMU ARCHIWIZACJI PRAC Instrukcja użytkownika STUDENTA AKADEMICKIEGO SYSTEMU ARCHIWIZACJI PRAC Strona 1 z 14 Akademicki System Archiwizacji Prac (ASAP) to nowoczesne, elektroniczne archiwum prac dyplomowych zintegrowane z systemem

Bardziej szczegółowo

Wymagania systemowe po stronie serwera

Wymagania systemowe po stronie serwera 1 z 6 30-06-2011 11:15 Specyfikacja Oprogramowanie do zarządzania wnioskami poręczeniowymi Szczegółowe funkcjonalności oprogramowania do zarządzania wnioskami poręczeniowymi Spis treści 1 Wstęp 2 Wymagania

Bardziej szczegółowo

Instrukcja obsługi Zaplecza epk dla Pracowników Instytucji w zakresie zarządzania danymi szczegółowymi dotyczącymi sposobu realizacji procedury

Instrukcja obsługi Zaplecza epk dla Pracowników Instytucji w zakresie zarządzania danymi szczegółowymi dotyczącymi sposobu realizacji procedury Instrukcja obsługi Zaplecza epk dla Pracowników Instytucji w zakresie zarządzania danymi szczegółowymi dotyczącymi sposobu realizacji procedury 1 Spis treści: 1 WSTĘP... 3 2 DOSTĘP DO SYSTEMU... 3 3 INSTYTUCJA

Bardziej szczegółowo

Skrócona instrukcja obsługi moduł lekarza

Skrócona instrukcja obsługi moduł lekarza Skrócona instrukcja obsługi moduł lekarza 1. Pierwszym krokiem, jaki musimy wykonać jest zalogowanie się do systemu. W tym celu wchodzimy na stronę NFZ-tu, wybieramy z lewego menu opcję Recepty/leki, następnie

Bardziej szczegółowo

Obszar Logistyka/Zamówienia Publiczne

Obszar Logistyka/Zamówienia Publiczne Obszar Logistyka/Zamówienia Publiczne Plany Zamówień Publicznych EG_LOG Plany Zamówień Publicznych Instrukcja Użytkownika. Instrukcja użytkownika 2 Spis treści SPIS TREŚCI... 3 NAWIGACJA PO SYSTEMIE...

Bardziej szczegółowo

Integracja programów LeftHand z systemem Skanuj.to

Integracja programów LeftHand z systemem Skanuj.to Integracja programów LeftHand z systemem Skanuj.to Niniejsza instrukcja zawiera praktyczny opis działań, które należy wykonać aby zintegrować usługę automatycznego skanowania i rozpoznawania dokumentów

Bardziej szczegółowo

Instrukcja użytkownika. Aplikacja dla WF-Mag

Instrukcja użytkownika. Aplikacja dla WF-Mag Instrukcja użytkownika Aplikacja dla WF-Mag Instrukcja użytkownika Aplikacja dla WF-Mag Wersja 1.0 Warszawa, Kwiecień 2015 Strona 2 z 13 Instrukcja użytkownika Aplikacja dla WF-Mag Spis treści 1. Wstęp...4

Bardziej szczegółowo

WWW.ICOMFORT.PL e-mail: biuro@icomfort.pl tel.061 622 75 50 fax. 061 622 76 50

WWW.ICOMFORT.PL e-mail: biuro@icomfort.pl tel.061 622 75 50 fax. 061 622 76 50 I. WIADOMOŚCI WSTĘPNE... 2 1. Podłączenie czytnika ekey module FS IN... 2 2. Podłączenie czytników i elektrozamka... 2 3. Jak poprawnie korzystać z czytnika... 3 4. Jak nie korzystać z czytnika... 3 II.

Bardziej szczegółowo