mai mult decât

unit teste

Adi Roiban  - adi@roiban.ro

GeekMeet#11

29.09.2013 Cluj-Napoca

Despre Mine

Jack of all trades, master of none

neam de programator

pasionat de software liber

întreprinzător liber-profesionist


rareori motociclist sau skipper

DESPRE VOI

  • QA?
  • Suport?
  • Programatori?

Cuprins

Verificarea calităţii

Unelte folosite - open/free software

Metode de testare

Testare automată - De ce?

De mâna e greu şi imprevizibil
Scapam de frica regresiilor
functionalităţi noi
refactoring de voie

Testare automată - Cum?

bazate pe specificatii/cerinte
venite de la client sau realizate de noi
doar testarea automată
poate fi repetată oricand
fara interventie umană (inaite, în timpul, după)

Unit teste

  • Ce sunt ele?
  • Scrieti unit teste?
  • Inainte de implementare?

Analiza statică a codului

aka lintere

Nu testează functionalitatea

Asigură un cod unitar

Teste pentru style guide - coding conventions


    Exemple
  • JS: jshint
  • CSS: css-utils
  • Python: PEP08, PyFlakes

build system integration demo

css / js / rst

IDE/Text editor integration demo

python

Test Runners

Testing layers / Package setUp/tearDown

Filtre

Tag-uri / Skip

Rapoarte

Debugging

Demo Python-Nose

filtre, raporate, debuging, elevated

Continous Integration

cel puţin o dată pe zi

multi-platformă, multi-configuraţii

acţiuni pe baza rezultatelor

Buildbot

buildbot try

... mai multe pentru altă dată

Teste de integrare / Integration tests

  • Ce sunt ele?
  • Scrieţi teste de integrare?
  • Pentru toate componentele?

Teste de integrare - Ce sunt ele?

la nivel de cod

verifică interacţiunea dintre componente

nu există scuze pentru absenţa lor

Ajutoare pentru teste de integrare

generatoare de obiecte/componente

reduce numarul de importuri în teste

reduce liniile pentru cod secundar

generator date

evită interactiunea cu sistemul de input/output, fisiere, retea

date din cache

mareste viteza de executie

implementări minimale

verifică "raza" de actiune a compenentelor

pot fi implementate prin mock

Teste de sistem / System tests

  • Ce sunt ele?
  • Scrieţi teste de sistem?
  • Pentru toate functionalitătile?

Teste de sistem - Ce sunt ele?

la nivel de interfată cu lumea exterioară

GUI / CLI / API / Protocol

verifică functionalitatea completă a sistemului

black box

    Exemple
  • Selenium
  • swbot

Teste de sistem - GUI

emulare/stimulare programată a dispozitivelor de input

mouse / tastatură / evenimente sistem

cu ajutorul uneltelor de accesibilitate

pot fi încete sau restranse de sistem

Windows screensaver - window protection

Unix X11 headless framebuffer

PhantomJS

... data viitoare :(

Teste de sistem - CLI/API/Protocol

pachete de retea / cereri de retea

API/Protocol user bot

Teste de acceptantă

  • Ce sunt ele?
  • Scrieţi teste de acceptantă?

Teste de acceptantă - Ce sunt ele?

bazate direct pe specificaţii/cerinte

cod comun între specificaţie şi testare

greu de găsit limbaj comun între specificator şi implementator

smoke tests


    Exemple
  • cucumber
  • selenium
  • sikuli

Reuşite ?!

Demo Python DocTest

Întrebări !?

Nelămuriri

Comentarii

Însfârşit, sfârşitul

Sugestii şi reclamaţii

adi@roiban.ro


Cod pe github.com/adiroiban/more-than-unit-testing

Realizat folosind: Reveal.JS