Archiwum kategorii: Testowanie

Konferencja SkładQA 2017 – jak było?

Jakiś czas temu, bo 20 marca 2017, udało mi się zajrzeć na tegoroczną edycję testerskiej konferencji SkładQA. O samej SkładQA pisałam przy okazji omawiania wiosennych wydarzeń w IT.

Logo SkładQA

Zespół KraQA nie zawiódł i tym razem. Profesjonalne prowadzenie konferencji, świetnie wybrana lokalizacja (obszerna hala Starej Zajezdni, która pomieści naprawdę sporo osób), dobre zaplecze techniczne (nagłośnienie itd.), ciekawi prelegenci i przekrój  różnorodnych tematów. Organizatorzy to profesjonaliści i to widać.

Prezentacje na SkładQA

Merytorycznie mogę odnieść się jedynie do trzech ostatnich prezentacji:

  • Marcin Żołna & Karol Pękała – How to become a cybersecurity hero. Z początku myślałam, że ta prezentacja skierowana jest raczej do początkujących. Ale na szczęście nie tylko. Wyniosłam z niej coś dla siebie – wymienione zostało narzędzie OWASP, któremu z pewnością przyjrzę się bliżej.
  • Wiktor Żołnowski – Pragmatyczny QA. Na którejś edycji Quality Excites miałam możliwość wysłuchania prelekcji Wiktora, kiedy jeszcze zajmował się wdrożeniami Agile. Tym razem zaprezentował model CYNEFIN. Nawet nie wiedziałam, że tak nazywa się ten diagram (o którym pisałam zresztą we wpisie Dla kogo Scrum?, lecz w formie dużo bardziej uproszczonej). Warto zatem chodzić na konferencje, zawsze można się czegoś ciekawego dowiedzieć:)
  • Michał Sajdak – Hackowanie aplikacji webowych na żywo – wybrane przypadki. Ta prezentacja totalnie mnie zachwyciła. Prawdziwy show. Niektóre „sztuczki” pobieżnie znałam z artykułów na Sekuraku, ale zobaczenie jak to wygląda na żywo – naprawdę robi wrażenie.

Podsumowując, było to naprawdę dobrze spędzone, INSPIRUJĄCE popołudnie. Chcę więcej i polecam wszystkim:)

Ciekawe (i darmowe!) konferencje – wiosna 2017

Pracując w branży informatycznej warto być na bieżąco. Trendy zmieniają się jak w kalejdoskopie, co rusz na rynek wchodzą nowe frameworki i narzędzia. Całkiem niezły sposób na trzymanie ręki na pulsie to konferencje i wykłady. Wiele z nich jest darmowych!

Konferencje wiosna 2017

Foto: moje, 2017

Gdzie zatem warto zawitać wiosną 2017?

Marzec – konferencje:

  • 16 – 18 marca (czwartek – sobota) – Studencki Festiwal Informatyczny, Kraków. Wstęp: free. Trzy dni najróżniejszych wykładów i warsztatów.
  • 17 marca (piątek)IT Academic Day 2017, Bielsko-Biała. Wstęp: free.
  • 20 marca (poniedziałek)SkładQA, Kraków. Wstęp: free. Niezależna konferencja testerska organizowana przez KraQA. Wielokrotnie bywałam na prelekcjach w ramach KraQA, toteż myślę, że z czystym sumieniem mogę polecić. Nie tylko testerom 🙂

Kwiecień:

  • 3 kwietnia (poniedziałek) – 4Developers 2017, Warszawa. Wstęp: 75zł (studenci) / 400zł / 450zł. Mnóstwo ścieżek tematycznych, od architektury aplikacji po gamedev i front-end.
  • 22 kwietnia (sobota)Lubelskie Dni Informatyki, Lublin. Wstęp: free.
  • 22 kwietnia (sobota)DEVCROWD, Szczecin. Wstęp: free. Dla entuzjastów Javy. Szczegółowego programu jeszcze brak.

Maj:

  • 11 maj (czwartek) – WeBB MeetUp, Bielsko-Biała. Wstęp: free. Studencka mini-konferencja, kilka całkiem ciekawych tematów, raczej dla początkujących.
  • 13 maj (sobota) – Kernel: Don’t panic, Kraków. Wstęp: free. Nieduża konferencja studencka poświęcona w tym roku tematyce bezpieczeństwa w IT.
  • 16 maj (wtorek), Kongres Bezpieczeństwa Sieci, Wrocław. Wstęp: free.
  • 17-19 maj (środa – piątek)InfoShare, Gdańsk. Wstęp: free. Kilka ścieżek tematycznych, nie tylko technicznych, ale także odnośnie tworzenia własnej firmy.
  • 26-27 maj (piątek – sobota) – BEST IT Festival 2017, Wrocław. Wstęp: free. Studencki festiwal poświęcony tematyce gier.
  • 27 maj (sobota), ngSummit 2017, Wrocław. Wstęp: free. Dla entuzjastów Angulara!

