Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015
-
Upload
aboutyougmbh -
Category
Internet
-
view
837 -
download
0
Transcript of Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015
![Page 1: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/1.jpg)
WENN AFFEN TESTEN…
code.talks 2015
…DAS ENDE DER BANANENSOFTWARE!
Dr. Jeremias Rößler
![Page 2: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/2.jpg)
Änderung
Fehler
Testen
![Page 3: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/3.jpg)
Automatisierung
keine Zeit
keine
automatische
Automatisierung!
![Page 4: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/4.jpg)
Infinite-Monkey-Theorem:Wenn eine Affe nur lange genug auf einer
Schreibmaschine tippt,schreibt er irgendwann alle Werke von Shakespeare.
![Page 5: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/5.jpg)
Wir ersetzen die Schreibmaschine mit einem Computer...
![Page 6: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/6.jpg)
Infinite Monkey
public static void main(String... args) throws Exception {Robot robot = new Robot();while (true) {
robot.mouseMove(random.nextInt(maxX), random.nextInt(maxY));robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);robot.delay(200);for (char inputChar : randomString().toCharArray()) {
robot.keyPress((int) inputChar);robot.keyRelease((int) inputChar);robot.delay(10);
}robot.keyPress(KeyEvent.VK_ENTER);robot.keyRelease(KeyEvent.VK_ENTER);
}}
1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.
![Page 7: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/7.jpg)
Infinite Monkey
DEMO
![Page 8: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/8.jpg)
![Page 9: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/9.jpg)
![Page 10: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/10.jpg)
Aufwand pro Fehler
Qualität
100% = 0 Fehler
![Page 11: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/11.jpg)
![Page 12: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/12.jpg)
Intelligenter Affe
public static void main(String... args) throws Exception {WebDriver driver = new FirefoxDriver();driver.get("http://www.retest.de");while (true) {
List<WebElement> links = driver.findElements(By.tagName("a"));links.get(random.nextInt(links.size())).click();Thread.sleep(500);List<WebElement> fields =
driver.findElements(By.xpath("//input[@type='text']"));WebElement field = fields.get(random.nextInt(fields.size()));field.sendKeys(randomString());Thread.sleep(500);
}}
1.2.3.4.5.6.7.8.9.10.11.12.13.14.
![Page 13: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/13.jpg)
Intelligenter Affe
DEMO
![Page 14: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/14.jpg)
![Page 15: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/15.jpg)
Intelligenter Affe
![Page 16: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/16.jpg)
gremlins.js
Open Source Produkte
UI/Application Exerciser Monkey
NetFlix Chaos Monkey
![Page 17: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/17.jpg)
Intelligenter Affe
?
![Page 18: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/18.jpg)
![Page 19: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/19.jpg)
![Page 20: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/20.jpg)
![Page 21: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/21.jpg)
Problemraum
Problem raum
![Page 22: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/22.jpg)
![Page 23: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/23.jpg)
![Page 24: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/24.jpg)
![Page 25: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/25.jpg)
![Page 26: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/26.jpg)
![Page 27: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/27.jpg)
![Page 28: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/28.jpg)
Türme von Hanoi
© André Karwath aka Aka
Quelle: http://en.wikipedia.org/wiki/File:Tower_of_Hanoi_4.gif
![Page 29: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/29.jpg)
!1.!class!TuermeVonHanoi():!! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !!2.!!!!def!__init__(self):! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !!3.!!!!!!!!self.A!=![6,!5,!4,!3,!2,!1]! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !!4.!!!!!!!!self.B!=![]! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !!5.!!!!!!!!self.C!=![]! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !!6.!!!!!! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !!7.!!!!def!AtoB(self):!self.B.append(self.A.pop())! ! ! ! ! ! ! ! ! ! ! ! !!8.!!!!!! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !!9.!!!!def!AtoC(self):!self.C.append(self.A.pop())! ! ! ! ! ! ! ! ! ! ! ! !!10.! !!!!! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !!11.! def!BtoA(self):!self.A.append(self.B.pop())! ! ! ! ! ! ! ! ! ! ! ! !!12.! !!!!! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !!13.! def!BtoC(self):!self.C.append(self.B.pop())! ! ! ! ! ! ! ! ! ! ! ! !!14.! !!!!! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !!15.! def!CtoA(self):!self.A.append(self.C.pop())! ! ! ! ! ! ! ! ! ! ! ! !!16.! !!!!!!!!!! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !!17.! def!CtoB(self):!self.B.append(self.C.pop())! ! ! ! ! ! ! ! ! ! ! ! !!18.! !!!!!!!!!! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !!19.! def!valid(self):! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !!20.! !!!!return!all(self.A[i!+!1]!<!self.A[i]!for!i!in!range(len(self.A)N1))!and!\!!!21.! !!!!!!!!all(self.B[m!+!1]!<!self.B[m]!for!m!in!range(len(self.B)N1))!and!\!! !!22.! !!!!!!!!all(self.C[n!+!1]!<!self.C[n]!for!n!in!range(len(self.C)N1))!! ! !
![Page 30: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/30.jpg)
Türme von Hanoi Rekursiv
!1.! def!bewege(schritte,!i,!a_name,!b_name,!c_name):! ! ! ! ! ! ! !!!2.! !!!!if!(i!>!0):!! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !!!3.! !!!!!!!!bewege(schritte,!iN1,!a_name,!c_name,!b_name)! ! ! ! ! !!!4.! !!!!!!!!schritte.append('tuerme.'!+!a_name!+!'to'!+!c_name!+!‘()')!!5.! !!!!!!!!bewege(schritte,!iN1,!b_name,!a_name,!c_name)! ! ! ! ! !!!6.! !!!!return!schritte! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !!!7.! !! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !!!8.! def!algorithmus():!! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !!!9.! !!!!return!bewege([],!6,!'A',!'B',!'C')!! ! ! ! ! ! ! ! ! ! !
![Page 31: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/31.jpg)
!1.! schritte!=![\!! ! ! ! ! ! ! ! ! ! ! ! ! ! !!2.! 'tuerme.AtoB()',!\!#[654321][][]!N>![65432][1][]! !!3.! 'tuerme.AtoC()',!\!#[65432][1][]!N>![6543][1][2]! !!4.! 'tuerme.BtoC()',!\!#[6543][1][2]!N>![6543][][21]! !!5.! 'tuerme.AtoB()',!\!#[6543][][21]!N>![654][3][21]! !!6.! 'tuerme.CtoA()',!\!#[654][3][21]!N>![6541][3][2]! !!7.! 'tuerme.CtoB()',!\!#[6541][3][2]!N>![6541][32][]! !!8.! 'tuerme.AtoB()',!\!#[6541][32][]!N>![654][321][]! !!9.! 'tuerme.AtoC()',!\!#[654][321][]!N>![65][321][4]! !!10.! 'tuerme.BtoC()',!\!#[65][321][4]!N>![65][32][41]! !!11.! 'tuerme.BtoA()',!\!#[65][32][41]!N>![652][3][41]! !!12.! 'tuerme.CtoA()',!\!#[652][3][41]!N>![6521][3][4]! !!13.! 'tuerme.BtoC()',!\!#[6521][3][4]!N>![6521][][43]! !!14.! 'tuerme.AtoB()',!\!#[6521][][43]!N>![652][1][43]! !!15.! 'tuerme.AtoC()',!\!#[652][1][43]!N>![65][1][432]! !!16.! 'tuerme.BtoC()',!\!#[65][1][432]!N>![65][][4321]! !!17.! 'tuerme.AtoB()',!\!#[65][][4321]!N>![6][5][4321]! !!18.! 'tuerme.CtoA()',!\!#[6][5][4321]!N>![61][5][432]! !!19.! 'tuerme.CtoB()',!\!#[61][5][432]!N>![61][52][43]! !
Türme von Hanoi Manuell
![Page 32: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/32.jpg)
Türme von Hanoi Möglichkeiten
63>2
![Page 33: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/33.jpg)
9.223.372.036.854.775.808
Türme von Hanoi Möglichkeiten
![Page 34: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/34.jpg)
Türme von Hanoi Möglichkeiten
292.471.208 Jahre
![Page 35: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/35.jpg)
Türme von Hanoi Automatisch?
![Page 36: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/36.jpg)
Türme von Hanoi Zielfunktion
1.!def!min_zielfunktion(tuerme):!return!(21!N!sum(tuerme.C))
![Page 37: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/37.jpg)
while (min_zielfunktion(loesung) > 0)neue_loesung = addNextStep(loesung)if (better(neue_loesung, loesung))loesung = neue_loesung
![Page 38: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/38.jpg)
DEMO
Türme von Hanoi Stochastischer Bergsteigeralgorithmus
![Page 39: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/39.jpg)
Türme von Hanoi Stochastischer Bergsteigeralgorithmus
['tuerme.AtoC()']!N>![65432][][1],!Anzahl!Schritte:!1,!Zielwert:!20
![Page 40: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/40.jpg)
while (min_zielfunktion(loesung) > 0)neue_loesung = addNextStep(loesung)if (better(neue_loesung, loesung))loesung = neue_loesung
nach_1000_versuchen_neustarten:
![Page 41: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/41.jpg)
Türme von Hanoi Suchraumlandschaft
![Page 42: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/42.jpg)
while (min_zielfunktion(loesung) > 0)neue_loesung = addNextStep(loesung)if (better(neue_loesung, loesung)
loesung = neue_loesungor 50/50_chance)
![Page 43: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/43.jpg)
DEMO
Türme von Hanoi Zufallsbewegung
![Page 44: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/44.jpg)
[tuerme.AtoB(),!tuerme.BtoC(),!tuerme.CtoB(),!tuerme.BtoA(),!!!!!!!!!!!!tuerme.AtoB(),!...]!N>![51][][6432],!Anzahl!Schritte:!2018,!Zielwert:!6
Türme von Hanoi Zufallsbewegung
![Page 45: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/45.jpg)
while (min_zielfunktion(loesung) > 0)neue_loesung = addNextStep(loesung)if (better(neue_loesung, loesung)
loesung = neue_loesungor decreasing_chance)
![Page 46: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/46.jpg)
Quelle: http://www.flickr.com/photos/51035774131@N01/27145468/in/photostream/
© crowbert
Türme von Hanoi Simulierte Abkühlung
![Page 47: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/47.jpg)
Mehrere Suchen gleichzeitig?
![Page 48: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/48.jpg)
loesungen = []beste = get_beste(loesungen)while (min_zielfunktion(beste) > 0)
neue_loesungen = addNextSteps(loesungen)loesungen = getXBest(neue_loesungen)beste = get_beste(loesungen)
![Page 49: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/49.jpg)
![Page 50: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/50.jpg)
loesungen = []beste = get_beste(loesungen)while (min_zielfunktion(beste) > 0)
neue_loesungen = addNextSteps(loesungen)loesungen = getXBest(neue_loesungen)beste = get_beste(loesungen)
![Page 51: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/51.jpg)
![Page 52: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/52.jpg)
Quelle: http://cnx.org/content/m47304/latest/
© Robert Bear and David Rintoul
![Page 53: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/53.jpg)
Gen
Exon
Intron
Exon
![Page 54: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/54.jpg)
loesungen = []beste = get_beste(loesungen)while (min_zielfunktion(beste) > 0)
neue_loesungen = crossover(loesungen)neue_loesungen =
addNextSteps(neue_loesungen)loesungen = getXBest(neue_loesungen)beste = get_beste(loesungen)
![Page 55: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/55.jpg)
DEMO
Türme von Hanoi Genetischer Algorithmus
![Page 56: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/56.jpg)
[tuerme.AtoB(),!tuerme.AtoC(),!tuerme.BtoA(),!tuerme.AtoB(),!tuerme.BtoA(),!...]!N>![][][654321],!Anzahl!Schritte:!1727,!Zielwert:!0! ! ! ! ! ! ! ! ! ! ! !
Türme von Hanoi Genetischer Algorithmus
![Page 57: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/57.jpg)
Genetischer Algorithmus Effizienz
66 Sekunden
statt 150 Mio. Jahre
![Page 58: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/58.jpg)
![Page 59: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/59.jpg)
![Page 60: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/60.jpg)
Welche Fehler kann der Affe finden?
![Page 61: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/61.jpg)
When is a bug not a bug?
When it’s a feature!
![Page 62: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/62.jpg)
1.2. 3. 4. 5. 6.
Is it a bug?
def auth(username, password): if username == 'admin' and password == 'geheim': return True if hash(password + get_salt(username)) == get_pwd_hash(username): return True return False
![Page 63: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/63.jpg)
1. if (name[0] == '.') continue;
Is it a bug?
.
.. text.c other.files
![Page 64: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/64.jpg)
Is it a bug?
![Page 65: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/65.jpg)
Is it a bug?
![Page 66: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/66.jpg)
What is a bug?
Without specification, there are no bugs — only surprises.
Brian Kernighan“
![Page 67: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/67.jpg)
What is a bug?
Spezifikation Code
Nutzererwartung Code
Modell Code
![Page 68: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/68.jpg)
Monkey Testing
Nutzererwartung Code
![Page 69: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/69.jpg)
Wozu testen wir?
Nach Implementierung?
![Page 70: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/70.jpg)
![Page 71: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/71.jpg)
![Page 72: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/72.jpg)
Wozu testen wir?
Nach Implementierung?
Nach Änderung?
![Page 73: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/73.jpg)
![Page 74: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/74.jpg)
Wenn man nur einen Hammer hat
sieht alles aus wie ein Nagel…
![Page 75: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/75.jpg)
public void testSomething() throws Exception {// here be some test code ...UIElement element = driver.getElement(“path/to/element”);assertEquals(null, element.getAction());assertEquals(“action”, element.getActionCommand());assertEquals(true, element.isEnabled());assertEquals(true, element.isFocusable());assertEquals(“Lucida Grande”, element.getFont().getName());assertEquals(13, element.getFont().getSize());assertEquals(0, element.getFont().getStyle());assertEquals(23, element.getHeight());assertEquals(null, element.getIcon());assertEquals(0, element.getMnemonic());assertEquals(null, element.getPressedIcon());assertEquals(true, element.isSelected());assertEquals(“label”, element.getText());assertEquals(119, element.getWidth());assertEquals(27, element.getX());assertEquals(191, element.getY());
}
![Page 76: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/76.jpg)
![Page 77: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/77.jpg)
![Page 78: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/78.jpg)
![Page 79: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/79.jpg)
Ausführung Wiederholbar?
![Page 80: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/80.jpg)
Separate Testumgebung mit voller Kontrolle
![Page 81: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/81.jpg)
![Page 82: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/82.jpg)
![Page 83: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/83.jpg)
![Page 84: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/84.jpg)
![Page 85: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/85.jpg)
GENETISCHER ALGORITHMUS
20 %
80 %
Coverage
![Page 86: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/86.jpg)
festes Set an Tests
![Page 87: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/87.jpg)
![Page 88: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/88.jpg)
Monkey-Testing/ Genetischer Algorithmus
Testing/ Behavioral Diff
![Page 89: Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code.talks 2015](https://reader035.fdocuments.net/reader035/viewer/2022081605/587452d71a28abd53e8b7059/html5/thumbnails/89.jpg)
Intelligenter Affe
Summary
Monkey-Testing:
billiger schneller besser multipliziert manuelle Tests
Behavioral Diff
kein Pflegeaufwand kein wasteful testing trotzdem “vollständiges “ Testen