Blog FitNesse - framework pre akceptačné testovanie

FitNesse – framework pre akceptačné testovanie

FitNesseTento článok je venovaný použitiu vlastných fixtures do Fitnesse frameworku pre akceptačné testovanie. Na účely tohto článku otestujeme web http://www.priklady.eu, ktorý bude reprezentovať  “web service” ponúkajuci  HTML. V ďalšom článku otestujeme public webové služby voľne dostupné na webe.

Čo je Fitnesse testing framework

Fitnesse je automatický testovací framework na akceptačné testovanie. Akceptačné testy sa vykonávajú na overenie funkčnosti implementovaného systému pred samotným začatím ostrej, alebo skúšobnej prevádzky. Vopred sa stanovuje vzorový príklad, prípadne skúšobné naplnenie nového IS požadovanými dátami. Uskutoční sa spracovanie skúšobného príkladu v dohodnutom rozsahu, prípadne doplnenie novej aplikácie o niektoré čiastkové požiadavky a nastavenia. Fitnesse je zároveň wiki web server, ktorý umožňuje spoluprácu medzi testermi v tíme.

Fitnesse je aj integračný nástroj. To znamená, že poskytuje metódy ako automaticky určiť, že aplikácia funguje správne. Nie je určený na testy  krásneho užívateľského rozhrania, so všetkými jeho efektnými CSS-kami, Ajax-volaniami, farbičkami-čarbičkami, ale na testovanie „mozgov aplikácií“.

Zhrnutie

Fitness je nástroj na automatické testovanie softvéru. Z iného pohľadu, fitness je open-source, ktorý uľahčuje prácu softvérovým tímom. A to hlavne:

  • Definovať akceptačné testy pomocou wiki-webových stránok, ktoré obsahujú jednoduché tabuľky vstupov a očakávaných výstupov. Spustiť tieto testy a kontrolu výsledkov.
  • Fitness je zároveň webový server. Nevyžaduje žiadnu konfiguráciu alebo nastavenie. Stačí spustiť server a použiť obľúbený Internetový prehliadač na písanie a spúšťanie testov.

Začíname

  1. Download FitNesse build-u “fitnesse-standalone.jar”
  2. Spustiť ako administrátor: java -jar fitnesse-standalone.jar -p 2222

02-FitNesse

Štruktúra Fitnesse projektu

03-FitNesse

Common facade

PrikladyEuClient.java (bude reprezentovať http-klienta, ktorý stiahne HTML obsah zo zadanej URL):

package com.rhe.fitnesse.repositoryFacade.common;
import io.mola.galimatias.GalimatiasParseException;
import io.mola.galimatias.URL;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import org.apache.http.HttpEntity;
import org.apache.http.HttpHost;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.protocol.BasicHttpContext;
import org.apache.http.protocol.HttpContext;
import org.apache.http.util.EntityUtils;
@SuppressWarnings("deprecation")
public class PrikladyEUClient {
    public static String getResponse(String url) throws Exception {
        DefaultHttpClient defaultHttpClient = new DefaultHttpClient();     
        java.net.URL parseURL = new java.net.URL(url);
        HttpHost httpHost = new HttpHost(parseURL.getHost());
        byte[] responseBody = null;
        try {
            URL _url = URL.parse(url);
            URI javaURI = _url.toJavaURI();
            HttpGet httpget = new HttpGet(javaURI);
            HttpContext httpContext = new BasicHttpContext();
            HttpResponse response = defaultHttpClient.execute(httpHost, httpget, httpContext);
            HttpEntity entity = response.getEntity();
            responseBody = EntityUtils.toByteArray(entity);
            if (response.getStatusLine().getStatusCode() != HttpStatus.SC_OK) {
                throw new Exception("Return status not OK");
            }          
            defaultHttpClient.close();         
        } catch (IOException e) {
            e.printStackTrace();
        } catch (GalimatiasParseException e) {
            e.printStackTrace();
        } catch (URISyntaxException e) {
            e.printStackTrace();
        }
        return new String(responseBody);
    }  
}

Facade

WebFacade.java reprezentuje interface, ktorý stiahne webový kontent:

package com.rhe.fitnesse.repositoryFacade; 
public interface WebFacade {
    public String getInfo(String url);
}

Priklady_eu.java implementuje WebFacade, slúži na získanie webového kontentu z danej URL:

package com.rhe.fitnesse.repositoryFacade;
import com.rhe.fitnesse.repositoryFacade.common.PrikladyEUClient;
public class Priklad_eu implements WebFacade {
    @Override
    public String getInfo(String url) {
        String sRet = null;
        try {
            sRet = PrikladyEUClient.getResponse(url);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return sRet;
    }
}

Fixture

CheckPrikladyMainPage.java – obsahuje všetky skripty použiteľné vo Fitness front end:

package com.rhe.fitnesse.fixtures;
import com.rhe.fitnesse.repositoryFacade.Priklad_eu;
import com.rhe.fitnesse.repositoryFacade.WebFacade;
public class CheckPrikladyMainPage {
    private boolean contains;
    private String url;
    private String text;
    public boolean containsWelcomeText() {
        return contains;
    }
             
    public void setUrl(String url) {
        this.url = url;
    }
    public void setText(String text) {
        this.text = text;
    }
    public boolean containsText() {
        WebFacade p = new Priklad_eu();
        String sXML = p.getInfo(url);
        System.out.println(sXML);
        this.contains = sXML.contains(this.text);
        return this.contains;
    }
     
