-getrieben. wer treibt eigentlich die test-entwicklung?
DESCRIPTION
Vortrag vom 15. Oktober 2013, gehalten auf der PyCon.DE 2013 in KölnTRANSCRIPT
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