JavaScript tesztelési módszerek BRAUN PATRIK: JAVASCRIPT TESZTELÉSI MÓDSZEREK 1

Hasonló dokumentumok
SZERVER OLDALI JAVASCRIPT. 12. hét Unit és integrációs tesztek, mocha, assert struktúrák, TDD / DBB

Excel vagy Given-When-Then? Vagy mindkettő?

Széchenyi István Egyetem

SZERVER OLDALI JAVASCRIPT. 3. hét Javascript nyelvi elemek

USER MANUAL Guest user

RIA Rich Internet Application

Java-ról Kotlinra. Ekler Péter AutSoft BME AUT. AutSoft

Szálkezelés. Melyik az a hívás, amelynek megtörténtekor már biztosak lehetünk a deadlock kialakulásában?

Webes alkalmazások fejlesztése 8. előadás. Webszolgáltatások megvalósítása (ASP.NET WebAPI)

Google Web Toolkit. Elek Márton. Drótposta kft.

SZERVER OLDALI JAVASCRIPT. 7. hét Promise, async, error rst callback, grunt

Csatlakozás a BME eduroam hálózatához Setting up the BUTE eduroam network

A legalacsonyabb szintű tesztelés. A programot felépítő egységek tesztelése Unit: egy rendszer legkisebb önálló egységként tesztlehető része.

WEBFEJLESZTÉS 2. ADATBÁZIS-KEZELÉS, OSZTÁLYOK

Verziókezelt konfigurációmanagement++ Pásztor György, SZTE Klebelsberg Könyvtár

Szakmai továbbképzési nap akadémiai oktatóknak december 14. HISZK, Hódmezővásárhely / Webex

12.óra jquery Framework #1. Gyimesi Ákos

Using the CW-Net in a user defined IP network

Biztonságos PHP a gyakorlatban

Kompozit alkalmazások fejlesztése. IBM WebSphere Portal Server

Windows hálózati adminisztráció segédlet a gyakorlati órákhoz

Hogyan használja az OROS online pótalkatrész jegyzéket?

Travel Getting Around

ESZKÖZTÁMOGATÁS A TESZTELÉSBEN

Java és web programozás

S z á m í t ó g é p e s a l a p i s m e r e t e k

Biztonság java web alkalmazásokban

Felhasználóbarát eszközök és élmények. Üzleti szintű megoldások

Windows hálózati adminisztráció segédlet a gyakorlati órákhoz

T Á J É K O Z T A T Ó. A 1108INT számú nyomtatvány a webcímen a Letöltések Nyomtatványkitöltő programok fülön érhető el.

Symfony kurzus 2014/2015 I. félév. Security: authentication, authorization, user provider, role-ok, access control, FOS user bundle

Teszt topológia E1/1 E1/0 SW1 E1/0 E1/0 SW3 SW2. Kuris Ferenc - [HUN] Cisco Blog -

Több app. Egy kódbázis

Symfony kurzus 2014/2015 I. félév. Controller, Routing

MicroSigner Közvetítő Szerver fejlesztői dokumentáció

4. Gyakorlat: Csoportházirend beállítások

Eddig még nem használt vezérlőket is megismerünk: PlaceHolder, RadioButtonList.

(NGB_TA024_1) MÉRÉSI JEGYZŐKÖNYV

Bevezetés Működési elv AJAX keretrendszerek AJAX

CREATE TABLE student ( id int NOT NULL GENERATED ALWAYS AS IDENTITY PRIMARY KEY, name varchar(100) NOT NULL, address varchar(100) NOT NULL )

Proxer 7 Manager szoftver felhasználói leírás

Longman Exams Dictionary egynyelvű angol szótár nyelvvizsgára készülőknek

1. Gyakorlat: Telepítés: Windows Server 2008 R2 Enterprise, Core, Windows 7

API tervezése mobil környezetbe. gyakorlat

Java és web programozás

10. Gyakorlat: Alkalmazások publikálása Remote Desktop Szervízen keresztül

Drupal biztonság. Tuesday, April 3, 12