Czerwiec:

  • 23-24 czerwca (piątek – sobota) – Quality Excites 2017, Gliwice. Wstęp: free. Agendy jeszcze brak, niemniej konferencję bardzo polecam, nie tylko testerom!

Skąd natomiast czerpać informacje o wydarzeniach? Niezłym źródłem jest Facebook, blogi, LinkedIn. Jest również kilka aplikacji dedykowanych: Meetup, który uczy się polecać wydarzenia na podstawie historii użytkownika, Evenea umożliwiająca także zapisy albo kalendarz Crossweb.

Kiedy skończyć testowanie

Testowanie oprogramowania to proces teoretycznie nieskończony. Zawsze można znaleźć warunki lub ścieżki, które nie zostały jeszcze sprawdzone.

Kowal bezskrzydły. Foto: moje, 2016

W warunkach biznesowych proces testowania jest jednak ograniczony (czasem, budżetem, możliwościami). Często pojawia się pytanie: kiedy można zakończyć testowanie, uznając że produkt jest dostatecznie dobrze sprawdzony?

Odpowiedź nie jest jednoznaczna – zakończenie testów jest umowne i zależy od spełnienia jakiegoś warunku:

  • Budżet – kwestia dość prosta.
  • Czas – może produkt „pudełkowy” ze sztywną datą wydania, może wytwarzany w modelu kaskadowym (a może w Scrumie), może trzeba gonić konkurencję, a może po prostu osoba decyzyjna stwierdza, że czas na testy ubiegł – kończymy.
  • Metryki. Tu zaczyna się robić ciekawie, o czym w dalszej części wpisu.

