Die Klimakonferenz 2015 in Paris „Grün treibt an – Gemeinsam gegen die Klimakrise“
-getrieben. Wer treibt eigentlich die Test-Entwicklung?
-
Upload
andi-albrecht -
Category
Technology
-
view
182 -
download
0
description
Transcript of -getrieben. Wer treibt eigentlich die Test-Entwicklung?
![Page 1: -getrieben. Wer treibt eigentlich die Test-Entwicklung?](https://reader034.fdokument.com/reader034/viewer/2022052619/55662633d8b42a61238b4f7f/html5/thumbnails/1.jpg)
getriebenWer treibt eigentlich die Test
Entwicklung?
PyCon.DE 2013, 15. Oktober 2013, Köln
Andi Albrecht
![Page 2: -getrieben. Wer treibt eigentlich die Test-Entwicklung?](https://reader034.fdokument.com/reader034/viewer/2022052619/55662633d8b42a61238b4f7f/html5/thumbnails/2.jpg)
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, …
![Page 3: -getrieben. Wer treibt eigentlich die Test-Entwicklung?](https://reader034.fdokument.com/reader034/viewer/2022052619/55662633d8b42a61238b4f7f/html5/thumbnails/3.jpg)
Test-Driven DevelopmentFür wen eigentlich?
![Page 4: -getrieben. Wer treibt eigentlich die Test-Entwicklung?](https://reader034.fdokument.com/reader034/viewer/2022052619/55662633d8b42a61238b4f7f/html5/thumbnails/4.jpg)
![Page 5: -getrieben. Wer treibt eigentlich die Test-Entwicklung?](https://reader034.fdokument.com/reader034/viewer/2022052619/55662633d8b42a61238b4f7f/html5/thumbnails/5.jpg)
NoPyramid
![Page 6: -getrieben. Wer treibt eigentlich die Test-Entwicklung?](https://reader034.fdokument.com/reader034/viewer/2022052619/55662633d8b42a61238b4f7f/html5/thumbnails/6.jpg)
![Page 7: -getrieben. Wer treibt eigentlich die Test-Entwicklung?](https://reader034.fdokument.com/reader034/viewer/2022052619/55662633d8b42a61238b4f7f/html5/thumbnails/7.jpg)
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
![Page 8: -getrieben. Wer treibt eigentlich die Test-Entwicklung?](https://reader034.fdokument.com/reader034/viewer/2022052619/55662633d8b42a61238b4f7f/html5/thumbnails/8.jpg)
DurchgängigeQualität
![Page 9: -getrieben. Wer treibt eigentlich die Test-Entwicklung?](https://reader034.fdokument.com/reader034/viewer/2022052619/55662633d8b42a61238b4f7f/html5/thumbnails/9.jpg)
Was treibt
michzum Testen an?
![Page 10: -getrieben. Wer treibt eigentlich die Test-Entwicklung?](https://reader034.fdokument.com/reader034/viewer/2022052619/55662633d8b42a61238b4f7f/html5/thumbnails/10.jpg)
Der EntwicklerKritischer Blick auf fremden
Code
![Page 11: -getrieben. Wer treibt eigentlich die Test-Entwicklung?](https://reader034.fdokument.com/reader034/viewer/2022052619/55662633d8b42a61238b4f7f/html5/thumbnails/11.jpg)
Die Tools...und deren Ausgaben
![Page 12: -getrieben. Wer treibt eigentlich die Test-Entwicklung?](https://reader034.fdokument.com/reader034/viewer/2022052619/55662633d8b42a61238b4f7f/html5/thumbnails/12.jpg)
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()
![Page 13: -getrieben. Wer treibt eigentlich die Test-Entwicklung?](https://reader034.fdokument.com/reader034/viewer/2022052619/55662633d8b42a61238b4f7f/html5/thumbnails/13.jpg)
Die AusgabenAlles gut...
![Page 14: -getrieben. Wer treibt eigentlich die Test-Entwicklung?](https://reader034.fdokument.com/reader034/viewer/2022052619/55662633d8b42a61238b4f7f/html5/thumbnails/14.jpg)
Python's UnitTestUnd wenn nicht?
![Page 15: -getrieben. Wer treibt eigentlich die Test-Entwicklung?](https://reader034.fdokument.com/reader034/viewer/2022052619/55662633d8b42a61238b4f7f/html5/thumbnails/15.jpg)
py.testMehr Info, bitte!
![Page 16: -getrieben. Wer treibt eigentlich die Test-Entwicklung?](https://reader034.fdokument.com/reader034/viewer/2022052619/55662633d8b42a61238b4f7f/html5/thumbnails/16.jpg)
py.test, mit PEP8-Pluginuh, wait...
![Page 17: -getrieben. Wer treibt eigentlich die Test-Entwicklung?](https://reader034.fdokument.com/reader034/viewer/2022052619/55662633d8b42a61238b4f7f/html5/thumbnails/17.jpg)
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
![Page 18: -getrieben. Wer treibt eigentlich die Test-Entwicklung?](https://reader034.fdokument.com/reader034/viewer/2022052619/55662633d8b42a61238b4f7f/html5/thumbnails/18.jpg)
Der Tester...den interessiert das erstmal
nichtNah beim Kunden
![Page 19: -getrieben. Wer treibt eigentlich die Test-Entwicklung?](https://reader034.fdokument.com/reader034/viewer/2022052619/55662633d8b42a61238b4f7f/html5/thumbnails/19.jpg)
Akzeptanz
![Page 20: -getrieben. Wer treibt eigentlich die Test-Entwicklung?](https://reader034.fdokument.com/reader034/viewer/2022052619/55662633d8b42a61238b4f7f/html5/thumbnails/20.jpg)
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
![Page 21: -getrieben. Wer treibt eigentlich die Test-Entwicklung?](https://reader034.fdokument.com/reader034/viewer/2022052619/55662633d8b42a61238b4f7f/html5/thumbnails/21.jpg)
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
![Page 22: -getrieben. Wer treibt eigentlich die Test-Entwicklung?](https://reader034.fdokument.com/reader034/viewer/2022052619/55662633d8b42a61238b4f7f/html5/thumbnails/22.jpg)
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)
![Page 23: -getrieben. Wer treibt eigentlich die Test-Entwicklung?](https://reader034.fdokument.com/reader034/viewer/2022052619/55662633d8b42a61238b4f7f/html5/thumbnails/23.jpg)
Die AusgabenIm Detail
![Page 24: -getrieben. Wer treibt eigentlich die Test-Entwicklung?](https://reader034.fdokument.com/reader034/viewer/2022052619/55662633d8b42a61238b4f7f/html5/thumbnails/24.jpg)
Die Ausgaben...und als Testbericht
![Page 25: -getrieben. Wer treibt eigentlich die Test-Entwicklung?](https://reader034.fdokument.com/reader034/viewer/2022052619/55662633d8b42a61238b4f7f/html5/thumbnails/25.jpg)
Documentation-DrivenDevelopment
Ein kleiner Exkurs
”If the implementation is easy to explain, it may be a goodidea.“
The Zen of Python, by Tim Peters
![Page 26: -getrieben. Wer treibt eigentlich die Test-Entwicklung?](https://reader034.fdokument.com/reader034/viewer/2022052619/55662633d8b42a61238b4f7f/html5/thumbnails/26.jpg)
sphinx-doc.org
![Page 27: -getrieben. Wer treibt eigentlich die Test-Entwicklung?](https://reader034.fdokument.com/reader034/viewer/2022052619/55662633d8b42a61238b4f7f/html5/thumbnails/27.jpg)
Wir wollen alle QualitätEntwickler will stabilen Code
Tester will "runde" Anwendung
Der Endanwender will einfach nur, dass esfunktioniert