-getrieben. Wer treibt eigentlich die Test-Entwicklung?

Preview:

DESCRIPTION

Vortrag vom 15. Oktober 2013, gehalten auf der PyCon.DE 2013 in Köln

Citation preview

­getriebenWer treibt eigentlich die Test­

Entwicklung?

PyCon.DE 2013, 15. Oktober 2013, Köln

Andi Albrecht

Andi Albrecht— @andialbrecht

Erster Python-Kontakt vor etwa 12 Jahren alsStudentische Hilfskraft bei der DFG

Aktuell: Anwendungsentwickler für Webapplikationenbei ProUnix in Bonn

Entwicklung und Pflege mittlerer und großer Systeme

OpenSource: Rietveld Code Review Tool, python-sqlparse, CrunchyFrog/RunSQLRun, …

Test-Driven DevelopmentFür wen eigentlich?

NoPyramid

Separation of ConcernsTest-Driven Development Behavior-Dr iven Development Robot

Framework UnitTests Feature-Dr iven Development py.test

Selenium System Tests Documentat ion-Dr iven Development

Coverage Component Tests Integration Tests

DurchgängigeQualität

Was treibt

michzum Testen an?

Der EntwicklerKritischer Blick auf fremden

Code

Die Tools...und deren Ausgaben

Die Ausgaben...und wann es nicht mehr

hilfreich ist

import unittestdef mysum(a,b): return a + b

class MySumTestCase(unittest.TestCase):

def test_is12(self): self.assertEqual(mysum(7, 5), 12) def test_allows_none(self): self.assertEqual(mysum(3, None), 0)

if __name__ == '__main__': unittest.main()

Die AusgabenAlles gut...

Python's UnitTestUnd wenn nicht?

py.testMehr Info, bitte!

py.test, mit PEP8-Pluginuh, wait...

UnitTests / Integration Tests→ für uns Entwickler

✔ richtige Wahl der Tests

✔ richtige Wahl des Test-Runners

✔ praktikable Konfiguration der Ausgaben

gezielte Tests der Code-Basis

Nachweis, dass unser Code funktioniert

zuverlässige Basis für andere Entwickler und QS

Der Tester...den interessiert das erstmal

nichtNah beim Kunden

Akzeptanz

Robot Framework*** Settings ***Documentation A test suite with […]...... This test has a workflow that […]Resource resource.txt

*** Test Cases ***Valid Login Open Browser To Login Page Input Username demo Input Password mode Submit Credentials Welcome Page Should Be Open [Teardown] Close Browser

Robot FrameworkOpen Browser To Login Page[resource.txt]*** Settings ***Library Selenium2Library

*** Keywords ***Open Browser To Login Page Open Browser ${LOGIN URL} ${BROWSER} Maximize Browser Window Login Page Should Be Open

Robot FrameworkOpen Browser ${LOGIN URL} ${BROWSER}[Library: Selenium2Library]class _BrowserManagementKeywords(KeywordGroup):

def open_browser(self, url, browser='firefox', […]): """Opens a new browser instance to given URL.""" […] browser_name = browser browser = self._make_browser(browser_name,desired_capabilities, ff_profile_dir,remote_url) browser.get(url)

Die AusgabenIm Detail

Die Ausgaben...und als Testbericht

Documentation-DrivenDevelopment

Ein kleiner Exkurs

”If the implementation is easy to explain, it may be a goodidea.“

The Zen of Python, by Tim Peters

sphinx-doc.org

Wir wollen alle QualitätEntwickler will stabilen Code

Tester will "runde" Anwendung

Der Endanwender will einfach nur, dass esfunktioniert

Danke!

E-Mail

Twitter

Homepage

albrecht.andi@gmail.com

@andialbrecht

http://andialbrecht.de

prounix.de

Recommended