![Page 1: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/1.jpg)
BEI UNS TESTEN LAUTER AFFEN
Das Ende der Bananensoftware
Dr. Jeremias Rößler
JUG-Saxony Day 2016
![Page 2: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/2.jpg)
Änderung
Fehler
Testen
![Page 3: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/3.jpg)
Wer hat manuell regressionsgetestet?
Wer hat manuell getestet?
Wem hat das Spaß gemacht?
UMFRAGE
![Page 4: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/4.jpg)
UMFRAGE
Warum haben Sie nicht automatisch getestet?
![Page 5: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/5.jpg)
![Page 6: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/6.jpg)
![Page 7: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/7.jpg)
![Page 8: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/8.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 9: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/9.jpg)
![Page 10: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/10.jpg)
AUTOMATISCH
![Page 11: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/11.jpg)
Mehr-Aufwand
Zeit
Einsparung
![Page 12: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/12.jpg)
Automatisierung
keine Zeit
keine
automatische
Automatisierung!
![Page 13: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/13.jpg)
![Page 14: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/14.jpg)
SW Entwicklung
13
Testen
Programmieren +
Rest
![Page 15: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/15.jpg)
gute
Software !=
gutgetestetnach jeder
Änderung
![Page 16: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/16.jpg)
Infinite-Monkey-Theorem:Wenn eine Affe nur lange genug auf einer
Schreibmaschine tippt, schreibt er irgendwann alle Werke von Shakespeare.
![Page 17: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/17.jpg)
Wir ersetzen die Schreibmaschine mit einem Computer...
![Page 18: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/18.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 19: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/19.jpg)
Infinite Monkey
DEMO
![Page 20: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/20.jpg)
![Page 21: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/21.jpg)
![Page 22: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/22.jpg)
Aufwand pro Fehler
Qualität
100%= 0 Fehler
![Page 23: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/23.jpg)
![Page 24: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/24.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 25: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/25.jpg)
Intelligenter Affe
DEMO
![Page 26: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/26.jpg)
![Page 27: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/27.jpg)
Intelligenter Affe
![Page 28: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/28.jpg)
gremlins.js
Open Source Produkte
UI/Application Exerciser Monkey
NetFlix Chaos Monkey
![Page 29: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/29.jpg)
Intelligenter Affe
?
![Page 30: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/30.jpg)
![Page 31: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/31.jpg)
![Page 32: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/32.jpg)
![Page 33: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/33.jpg)
Problemraum
Problemraum
![Page 34: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/34.jpg)
![Page 35: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/35.jpg)
![Page 36: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/36.jpg)
![Page 37: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/37.jpg)
![Page 38: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/38.jpg)
![Page 39: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/39.jpg)
Türme von Hanoi
© André Karwath aka Aka
Quelle: http://en.wikipedia.org/wiki/File:Tower_of_Hanoi_4.gif
![Page 40: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/40.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)-1)) and \21. all(self.B[m + 1] < self.B[m] for m in range(len(self.B)-1)) and \22. all(self.C[n + 1] < self.C[n] for n in range(len(self.C)-1))
![Page 41: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/41.jpg)
Türme von HanoiRekursiv
1. def bewege(schritte, i, a_name, b_name, c_name): 2. if (i > 0): 3. bewege(schritte, i-1, a_name, c_name, b_name) 4. schritte.append('tuerme.' + a_name + 'to' + c_name + ‘()')5. bewege(schritte, i-1, b_name, a_name, c_name) 6. return schritte 7. 8. def algorithmus(): 9. return bewege([], 6, 'A', 'B', 'C')
![Page 42: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/42.jpg)
1. schritte = [\2. 'tuerme.AtoB()', \ #[654321][][] -> [65432][1][]3. 'tuerme.AtoC()', \ #[65432][1][] -> [6543][1][2]4. 'tuerme.BtoC()', \ #[6543][1][2] -> [6543][][21]5. 'tuerme.AtoB()', \ #[6543][][21] -> [654][3][21]6. 'tuerme.CtoA()', \ #[654][3][21] -> [6541][3][2]7. 'tuerme.CtoB()', \ #[6541][3][2] -> [6541][32][]8. 'tuerme.AtoB()', \ #[6541][32][] -> [654][321][]9. 'tuerme.AtoC()', \ #[654][321][] -> [65][321][4]10. 'tuerme.BtoC()', \ #[65][321][4] -> [65][32][41]11. 'tuerme.BtoA()', \ #[65][32][41] -> [652][3][41]12. 'tuerme.CtoA()', \ #[652][3][41] -> [6521][3][4]13. 'tuerme.BtoC()', \ #[6521][3][4] -> [6521][][43]14. 'tuerme.AtoB()', \ #[6521][][43] -> [652][1][43]15. 'tuerme.AtoC()', \ #[652][1][43] -> [65][1][432]16. 'tuerme.BtoC()', \ #[65][1][432] -> [65][][4321]17. 'tuerme.AtoB()', \ #[65][][4321] -> [6][5][4321]18. 'tuerme.CtoA()', \ #[6][5][4321] -> [61][5][432]19. 'tuerme.CtoB()', \ #[61][5][432] -> [61][52][43]
Türme von HanoiManuell
![Page 43: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/43.jpg)
Türme von HanoiMöglichkeiten
63>2
![Page 44: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/44.jpg)
9.223.372.036.854.775.808
Türme von HanoiMöglichkeiten
![Page 45: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/45.jpg)
Türme von HanoiMöglichkeiten
292.471.208 Jahre
![Page 46: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/46.jpg)
Türme von HanoiAutomatisch?
![Page 47: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/47.jpg)
Türme von HanoiZielfunktion
1. def min_zielfunktion(tuerme): return (21 - sum(tuerme.C))
![Page 48: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/48.jpg)
while (min_zielfunktion(loesung) > 0)neue_loesung = addNextStep(loesung)if (better(neue_loesung, loesung))loesung = neue_loesung
![Page 49: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/49.jpg)
DEMO
Türme von HanoiStochastischer Bergsteigeralgorithmus
![Page 50: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/50.jpg)
Türme von HanoiStochastischer Bergsteigeralgorithmus
['tuerme.AtoC()'] -> [65432][][1], Anzahl Schritte: 1, Zielwert: 20
![Page 51: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/51.jpg)
while (min_zielfunktion(loesung) > 0)neue_loesung = addNextStep(loesung)if (better(neue_loesung, loesung))loesung = neue_loesung
nach_1000_versuchen_neustarten:
![Page 52: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/52.jpg)
Türme von HanoiSuchraumlandschaft
![Page 53: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/53.jpg)
while (min_zielfunktion(loesung) > 0)neue_loesung = addNextStep(loesung)if (better(neue_loesung, loesung)
loesung = neue_loesungor 50/50_chance)
![Page 54: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/54.jpg)
DEMO
Türme von HanoiZufallsbewegung
![Page 55: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/55.jpg)
[tuerme.AtoB(), tuerme.BtoC(), tuerme.CtoB(), tuerme.BtoA(), tuerme.AtoB(), ...] -> [51][][6432], Anzahl Schritte: 2018, Zielwert: 6
Türme von HanoiZufallsbewegung
![Page 56: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/56.jpg)
while (min_zielfunktion(loesung) > 0)neue_loesung = addNextStep(loesung)if (better(neue_loesung, loesung)
loesung = neue_loesungor 50/50_chance)or decreasing_chance)
![Page 57: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/57.jpg)
Quelle: http://www.flickr.com/photos/51035774131@N01/27145468/in/photostream/
© crowbert
Türme von HanoiSimulierte Abkühlung
![Page 58: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/58.jpg)
Mehrere Suchen gleichzeitig?
![Page 60: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/60.jpg)
loesungen = []beste = get_beste(loesungen)while (min_zielfunktion(beste) > 0)
neue_loesungen = addNextSteps(loesungen)loesungen = getXBest(neue_loesungen)beste = get_beste(loesungen)
![Page 61: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/61.jpg)
![Page 62: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/62.jpg)
loesungen = []beste = get_beste(loesungen)while (min_zielfunktion(beste) > 0)
neue_loesungen = addNextSteps(loesungen)loesungen = getXBest(neue_loesungen)beste = get_beste(loesungen)
![Page 63: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/63.jpg)
![Page 64: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/64.jpg)
Quelle: http://cnx.org/content/m47304/latest/
© Robert Bear and David Rintoul
![Page 65: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/65.jpg)
Gen
Exon
Intron
Exon
![Page 66: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/66.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 67: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/67.jpg)
DEMO
Türme von HanoiGenetischer Algorithmus
![Page 68: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/68.jpg)
[tuerme.AtoB(), tuerme.AtoC(), tuerme.BtoA(), tuerme.AtoB(), tuerme.BtoA(), ...] -> [][][654321], Anzahl Schritte: 1727, Zielwert: 0
Türme von HanoiGenetischer Algorithmus
![Page 69: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/69.jpg)
Genetischer AlgorithmusEffizienz
66 Sekundenstatt
150 Mio. Jahre
![Page 70: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/70.jpg)
![Page 71: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/71.jpg)
Welche Fehler kann der Affe finden?
![Page 72: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/72.jpg)
When is a bug not a bug?
When it’s a feature!
![Page 73: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/73.jpg)
1. if (name[0] == '.') continue;
Is it a bug?
.
.. text.c other.files
![Page 74: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/74.jpg)
Is it a bug?
![Page 75: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/75.jpg)
Is it a bug?
![Page 76: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/76.jpg)
What is a bug?
Without specification, there are no bugs— only surprises.
Brian Kernighan“
![Page 77: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/77.jpg)
What is a bug?
Spezifikation Code
Nutzererwartung Code
Modell Code
![Page 78: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/78.jpg)
Monkey Testing
Spezifikation Code
Nutzererwartung Code
Modell Code
![Page 79: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/79.jpg)
Wozu testen wir?
NachImplementierung?
1 + 1 = 32 + 2 = 4
![Page 80: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/80.jpg)
![Page 81: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/81.jpg)
Wozu testen wir?
NachImplementierung?
1 + 1 = 32 + 2 = 4
NachÄnderung?
1 + 1 = 31 + 1 = 5
![Page 82: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/82.jpg)
![Page 83: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/83.jpg)
DIFFERENCE-TESTING
![Page 84: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/84.jpg)
![Page 85: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/85.jpg)
Wenn man nur einen Hammer hat
sieht alles aus wie ein Nagel…
![Page 86: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/86.jpg)
High test/code ratiois a symptom of high coupling in the code.
Or wasteful testing.
Kent Beck
“
![Page 87: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/87.jpg)
GRUNDPROBLEM
Software ändert sich!
![Page 88: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/88.jpg)
![Page 89: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/89.jpg)
![Page 90: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/90.jpg)
![Page 91: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/91.jpg)
![Page 92: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/92.jpg)
festes Set an Tests
zufallsbasiert
deterministisch
![Page 93: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/93.jpg)
Monkey-Testing/Genetischer Algorithmus
Testing/Behavioral Diff
![Page 94: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/94.jpg)
Mehr-Aufwand
Zeit
Einsparung
![Page 95: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/95.jpg)
Capture/ReplayGolden MasterVersionskontrolle
++= ReTest
![Page 96: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/96.jpg)
![Page 97: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/97.jpg)
Intelligenter Affe
Summary
Monkey-Testing:billigerschnellerbessermultipliziert manuelle Tests
Behavioral Diffkein Pflegeaufwandkein wasteful testingtrotzdem “vollständiges “ Testen
![Page 98: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/98.jpg)
![Page 99: Bei uns testen lauter Affen - Das Ende der Banensoftware](https://reader031.vdokument.com/reader031/viewer/2022030305/587452c61a28abd53e8b7005/html5/thumbnails/99.jpg)
Ende 2016