Ciekawy materiał na ten temat od IBM:
[ftp://public.dhe.ibm.com] – kopia [IBM_Kiedy_mozna_zakonczyc_testowanie].

Metryki

Metryki są pewnym założeniem i są to wartości dość względne. Mogą zostać ustalone na początku testowania. Niektóre z nich to np.:

  • Wykonanie założonego procentu przypadków testowych zakończyło się sukcesem (nie zostały wykryte błędy).
  • Ilość wykrytych błędów (lub krzywa wykrywanych błędów) spadła poniżej założonego progu.
  • Pokrycie funkcjonalności testami (manualnymi, automatycznymi) osiągnęło założony zakres, np.:
    • przetestowano ręcznie najważniejszą ścieżkę,
    • pokrycie testami jednostkowymi na poziomie 90%.

Narzędzia do automatyzacji aplikacji desktopowych

Jakich narzędzi można użyć do automatyzacji aplikacji desktopowych, działających w systemie Windows (Windows Forms, WPF)?

Na szczęście istnieje wiele rozwiązań, dzięki którym pisanie testów automatycznych może być całkiem skuteczne. Poniżej kilka propozycji. Większość z nich jest darmowa – poza licencją na Visual Studio (w przypadku pierwszej grupy, opartej o .NET Framework lub rozwiązań Microsoftu).

Inspect - świetne narzędzie pomagające w automatyzacji aplikacji desktopowych

Zapraszam do lektury:

Czytaj dalej

How to run tests in Visual Studio?

How to run tests (unit tests, Selenium or any other in Microsoft Visual Studio? This is quite simple.

My instruction is for Visual Studio Professional 2015.

  1. First – choose test runner (nUnit, MSTest, xUnit or other). I choosed nUnit, because of its popularity.
  2. Install a test runner. I use NuGet to manage dependencies in my projects. To install nUnit, click (right) on project and click „Manage NuGet Packages”, search „nUnit” and install it. A current version number is 3.4.1.
  3. Prepare a simple test. Remember about:
    • making class containing tests public (public class TestClass{})
    • making test methods public (public void TestMethod(){})
    • marking test methodss with [Test] attribute.
  4. Prepared test should be visible in Test Explorer (open this window from menu: Test -> Windows -> Test Explorer). If Test Explorer window is empty and after building project Visual Studio doesn’t display any tests, you need to install nUnit Test Adapter (version 3.x is compatible with nUnit 3.x). To install nUnit Test Adapter, choose „Extensions and Updates” from „Tools” menu, search for „nUnit Test Adapter” and install it. After rebooting Visual Studio and rebuilding project, tests should be displayed in Test Explorer Window.

Prasówka #3 – Linki o testowaniu (i nie tylko;))

Garść linków – głównie są to linki o testowaniu. Ale nie tylko! Zapraszam do lektury.

linki o testowaniu

Nasosznik trzęś. Foto: moje, 2017

  1. Forum Forum Stowarzyszenia Jakości Systemów Informatycznych, gdzie poruszane są różne tematy o jakości oprogramowania i testowaniu: http://sjsi.org/forum/index.php
  2. Blog o testowaniu: http://www.testingminded.com/
  3. Bardzo duży zbiór różnych materiałów dotyczących testowania: https://github.com/ligurio/awesome-software-quality
  4. WebInject, jedno z darmowych narzędzi do automatycznego testowania, podobne nieco do JMetera. Jeśli dobrze pamiętam, próbowałam się nim bawić, ale „chemii między nami nie było”, zwłaszcza że nie chciało współpracować z proxy;) http://www.webinject.org/ . Ale to było dawno (2014) i nieprawda. Może już zostało naprawione 🙂
  5. Ciekawy artykuł „Signs that you’re a bad programmer”https://sites.google.com/site/yacoset/Home/signs-that-you-re-a-bad-programmer .
  6. Przykład tzw. Yoda condition:
    !"".equals(id)
    co stanowi krótszą formę od:
    !(id == null || id.equals(""))
  7. Artykuł o equals w Java: http://www.jakubiak.eu/2007/06/prawdy-o-equals.html.
  8. Zbiór linków o wzorcach projektowania stron, w kontekście usabilityhttp://www.webusability.pl/2008/05/13/design-patterns-czyli-wzorce-projektowe/.
  9. I na deser – fajne przykłady animowanych wykresów stworzonych w TeX: http://tex.stackexchange.com/questions/158668/nice-scientific-pictures-show-off.

Page Object Pattern + Fluent Interface

Page Object Pattern jest jednym z częściej używanych wzorców w testach interfejsowych. Nie bez powodu – pozwala świetnie odzwierciedlić architekturę aplikacji w testach, zapobiega także niepotrzebnemu powtarzaniu kodu, jeżeli pewne struktury powtarzają się w wielu miejscach aplikacji (na przykład wspólne dla każdej podstrony menu).

Jeden Page Object powinien odwzorowywać jeden logiczny fragment aplikacji. Posługując się przytoczonym wyżej przykładem menu, klasa „Menu” będzie zawierać wszystkie pozycje w menu (a jeśli ma ono strukturę hierarchiczną, także i zagnieżdżone, kolejne Page Objecty).

Każda metoda w klasie udostępnia oferowane przez obiekt usługi (np. rozwinięcie i zwinięcie podmenu, wybór pozycji itd.).

W tym wzorcu metoda zawsze zwraca Page Object (z czego korzysta kolejny wzorzec: Fluent Interface). Dzięki temu w testach można stworzyć bardzo elegancko wyglądającą ścieżkę wędrówki pomiędzy podstronami.

Z pozoru te same akcje mogą zwracać różne wyniki, np. dwie metody:


public AdminPage LoginWithCorrectCredentials(string userName, string password);

public ErrorPage LoginWithIncorrectCredentials(string userName, string password);

Asercje wykonywane są w testach, nie w klasach Page Objectowych.

Sterownik (WebDriver) może być przekazywany w konstruktorze Page Object.

Dobre praktyki w testach Selenium

Selenium jest narzędziem pozwalającym pisać testy automatyczne aplikacji webowych. Dzięki szerokiej gamie możliwości, sporej społeczności i kompatybilności od lat cieszy się dużą popularnością. Na oficjalnej stronie można znaleźć wiele materiałów: https://www.seleniumhq.org/.

Kawa i Selenium. Czemu nie?

Foto: moje, 2016

Dobre praktyki w automatycznych testach w Selenium:

  • Podstawowa zasada – używanie aktywnego czekania (WebDriverWait, wait.Until, ImplicitlyWait itd.) zamiast Thread.Sleep, który spowalnia testy, nie dając jednocześnie gwarancji, że zastosowana przerwa jest odpowiednio długa (jest wiele artykułów na ten temat w sieci).
  • Wyszukiwanie elementów na stronie za pomocą selektorów CSS (By.CssSelector) lub identyfikatorów ID lub name (By.Id, By.Name) – taka metoda jest o niebo szybsza niż wyszukiwanie przez XPATH.
  • Używanie wzorca Page Object.

Dobre praktyki w testach automatycznych

Czytaj dalej

Pobieranie UDID podłączonego iPhone

Jednym z wymaganych ustawień Appium jest UDID – Unique Device Identifier.

Pobieranie numeru UDID podłączonego urządzenia z systemem iOS (iPhone/iPad…) jest możliwe za pomocą komendy:

udid=$(system_profiler SPUSBDataType | grep "Serial Number: " | tail -c 41)

Oczywiście może różnić się w zależności od systemu. Testowana była na OS X 10.10.

Tak pobraną wartość można przekazać do skryptu uruchamiającego serwer Appium.