    public boolean isRomanOnPage(String url) {
        WebFacade p = new Priklad_eu();
        String sXML = p.getInfo(url);
        System.out.println(sXML);
        this.contains = sXML.contains("Roman");
        return this.contains;
    }
     
    public boolean isRomanThere() {
        return this.contains;
    }
}

Spustenie z Eclipse

main.java – slúži na otestovanie bez použitia Fitnesse front end:

public static void main(String[] args) {
    WebFacade p = new Priklad_eu();         
    String sXML = p.getInfo("http://www.priklady.eu");
    System.out.println(sXML);
}

Vytvorenie balíčka (jar) pre použitie vo Fitnesse front-end

04-FitNesse

05-FitNesse

 

06-FitNesse

Fitnesse front-end

07-FitNesse

Zdrojový text vo Fitnesse front-end

# ============================
# == TEST CASE: Priklady.eu ==
# ============================
!define TEST_SYSTEM {slim}
!path c:/Users/rhe/Desktop/TestDoc/fixtures.jar
!path c:/Users/rhe/Desktop/TestDoc/fixtures_lib/*
|import                   |
|com.rsd.fitnesse.fixtures|
!define url {http://www.priklady.eu}
!define text {Priklady.eu - matematika, fyzika}
 
!|CheckPrikladyMainPage      |
|url   |text   |containsText?|
|${url}|${text}|true         |
 
!3 Check Priklady Main Page
!|Script         |CheckPrikladyMainPage|
|is Roman on page|${url}               |
|check           |isRomanThere  |true  |

Výsledok testu vo Fitnesse front-end

08-FitNesse

V nasledujúcom článku otestujeme public webové služby:


Dobrý článok? Chceš dostávať ďalšie?

Už viac ako 6 200 ITečkárov dostáva správy e-mailom. Nemusíš sa báť, nie každé ráno. Len občasne.



Súhlasím so spracovaním mojich osobných údajov. ( Viac informácií. )

Tvoj email neposkytneme 3tím stranám. Posielame naňho len informácie z robime.it. Kedykoľvek sa môžeš odhlásiť.

Roman Hesteric
Roman Hesterichttp://www.priklady.eu
Pracuje ako QA Architekt v Swiss Re. Predtým CTO pre Java a .Net aplikácie. Autorizovaný spolupracovník na projekte Canoo Webtest. Držiteľ certifikátov MCTS a MCPD pre SharePoint server. V IT pracuje 25 rokov, od starého dobrého Turbo Pascalu od Borlandu, cez Javu, až po C#. Administrátor matematického portálu www.priklady.eu

Senior Python Developer/ka

Úspešný americký startup, ktorý umožňuje vývojárom vytvárať aplikácie a rozhrania API bez akýchkoľvek časových, priestorových a cloudových architektúr hľadá...

C#/.NET & React Fullstack Developer/ka

FullStack Developer/ka | Vývoj nového produktu | Security Pracoval/a by si na TPP s platom 2400 - 2800 EUR/brutto mesačne...

Data Visualization Senior Analyst

Pre medzinárodnú IT spoločnosť hľadáme Senior Data Visualization Analyst. Pracujú na veľkých projektoch pre top 100 svetových spoločností. Ide o...

Splunk Data Engineer

Chcel by si dlhodobú spoluprácu, dobré pracovné podmienky, seriózny prístup? Medzinárodná IT spoločnosť hľadá Splunk Data Engineera. Pracujú na veľkých...

Senior Java Developer

Úspešný americký startup, ktorý umožňuje vývojárom vytvárať aplikácie a rozhrania API bez akýchkoľvek časových, priestorových a cloudových architektúr hľadá...

Backend/Node.js Developer / REMOTE

Pre mladý startup vyvíjajúci softvér, ktorý prispieva hráčom k lepšiemu zážitku z hrania, hľadáme Backend/Node.js Developera. Založili ho dvaja...

Julia Developer / REMOTE

Projekt pre nadšencov Julia a machine learning. Pre spoločnosť, ktorá používa matematické metódy a metódy AI / ML na...

Máte vo firemných stretnutiach chaos? Česká firma našla riešenie, teraz s aplikáciou dobývajú svet

Vyvíjajú ju v Českej republike, pracujú na nej aj hendikepovaní kolegovia a používajú ju firmy v rôznych krajinách sveta....

Ondrej Kubovič – Digitálna bezpečnosť a riziká na internete

Tentokrát sme sa porozprávali s Ondrejom Kubovičom, špecialistom v spoločnosti ESET na populárnu tému digitálnej bezpečnosti. Ondrej nám uviedol...

Slovenskí tvorcovia hier dosiahli v roku 2020 rekordný obrat 72 miliónov EUR, zamestnávali 870 ľudí

Slovenský herný priemysel nezastavila ani pandémia, v roku 2020 opäť výrazne rástol. Podľa štatistík Slovak Game Developers Association prekonal...

Čítaj ďalej:

Dobrý článok? Chceš dostávať ďalšie?

Už viac ako 6 200 ITečkárov dostáva správy e-mailom. Nemusíš sa báť, nie každé ráno. Len občasne.

Súhlasím so spracovaním mojich osobných údajov. ( Viac informácií. )

Tvoj email neposkytneme 3tím stranám. Posielame naňho len informácie z robime.it. Kedykoľvek sa môžeš odhlásiť.