WEB-PROGRAMOZÁS II. 1. Egészítse ki a következő PHP kódot a következők szerint: a,b,c,d: <?php. interface Kiir { public function kiir();

Számítógépes Hálózatok GY 8.hét

AJAX Framework építés. Nagy Attila Gábor Wildom Kft.

A perzisztens adatkezelő rendszer tesztelése és demonstrálása a GRID környezetben

MVC. Model View Controller

Webes alkalmazások fejlesztése

Correlation & Linear Regression in SPSS

(Asking for permission) (-hatok/-hetek?; Szabad ni? Lehet ni?) Az engedélykérés kifejezésére a következő segédigéket használhatjuk: vagy vagy vagy

Java I. A Java programozási nyelv

Adatbázisok webalkalmazásokban

WWW Kliens-szerver Alapfogalmak Technológiák Terv. Web programozás 1 / 31

C#, OOP. Osztályok tervezése C#-ban

Miskolci Egyetem Gazdaságtudományi Kar Üzleti Információgazdálkodási és Módszertani Intézet. Hypothesis Testing. Petra Petrovics.

Kompetens Szoftvertesztelés a Gyakorlatban (CoSTiP) Eszköztámogatás a tesztelésben

Web-fejlesztés NGM_IN002_1

Web programoz as

Adatbázis-kezelés ODBC driverrel

MicroSigner Közvetítő Szerver fejlesztői dokumentáció

JavaScript bűvésztrükkök, avagy PDF olvasó és böngésző hackelés

Szoftver-technológia II. Tervezési minták. Irodalom. Szoftver-technológia II.

SQL*Plus. Felhasználók: SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP (dolgozó), DEPT (osztály) "közönséges" felhasználók

Webes és mobil-alapú megoldások... hatékonyan és gyorsan a közigazgatásban

Adatbázisok elleni fenyegetések rendszerezése. Fleiner Rita BMF/NIK Robothadviselés 2009

WebService tesztelés. SOAPui Pro, GreenPepper és Confluence használatával. Verhás & Verhás Szoftver Manufaktúra KNOW-HOW

Correlation & Linear Regression in SPSS

16F628A megszakítás kezelése

Webszolgáltatások (WS)

Flash és PHP kommunikáció. Web Konferencia 2007 Ferencz Tamás Jasmin Media Group Kft

Adatbázis alapú rendszerek gyakorlat Adatbázis alapú alkalmazásfejlesztés Java, C# környezetben

Az SQL*Plus használata

Access adatbázis elérése OLE DB-n keresztül

Adatbányászat és Perszonalizáció architektúra

Miskolci Egyetem Gazdaságtudományi Kar Üzleti Információgazdálkodási és Módszertani Intézet. Correlation & Linear. Petra Petrovics.

Mapping Sequencing Reads to a Reference Genome

Angol Középfokú Nyelvvizsgázók Bibliája: Nyelvtani összefoglalás, 30 kidolgozott szóbeli tétel, esszé és minta levelek + rendhagyó igék jelentéssel

Bevezető. Servlet alapgondolatok

Két tűz között. statikus site generátorok és javascript alkalmazások és a Drupal

A JavaScript főbb tulajdonságai

SOPHOS simple + secure. A dobozba rejtett biztonság UTM 9. Kókai Gábor - Sophos Advanced Engineer Balogh Viktor - Sophos Architect SOPHOS

Tesztelési feladatok és kihívások a FALCON projektben

WEBES ALKALMAZÁSFEJLESZTÉS 1.

Programozási nyelvek II. JAVA

Excel ODBC-ADO API. Tevékenységpontok: - DBMS telepítés. - ODBC driver telepítése. - DSN létrehozatala. -Excel-ben ADO bevonása

11. Gyakorlat: Certificate Authority (CA), FTP site-ok

JAVA webes alkalmazások

SDI ALKALMAZÁS I. Workspace / ResourceView / Toolbar / IDR_MAINFRAME. Workspace / ResourceView / Menu / IDR_MAINFRAME

Operációs Rendszerek II. labor. 2. alkalom

Model View Controller alapú alkalmazásfejlesztés

Web programozás. 3. előadás

ORACLE. SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP (dolgozó), DEPT (osztály) "közönséges" felhasználók

Web-fejlesztés NGM_IN002_1

SQL/PSM kurzorok rész

Stateless Session Bean

Átírás:

JavaScript tesztelési módszerek BRAUN PATRIK BRAUN PATRIK: JAVASCRIPT TESZTELÉSI MÓDSZEREK 1

JavaScript Objektumalapú, prototípus alapú szkriptnyelv C szerű szintaktikával szabványosították, mégis részben különbözően implementálják a JavaScriptet a különböző böngészők. Elsősorban webre, de szerver oldalon is futtatható Node.js-el Paypal js-ben íródott (szerver oldal is) Hivatalosan típustalan nyelv Nem mindig egyértelmű : Truthy, falsey, this Nagyobb projektek esetén : Typescript, Babel BRAUN PATRIK: JAVASCRIPT TESZTELÉSI MÓDSZEREK 2

JavaScript tesztelés: Keretrendszerek Buster.JS Capybara Mocha FuncUnit Hiro Karma (née Testacular) Jasmine JsTestDriver Laika Preamble phantom-assert QUnit Robot Framework Rx Test Runner tapedeck Testem Venus.js WebDriver wru YUITest BRAUN PATRIK: JAVASCRIPT TESZTELÉSI MÓDSZEREK 3

Kliens oldali tesztelés: Karma + Jasmine Karma Teszt futtató környezet Valós böngészőkön vagy PhantonJs-ben Akár több eszközön is Forrás figyelés, autómaiktus futtatás Teszt lefedettség mérés, Istanbult-t is támogat Jasmine Behavior Driven Development tesztelő keretrendszer describe block format BRAUN PATRIK: JAVASCRIPT TESZTELÉSI MÓDSZEREK 4

Kliens oldali tesztelés: Karma + Jasmine module FrontEndModule { export class Utis{ public static calc(a:number){ if( a < 0){ return -a; if( a < 10){ return a * a; return a; describe("a simple test for testing Utils.", function() { var foo = 0; beforeeach(function() { foo += 1; aftereach(function() { foo = 0; it("should get absolute value for input less than 0", function() { expect(frontendmodule.utis.calc(-foo)).toequal(1); it("should get square value for input between 0 and 10", function() { expect(frontendmodule.utis.calc(foo+2)).toequal(9); BRAUN PATRIK: JAVASCRIPT TESZTELÉSI MÓDSZEREK 5

Kliens oldali tesztelés: Karma + Jasmine // karma.conf.js module.exports = function(config) { config.set({ basepath: '../', files:["test/jasmine.js","js/utils.js"], frameworks: ['jasmine'], browsers: ['Chrome'], autowatch:true, ; reporters: ['progress', 'coverage'], preprocessors: { 'js/utils.js': ['coverage'] BRAUN PATRIK: JAVASCRIPT TESZTELÉSI MÓDSZEREK 6

Test Coverage: Istanbul BRAUN PATRIK: JAVASCRIPT TESZTELÉSI MÓDSZEREK 7

Szerver oldali tesztelés: Mocha + Chai Mocha Hasonló mint a JasmineJs Inkább szerver oldali kód tesztelésre használják Nincs beépített assertion Chai BDD/TDD assertion könyvtár Támogat: should, expect, assert formátiumokat foo.should.be.a('string'); expect(foo).to.be.a('string'); assert.typeof(foo, 'string'); BRAUN PATRIK: JAVASCRIPT TESZTELÉSI MÓDSZEREK 8

Szerver oldali tesztelés: Mocha + Chai module SandBox{ export class MyCode{ static foo(a:number){ if( a < 0){ throw new Error("sqrt can't work on negative number"); return 2*a; var expect = require('chai').expect; var MyCode = require('../js/mycode'); describe('foo', function () { it('should return 4', function (){ var c = MyCode.foo(2); expect(c).to.be.equal(4); it('examples', function(){ expect({ foo: 'bar' ).to.be.an('object'); expect(null).to.be.a('null'); expect(undefined).to.be.an('undefined'); var obj = { foo: 'bar' ; expect(obj).to.have.property('foo'); expect(obj).to.have.property('foo', 'bar'); if(typeof module!== 'undefined' && typeof module.exports!== 'undefined'){ module.exports = SandBox.MyCode; var err = new ReferenceError('This is a bad function.'); var fn = function () { throw err; ; expect(fn).to.throw(referenceerror); expect(fn).to.throw(error); BRAUN PATRIK: JAVASCRIPT TESZTELÉSI MÓDSZEREK 9

Szerver oldali tesztelés: Mocha + Chai BRAUN PATRIK: JAVASCRIPT TESZTELÉSI MÓDSZEREK 10

End to End tesztek :Selinium+ Cucumber TDD tesztek CucumberJs a Cucumber portja define Feature Specs in a Domain-Specific-Language (DSL), Gherkin Feature: Shopper can add an item to their Grocery List As a grocery shopper I want to add an item to my grocery list So that I can remember to buy that item at the grocery store Scenario: Item added to grocery list Given I have an empty grocery list When I add an item to the list Then The grocery list contains a single item Scenario: Item accessible from grocery list Given I have an empty grocery list When I add an item to the list Then I can access that item from the grocery list BRAUN PATRIK: JAVASCRIPT TESZTELÉSI MÓDSZEREK 11

End to End tesztek :Selinium+ Cucumber Feature: Gmail Login As a user I should able to login into Gmail. Scenario: I login with valid credentials Given I open "http://www.gmail.com" And I enter username "abc@gmail.com" Then I click next button And I enter password "123456" When I click signin button And I wait for 15 sec Then this is my another custom step BRAUN PATRIK: JAVASCRIPT TESZTELÉSI MÓDSZEREK 12

End to End tesztek: FuncUnit Egy újabb keretrendszer tesztelése Támogat Jasmine és Qunit szintaxist Részletek és teszt példa itt: http://funcunit.com/ //slowing funcunit down for dramatic effect F.speed = 100; describe('todomvc', function(){ it('should create and complete todos', function() { var newtodo = F('#new-todo'); newtodo.type('funcunit [enter]'); newtodo.type('is [enter]'); newtodo.type('awesome! [enter]'); F('.todo label:contains("funcunit")').visible(); F('.todo label:contains("is")').visible(); F('.todo label:contains("awesome")').visible(); F('.toggle:not(:checked)').click(); F('.toggle:not(:checked)').click(); F('.toggle:not(:checked)').click(); F('#clear-completed').click(); F('.todo.completed').missing(); BRAUN PATRIK: JAVASCRIPT TESZTELÉSI MÓDSZEREK 13

Tesztelés: Mocking Sinon-al Javascript könnynen mockolható o minden függvény és paraméter a kód futása során bármikor felülírható Sinon: o Támogat: Spy-t és stub-ot Példa: function gettodos(listid, callback) { jquery.ajax({ url: "/todo/" + listid + "/items", success: function (data) { // Node-style CPS: callback(err, data) callback(null, data); BRAUN PATRIK: JAVASCRIPT TESZTELÉSI MÓDSZEREK 14

Tesztelés: Mocking Sinon-al var server; after(function () { jquery.ajax.restore(); it("makes a GET request for todo items", function () { sinon.stub(jquery, "ajax"); gettodos(42, sinon.spy()); assert(jquery.ajax.calledwithmatch({ url: "/todo/42/items" )); before(function () { server = sinon.fakeserver.create(); after(function () { server.restore(); it("calls callback with deserialized data", function () { var callback = sinon.spy(); gettodos(42, callback); // This is part of the FakeXMLHttpRequest API server.requests[0].respond( 200, { "Content-Type": "application/json", JSON.stringify([{ id: 1, text: "Provide examples", done: true ]) ); assert(callback.calledonce); BRAUN PATRIK: JAVASCRIPT TESZTELÉSI MÓDSZEREK 15

Headless futtatás: PhantonJS Teljes értékű böngészőt helyettesít Js-ben írható futási script Sandbox-ban futtatja az oldalakat Lehetőség screen capture Sztelt oldalak DOM-jához házzáfér és manipulálható Minotorozási és Progfiling lehetőségek BRAUN PATRIK: JAVASCRIPT TESZTELÉSI MÓDSZEREK 16

Köszönöm a figyelmet! BRAUN PATRIK: JAVASCRIPT TESZTELÉSI MÓDSZEREK 17