Unittests für Einsteiger
|
|
|
- Erna Ursler
- vor 10 Jahren
- Abrufe
Transkript
1 Unittests für Einsteiger Johannes Hubertz TroLUG: Troisdorf, 6. November 2014 Johannes Hubertz Unittests für Einsteiger TroLUG: Troisdorf, 6. November / 45
2 Vorstellungsrunde Weshalb Tests? Doctests am Beispiel TDD: Test driven development Ein wenig Theorie Unittests Grundlagen Beispiele Änderungen, Unittests zeigen Wirkung nosetests, tox Fragen und Kritik Johannes Hubertz Unittests für Einsteiger TroLUG: Troisdorf, 6. November / 45
3 Portfolio Netzwerk IPv4 und IPv6 Linux für Firewalls und VPN-Server (IPsec, StrongSwan, OpenVPN) Linux als Rendevous-Server mit OpenSSH Router: statisch, dynamisch, OSPF, OSPFv3, radvd,... Switch: bridge-utils, OpenVSwitch, Cisco TM... Virtualisierung Server: Xen, KVM, Clusterbau, Heartbeat, drbd, ISCSI... Firewalls: iptables sspe, ip6tables adm6 Netzwerk: pox, OpenVSwitch, Hardwareswitches, OpenStack... Shell, C, Perl und Python haben bisher stets zur Lösung geführt pythonic work under GNU General Public License adm6, conv, opti} Johannes Hubertz Unittests für Einsteiger TroLUG: Troisdorf, 6. November / 45
4 Warum wollen wir testen? Johannes Hubertz Unittests für Einsteiger TroLUG: Troisdorf, 6. November / 45
5 Wer redet von Softwarekrise? Komplexität steigt, Fehlerrate ist bestenfalls konstant Seit den 1980 ern ist die Rede von der Softwarekrise Fehlerfreiheit ist nicht herstellbar Software-Engineering Der Kunde ist der Tester ist die Lösung (seit den 1990 ern?) Wasserfallmodell, V-Modell Anforderungsprofile, Pflichtenheft, Lastenheft Modularisierung, Ada, 4th-GL,... Qualität wird besser, aber nicht gut Und heute? Continous Integration, SCRUM, bedarfsorientierte Entwicklung... Agile Methoden: Untested Software is broken by design... Johannes Hubertz Unittests für Einsteiger TroLUG: Troisdorf, 6. November / 45
6 doctest: Einfachste Methode, python code zu testen Der Python-Interpreter wird einfach nachempfunden, Aufruf: $ python -m doctest [-v] Textdatei Der Inhalt der Textdatei wird interpretiert: # Kommentar wird ignoriert >>> Python-Statment wird ausgeführt... eingerücktes Folge-Statment wird angehängt Leerzeile initiiert Ausführung vorheriger Zeilen Diese und nicht eingerückte Inhalte werden mit Ergebnis verglichen! Aufruf mit [-v] zeigt den Ablauf Johannes Hubertz Unittests für Einsteiger TroLUG: Troisdorf, 6. November / 45
7 Beispiel: README.txt mit doctest für ein dictionary 1 # README.txt as doctest example # 2 # 3 # first we create a variable of type dictionary 4 # then let us have one entry 5 >>> a = {} 6 >>> a[ color ] = blue 7 8 # What is the content? 9 >>> a 10 { color : blue } Ausführung: 1 hans@jha:~/ pycon- tests$ python -m doctest README.txt 2 hans@jha:~/ pycon- tests$ python -m doctest -v README.txt 3 Trying: 4 a = {} 5 Expecting nothing 6 ok 7 Trying: 8 a[ color ] = blue 9 Expecting nothing 10 ok 11 Trying: 12 a 13 Expecting: 14 { color : blue } 15 ok 16 1 items passed all tests: 17 3 tests in README.txt 18 3 tests in 1 items passed and 0 failed. 20 Test passed. 21 hans@jha:~/ pycon- tests$ Johannes Hubertz Unittests für Einsteiger TroLUG: Troisdorf, 6. November / 45
8 doctest kann auch in docstrings geschrieben sein und einiges mehr... Mehr zum Thema: Johannes Hubertz Unittests für Einsteiger TroLUG: Troisdorf, 6. November / 45
9 Mathematik macht glücklich Johannes Hubertz Unittests für Einsteiger TroLUG: Troisdorf, 6. November / 45
10 Definition: Sei M eine Menge. Seien N j (j,k J) Untermengen von M. Dann sind die N j eine Partition von M, wenn M = j JN j und N j N k = Noch Fragen? Johannes Hubertz Unittests für Einsteiger TroLUG: Troisdorf, 6. November / 45
11 Definition: Eine Äquivalenzrelation (Bezeichnung: ) ist eine zweistellige Relation, für die folgende Regeln gelten: 1: x x (reflexiv) Jedes Element steht zu sich selbst in Relation. 2: x y y x (symetrisch) Wenn x zu y, dann steht auch y zu x in Relation. 3: x y y z x z (transitiv) Wenn x zu y und y zu z, dann steht auch x zu z in Relation. Johannes Hubertz Unittests für Einsteiger TroLUG: Troisdorf, 6. November / 45
12 Satz: Sei M eine Menge Sei eine Äquvalenzrelation auf M. Für m M setzen wir: [m] = {m m M,m m} und nennen [m] die Äquvalenzklasse von m (bezüglich ). Damit gilt: M = [m] m M Ferner ist { [m] [m ] = 0 für m m [m] = [m ] für m m Sind [m j ] mit j J die verschiedenen Äquivalenzklassen, so ist M = j J[m j ] eine Partition von M. Johannes Hubertz Unittests für Einsteiger TroLUG: Troisdorf, 6. November / 45
13 Mathematik ist zu kompliziert? Ein Beispiel: Sei M eine Menge roter, gelber und grüner Kugeln. Äquivalenzrelation: x y Kugel x hat gleiche Farbe wie y. 1 Reflexivität: f(x) = f(x) 2 Symmetrie: f(x) = f(y) f(y) = f(x) 3 Transitivität: f(x) = f(y) f(y) = f(z) = f(x) = f(z) Äquivalenzklasse: M G = {x x M f(x) = gelb} alle gelben Kugeln. Eine Partition besteht aus der Vereinigung aller so gebildeten Teilmengen aus je den roten, gelben und grünen Kugeln. Alles klar? Früher sprachen wir auch von Fallunterscheidung Nur exakte Betrachtung ermöglicht exakte Lösung Mathematik kann helfen, Formalisierung unterstützt Johannes Hubertz Unittests für Einsteiger TroLUG: Troisdorf, 6. November / 45
14 Die Aufgabenstellung: Implementieren Sie Def.: Funktion signum(x), hier als sign(x) für x R: 1 für x > 0 sign(x) = 0 für x = 0 1 für x < 0 Wie kann das implementiert werden? Wieviele Fehlermöglichkeiten sind dabei? Nur mit den richtigen Tests wird Zuverlässigkeit erreicht Was sind die richtigen Tests? Anders gefragt, wie geht das? Die Antwort auf alle Fragen: Test Driven Development Johannes Hubertz Unittests für Einsteiger TroLUG: Troisdorf, 6. November / 45
15 TDD: Wie geht das? Vorgehensweise in mehreren Schritten 1 Umgebung definieren: def, Klasse oder Modul? 2 Äquivalenzklassen bestimmen 3 Grenzwerte feststellen 4 Prototyp schreiben ohne jeden Inhalt: pass 5a mind. 1 Test schreiben pro Äquivalenzklasse 5b Code zur Erfüllung der Tests in den Prototyp eintragen 5c Tests laufen lassen bis zur Fehlerfreiheit 6 Ergänzende Tests mit fehlerhaften Eingabewerten schreiben Johannes Hubertz Unittests für Einsteiger TroLUG: Troisdorf, 6. November / 45
16 Merke: Zuerst den Test, danach erst den Code schreiben. Das schafft Klarheit im Denken... Johannes Hubertz Unittests für Einsteiger TroLUG: Troisdorf, 6. November / 45
17 Def.: Funktion signum(x), hier als sign(x) für x R: 1 für x > 0 sign(x) = 0 für x = 0 1 für x < 0 Schritt 1: Umgebung definieren Der Einfachheit halber reicht hier ein def sign(x): Schritt 2: Äquivalenzklassen bestimmen Die Definition macht es uns einfach: > 0,= 0,< 0 Schritt 3: Grenzwerte bestimmen Die Null kennt zwei Annäherungen: 0, +0 Johannes Hubertz Unittests für Einsteiger TroLUG: Troisdorf, 6. November / 45
18 Schritt 4: Prototyp schreiben (Stichwort: pass) 1 import unittest 2 3 def sign ( input value ): 4 implementation of a math function : sign (x) 5 pass Johannes Hubertz Unittests für Einsteiger TroLUG: Troisdorf, 6. November / 45
19 Schritt 5: Ersten Test schreiben 8 import unittest 9 10 def sign ( input value ): 11 implementation of a math function : sign (x) 12 pass class Signtest ( unittest. TestCase ): 16 tests for sign (x) def test sign basic ( self ): 19 check basic return values >0 20 value = sign (1) 21 expect = 1 22 self. assertequal (expect, value, msg = think positive ) if name == main : 26 unittest. main() Schritt 5: Ersten Test ausführen 1 hans@jha:~/pycon-tests$./sign_1 2 F 3 ====================================================================== 4 FAIL: test_sign_basic ( main.signtest) 5 check basic return values Traceback (most recent call last): 8 File "./sign_1", line 22, in test_sign_basic 9 self.assertequal(expect, value, msg = "think positive") 10 AssertionError: think positive Ran 1 test in 0.001s FAILED (failures=1) 16 hans@jha:~/pycon-tests$ Johannes Hubertz Unittests für Einsteiger TroLUG: Troisdorf, 6. November / 45
20 Schritt 5: zu testende Funktion ändern, korrigieren 8 import unittest 9 10 def sign ( input value ): 11 implementation of a math function : sign (x) 12 return class Signtest ( unittest. TestCase ): 16 tests for sign (x) def test sign basic ( self ): 19 check basic return values >0 20 value = sign (1) 21 expect = 1 22 self. assertequal (expect, value, msg = think positive ) if name == main : 26 unittest. main() Schritt 5: Ersten Test nochmals ausführen 1 hans@jha:~/pycon-tests$./sign_1-ok -v 2 test_sign_basic ( main.signtest) 3 check basic return values... ok Ran 1 test in 0.000s 7 8 OK 9 hans@jha:~/pycon-tests$ Johannes Hubertz Unittests für Einsteiger TroLUG: Troisdorf, 6. November / 45
21 Schritt 5: Zweiten Test schreiben 10 def sign ( input value ): 11 implementation of a math function : sign (x) 12 return class Signtest ( unittest. TestCase ): 16 tests for sign (x) def test sign basic ( self ): 19 check basic return values >0 20 value = sign (1) 21 expect = 1 22 self. assertequal (expect, value, msg = think positive ) def test sign negative ( self ): 25 check basic return values <0 26 value = sign( 1) 27 expect = 1 28 self. assertequal (expect, value, msg = think negative ) if name == main : 32 unittest. main() Schritt 5: Zweiten Test ausführen 1 hans@jha:~/pycon-tests$./sign_1_-1 2 F. 3 ====================================================================== 4 FAIL: test_sign_negative ( main.signtest) 5 check basic return values: < Traceback (most recent call last): 8 File "./sign_1_-1", line 28, in test_sign_negative 9 self.assertequal(expect, value, msg = "think negative") 10 AssertionError: think negative Ran 2 tests in 0.001s FAILED (failures=1) 16 hans@jha:~/pycon-tests$ Johannes Hubertz Unittests für Einsteiger TroLUG: Troisdorf, 6. November / 45
22 Schritt 5: zu testende Funktion ändern, korrigieren 10 def sign ( input value ): 11 implementation of a math function : sign (x) 12 i f input value < 0: 13 return 1 14 return class Signtest ( unittest. TestCase ): 18 tests for sign (x) def test sign basic ( self ): 21 check basic return values >0 22 value = sign (1) 23 expect = 1 24 self. assertequal (expect, value, msg = think positive ) def test sign negative ( self ): 27 check basic return values <0 28 value = sign( 1) 29 expect = 1 30 self. assertequal (expect, value, msg = think negative ) if name == main : 34 unittest. main() Schritt 5: Zweiten Test nochmals ausführen 1 hans@jha:~/pycon-tests$./sign_1_-1-ok -v 2 test_sign_negative ( main.signtest) 3 check basic return values: <0... ok 4 test_sign_positive ( main.signtest) 5 check basic return values: >0... ok Ran 2 tests in 0.001s 9 10 OK 11 hans@jha:~/pycon-tests$ Johannes Hubertz Unittests für Einsteiger TroLUG: Troisdorf, 6. November / 45
23 Schritt 5: Dritten Test schreiben 10 def sign ( input value ): 11 implementation of a math function : sign (x) 12 i f input value < 0: 13 return 1 14 return class Signtest ( unittest. TestCase ): 18 tests for sign (x) def test sign basic ( self ): 21 check basic return values >0 22 value = sign (1) 23 expect = 1 24 self. assertequal (expect, value, msg = think positive ) def test sign zero ( self ): 27 check basic return values =0 28 value = sign (0) 29 expect = 0 30 self. assertequal (expect, value, msg = think of zero ) def test sign negative ( self ): 33 check basic return values <0 Schritt 5: Dritten Test ausführen 1 hans@jha:~/pycon-tests$./sign_1_0_-1 2..F 3 ====================================================================== 4 FAIL: test_sign_zero ( main.signtest) 5 check basic return values: = Traceback (most recent call last): 8 File "./sign_1_0_-1", line 30, in test_sign_zero 9 self.assertequal(expect, value, msg = "think of zero") 10 AssertionError: think of zero Ran 3 tests in 0.005s FAILED Johannes (failures=1) Hubertz Unittests für Einsteiger TroLUG: Troisdorf, 6. November / 45
24 Schritt 5: Dritten Test schreiben 10 def sign ( input value ): 11 implementation of a math function : sign (x) 12 i f input value < 0: 13 return 1 14 if input value == 0: 15 return 0 16 return class Signtest ( unittest. TestCase ): 20 tests for sign (x) def test sign basic ( self ): 23 check basic return values >0 24 value = sign (1) 25 expect = 1 26 self. assertequal (expect, value, msg = think positive ) def test sign zero ( self ): 29 check basic return values =0 30 value = sign (0) 31 expect = 0 32 self. assertequal (expect, value, msg = think of zero ) def test sign negative ( self ): 35 check basic return values <0 Schritt 5: Dritten Test ausführen 1 hans@jha:~/pycon-tests$./sign_1_0_ Ran 3 tests in 0.001s 5 6 OK 7 hans@jha:~/pycon-tests$ Johannes Hubertz Unittests für Einsteiger TroLUG: Troisdorf, 6. November / 45
25 Rückblick, Verbesserungspotential? 17 class Signtest ( unittest. TestCase ): 18 tests for sign (x) def test sign basic ( self ): 21 check basic return values >0 22 value = sign (1) 23 expect = 1 24 self. assertequal (expect, value, msg = think positive ) def test sign zero ( self ): 27 check basic return values =0 28 value = sign (0) 29 expect = 0 30 self. assertequal (expect, value, msg = think of zero ) def test sign negative ( self ): 33 check basic return values <0 34 value = sign( 1) 35 expect = 1 36 self. assertequal (expect, value, msg = think negative ) if name == main : 40 unittest. main() Johannes Hubertz Unittests für Einsteiger TroLUG: Troisdorf, 6. November / 45
26 Verbesserungspotential: Überflüssige Variablen und überflüssige Methoden 17 class Signtest ( unittest. TestCase ): 18 tests for sign (x) def test sign basic ( self ): 21 check basic return values >0, =0, <0 22 self. assertequal (1, sign (1), msg = think positive ) 23 self. assertequal (0, sign (0), msg = think of zero ) 24 self. assertequal( 1, sign( 1), msg = think negative ) if name == main : 28 unittest. main() Johannes Hubertz Unittests für Einsteiger TroLUG: Troisdorf, 6. November / 45
27 class TestCase hat Methoden : Method checks that assertequal(a, b) a == b assertnotequal(a,b) a!= b asserttrue(x) bool(x) is True assertfalse(x) bool(x) is False assertis(a, b) a is b assertisnot(a, b) a is not b assertisnone(x) a is None assertisnotnone(x) a is not None assertin(a, b) a in b assertnotin(a, b) a not in b assertisinstance(a, b) isinstance(a, b) assertnotisinstance(a, b) not isinstance(a, b) Johannes Hubertz Unittests für Einsteiger TroLUG: Troisdorf, 6. November / 45
28 class TestCase hat Methoden : Method checks that assertraises(exc, fun, *args, **kwds) fun(*args, **kwds) raises exc assertraisesregexp(exc, r, fun, *args, **kwds) fun(*args, **kwds) raises exc and the message matches regex r Johannes Hubertz Unittests für Einsteiger TroLUG: Troisdorf, 6. November / 45
29 Die Aufgabenstellung: Implementieren Sie Def.: Funktion Complex signum(z), hier als csign(z) für z C: 1 für R(z) > 0 csign(z) = 1 für R(z) < 0 sign(i(z)) für R(z) = 0 Merke: Zuerst den Test, danach erst den Code schreiben. Das schafft Klarheit im Denken... Have fun! Johannes Hubertz Unittests für Einsteiger TroLUG: Troisdorf, 6. November / 45
30 Schritt 5: Prototyp mit pass und Test schreiben 12 def csign ( input value ): implementation of a math function : csign (z) 15 z must be a complex number pass class Csigntest ( unittest. TestCase ): tests for csign (x) def test 01 sign complex ( self ): check correct return values of csign self. assertequal (1, csign (complex(1, 2)), msg = think positive ) 28 self. assertequal (1, csign (complex(0, 2)), msg = think zero positive ) 29 self. assertequal (0, csign (complex(0, 0)), msg = think of zero ) 30 self. assertequal( 1, csign (complex(0, 2)), msg = think zero negative ) 31 self. assertequal( 1, csign (complex( 1, 1)), msg = think negative ) if name == main : 35 unittest. main() Schritt 5: Ersten Test ausführen 1 hans@jha:~/pycon-tests$ python csign_1.py -f 2 F 3 ====================================================================== 4 FAIL: test_01_sign_complex ( main.csigntest) Traceback (most recent call last): 7 File "csign_1.py", line 27, in test_01_sign_complex 8 self.assertequal(1, csign(complex(1,2)), msg = "think positive") 9 AssertionError: think positive Ran 1 test in 0.006s FAILED (failures=1) 15 hans@jha:~/pycon-tests$ Johannes Hubertz Unittests für Einsteiger TroLUG: Troisdorf, 6. November / 45
31 Schritt 5: Funktion testerfüllend schreiben 12 def csign ( input value ): implementation of a math function : csign (z) 15 z must be a complex number if type( input value ) == complex : 18 re = input value. real 19 im = input value. imag 20 if re <> 0: 21 return sign ( re ) 22 else : 23 return sign ( im) 24 else : 25 msg = csign (z) only accepts type complex 26 raise ValueError, msg class Csigntest ( unittest. TestCase ): tests for csign (x) def test 01 sign complex ( self ): check correct return values of csign self. assertequal (1, csign (complex(1, 2)), msg = think positive ) 38 self. assertequal (1, csign (complex(0, 2)), msg = think zero positive ) 39 self. assertequal (0, csign (complex(0, 0)), msg = think of zero ) 40 self. assertequal( 1, csign (complex(0, 2)), msg = think zero negative ) 41 self. assertequal( 1, csign (complex( 1, 1)), msg = think negative ) Johannes Hubertz Unittests für Einsteiger TroLUG: Troisdorf, 6. November / 45
32 Schritt 5: Funktion testerfüllend schreiben 12 def csign ( input value ): implementation of a math function : csign (z) 15 z must be a complex number if type( input value ) == complex : 18 re = input value. real 19 im = input value. imag 20 if re <> 0: 21 return sign ( re ) 22 else : 23 return sign ( im) 24 else : 25 msg = csign (z) only accepts type complex 26 raise ValueError, msg class Csigntest ( unittest. TestCase ): tests for csign (x) def test 01 sign complex ( self ): check correct return values of csign self. assertequal (1, csign (complex(1, 2)), msg = think positive ) 38 self. assertequal (1, csign (complex(0, 2)), msg = think zero positive ) 39 self. assertequal (0, csign (complex(0, 0)), msg = think of zero ) 40 self. assertequal( 1, csign (complex(0, 2)), msg = think zero negative ) 41 self. assertequal( 1, csign (complex( 1, 1)), msg = think negative ) Schritt 5: Ersten Test ausführen 1 hans@jha:~/pycon-tests$ python csign_1_1.py -v 2 test_01_sign_complex ( main.csigntest)... ok Ran 1 test in 0.004s 6 7 OK 8 hans@jha:~/pycon-tests$ Johannes Hubertz Unittests für Einsteiger TroLUG: Troisdorf, 6. November / 45
33 Schritt 5: Tests komplettieren 12 def csign ( input value ): implementation of a math function : csign (z) 15 z must be a complex number if type( input value ) == complex : 18 re = input value. real 19 im = input value. imag 20 if re <> 0: 21 return sign ( re ) 22 else : 23 return sign ( im) 24 else : 25 msg = csign (z) only accepts type complex 26 raise ValueError, msg class Csigntest ( unittest. TestCase ): def test 02 sign complex execption ( self ): check exceptions of csign expect = csign (z) only accepts type complex 36 value = try : 38 csign ( value ) 39 self. assertfail () 40 except Exception as inst : 41 self. assertequal ( inst. message, expect ) Johannes Hubertz Unittests für Einsteiger TroLUG: Troisdorf, 6. November / 45
34 Schritt 5: Tests komplettieren 12 def csign ( input value ): implementation of a math function : csign (z) 15 z must be a complex number if type( input value ) == complex : 18 re = input value. real 19 im = input value. imag 20 if re <> 0: 21 return sign ( re ) 22 else : 23 return sign ( im) 24 else : 25 msg = csign (z) only accepts type complex 26 raise ValueError, msg class Csigntest ( unittest. TestCase ): def test 03 sign complex other types ( self ): check exceptions of csign for list, dict, etc expect = csign (z) only accepts type complex 36 values = [[1, 2, ], { a : 4711}, string type, ] 37 for value in values : 38 try : 39 csign ( value ) 40 self. assertfail () 41 except Exception as inst : 42 self. assertequal ( inst. message, expect ) Johannes Hubertz Unittests für Einsteiger TroLUG: Troisdorf, 6. November / 45
35 Schritt 5: Komplettierten Test ausführen 1 hans@jha:~/pycon-tests$./ csign_1_ok.py -f Ran 3 tests in 0.001s 5 6 OK 7 hans@jha:~/pycon-tests$./ csign_1_ok.py -f -v 8 test_01_sign_complex ( main.csigntest)... ok 9 test_02_sign_complex_execption ( main.csigntest)... ok 10 test_03_sign_complex_other_types ( main.csigntest)... ok Ran 3 tests in 0.005s OK 16 hans@jha:~/pycon-tests$ Johannes Hubertz Unittests für Einsteiger TroLUG: Troisdorf, 6. November / 45
36 Schritt 5: Komplettierten Test mit nosetests ausführen 1 hans@jha:~/pycon-tests$ nosetests csign_1_ok.py -v 2 check correct return values of csign... ok 3 check exceptions of csign... ok 4 check exceptions of csign for list, dict, etc... ok Ran 3 tests in 0.002s 8 9 OK 10 hans@jha:~/pycon-tests$ Johannes Hubertz Unittests für Einsteiger TroLUG: Troisdorf, 6. November / 45
37 Schritt 5: nosetests mit Testabdeckung und html-ausgabe 1 hans@jha:~/pycon-tests$ nosetests -v sign_5.py csign_1_ok.py --with-coverage --cover-html 2 check return values for integer numbers... ok 3 check return values for floating numbers... ok 4 check exception for list input... ok 5 check exception for complex numbers... ok 6 check correct return values of csign... ok 7 check exceptions of csign... ok 8 check exceptions of csign for list, dict, etc... ok 9 10 Name Stmts Miss Cover Missing csign_1_ok % 51, 64, sign_ % 55, 68, TOTAL % Ran 7 tests in 0.007s OK 20 hans@jha:~/pycon-tests$ Johannes Hubertz Unittests für Einsteiger TroLUG: Troisdorf, 6. November / 45
38 Johannes Hubertz Unittests für Einsteiger TroLUG: Troisdorf, 6. November / 45
39 Verschiedene Wege... Konfuzius: Auch der längste Weg beginnt mit dem ersten Schritt f 1 a 1. Unittests für alle Funktionen erfüllen b f 2 d 2. Alle Übergänge getestet? f 3 c f 4 e g f 5 f 6 f 3. Mögliche Pfade finden = Äquivalenzklassen bilden! [[a, c, g, ], [a, b, e, g, ], [a, d, f, ], ] Mögliche Formen: (chain, branch, junction, loop) 4. Modultest / Integrationstest entwerfen 5. Design / Anforderungen erfüllt? Johannes Hubertz Unittests für Einsteiger TroLUG: Troisdorf, 6. November / 45
40 tox: Noch ein interessantes Werkzeug Johannes Hubertz Unittests für Einsteiger TroLUG: Troisdorf, 6. November / 45
41 tox: Universelles Werkzeug nicht nur für Tests... Beliebige Programme zum Test Beliebige Python Versionen Virtualenv pro Test As you like it Johannes Hubertz Unittests für Einsteiger TroLUG: Troisdorf, 6. November / 45
42 tox: nosetests für beide Dateien ausführen mit Testabdeckung 1 hans@jha:~/pycon-tests$ cat tox.ini 2 [tox] 3 envlist = py26, py27 4 #envlist = py26, py27, pep8 5 6 [testenv] 7 commands = 8 /usr/local/bin/nosetests 9 /usr/bin/nosetests [testenv:py26] 12 basepython = 13 python commands = 15 python setup.py clean 16 python setup.py build 17 /usr/local/bin/nosetests -v sign_5.py csign_1_ok.py [testenv:py27] 20 basepython = 21 python commands = 23 python setup.py clean 24 python setup.py build 25 /usr/local/bin/nosetests -v sign_5.py csign_1_ok.py [testenv:py32] 28 basepython = 29 python commands = 31 /usr/bin/2to3 --add-suffix= 3 -n -w./sign_5.py 32 /usr/bin/2to3 --add-suffix= 3 -n -w./ csign_1_ok.py 33 /usr/bin/python3.2 setup.py clean 34 /usr/bin/python3.2 setup.py build 35 /usr/bin/nosetests3 -v sign_5.py3 csign_1_ok.py [testenv:pep8] 38 commands = 39 /usr/local/bin/pep8 --show-pep8 --show-source sign_5.py csign_1_ok.py 40 hans@jha:~/pycon-tests$ Johannes Hubertz Unittests für Einsteiger TroLUG: Troisdorf, 6. November / 45
43 tox: nosetests für beide Dateien ausführen mit Testabdeckung 1 hans@jha:~/pycon-tests$ tox 2 GLOB sdist-make: /home/hans/arch/2012/04/15/ pycon/examples/setup.py 3 py26 inst-nodeps: /home/hans/arch/2012/04/15/ pycon/examples/.tox/dist/pycon-examples zip 4 py26 runtests: commands[0] 5 running clean 6 py26 runtests: commands[1] 7 running build 8 running build_py 9 py26 runtests: commands[2] 10 check return values for integer numbers... ok 11 check return values for floating numbers... ok 12 check exception for list input... ok 13 check exception for complex numbers... ok 14 check correct return values of csign... ok 15 check exceptions of csign... ok 16 check exceptions of csign for list, dict, etc... ok Ran 7 tests in 0.004s OK 22 py27 inst-nodeps: /home/hans/arch/2012/04/15/ pycon/examples/.tox/dist/pycon-examples zip 23 py27 runtests: commands[0] 24 running clean 25 py27 runtests: commands[1] 26 running build 27 running build_py 28 py27 runtests: commands[2] 29 check return values for integer numbers... ok 30 check return values for floating numbers... ok 31 check exception for list input... ok 32 check exception for complex numbers... ok 33 check correct return values of csign... ok 34 check exceptions of csign... ok 35 check exceptions of csign for list, dict, etc... ok Ran 7 tests in 0.004s OK 41 summary 42 py26: commands succeeded 43 py27: commands succeeded 44 congratulations :) 45 hans@jha:~/pycon-tests$ Johannes Hubertz Unittests für Einsteiger TroLUG: Troisdorf, 6. November / 45
44 Quellen und Hinweise Python Testing Cookbook, Pact Publishing, 2011 Python Testing Beginners Guide, Pact Publishing, Untested Software is broken by design Johannes Hubertz Unittests für Einsteiger TroLUG: Troisdorf, 6. November / 45
45 Ich bedanke mich für Ihre Aufmerksamkeit hubertz-it-consulting GmbH jederzeit zu Ihren Diensten: verlässliche Netzwerke für vertrauliche Kommunikation Ihre Sicherheit ist uns wichtig! it-consulting at hubertz dot de Frohes Schaffen Johannes Hubertz powered by and L A TEX2ε Johannes Hubertz Unittests für Einsteiger TroLUG: Troisdorf, 6. November / 45
Test-Driven Design: Ein einfaches Beispiel
Test-Driven Design: Ein einfaches Beispiel Martin Wirsing in Zusammenarbeit mit Moritz Hammer und Axel Rauschmayer SS 06 2 Ziele Veranschaulichung der Technik des Test-Driven Design am Beispiel eines Programms
Die Post hat eine Umfrage gemacht
Die Post hat eine Umfrage gemacht Bei der Umfrage ging es um das Thema: Inklusion Die Post hat Menschen mit Behinderung und Menschen ohne Behinderung gefragt: Wie zufrieden sie in dieser Gesellschaft sind.
Projektmanagement. Vorlesung von Thomas Patzelt 9. Vorlesung
Projektmanagement Vorlesung von Thomas Patzelt 9. Vorlesung 1 Pläne Kein Plan überlebt die erste Feindberührung - Feldmarschall Helmuth von Moltke Prognosen sind schwierig, besonders wenn sie die Zukunft
Professionelle Seminare im Bereich MS-Office
Der Name BEREICH.VERSCHIEBEN() ist etwas unglücklich gewählt. Man kann mit der Funktion Bereiche zwar verschieben, man kann Bereiche aber auch verkleinern oder vergrößern. Besser wäre es, die Funktion
Testen mit JUnit. Motivation
Test First Design for Test in Eclipse (eigentlich: ) zu einer Klasse Beispiel zur Demonstration Ergänzungen Test First "Immer dann, wenn Du in Versuchung kommst, etwas wie eine print- Anweisung oder einen
Übungen 19.01.2012 Programmieren 1 Felix Rohrer. Übungen
Übungen if / else / else if... 2... 2 Aufgabe 2:... 2 Aufgabe 3:... 2 Aufgabe 4:... 2 Aufgabe 5:... 2 Aufgabe 6:... 2 Aufgabe 7:... 3 Aufgabe 8:... 3 Aufgabe 9:... 3 Aufgabe 10:... 3 switch... 4... 4 Aufgabe
Suchmaschinen. Universität Augsburg, Institut für Informatik SS 2014 Prof. Dr. W. Kießling 23. Mai 2014 Dr. M. Endres, F. Wenzel Lösungsblatt 6
Universität Augsburg, Institut für Informatik SS 2014 Prof. Dr. W. Kießling 23. Mai 2014 Dr. M. Endres, F. Wenzel Lösungsblatt 6 Aufgabe 1: Pareto mit SV-Semantik Suchmaschinen Pareto Definition: x < P
Fortgeschrittenes Programmieren mit Java. Test Driven Development
Fortgeschrittenes Programmieren mit Java Test Driven Development Test getriebene Programmierung Benedikt Boeck Hochschule für Angewandte Wissenschaften Hamburg 6. November 2009 B. Boeck (HAW Hamburg) Test
Workshop: Eigenes Image ohne VMware-Programme erstellen
Workshop: Eigenes Image ohne VMware-Programme erstellen Normalerweise sind zum Erstellen neuer, kompatibler Images VMware-Programme wie die Workstation, der ESX-Server oder VMware ACE notwendig. Die Community
Wir machen neue Politik für Baden-Württemberg
Wir machen neue Politik für Baden-Württemberg Am 27. März 2011 haben die Menschen in Baden-Württemberg gewählt. Sie wollten eine andere Politik als vorher. Die Menschen haben die GRÜNEN und die SPD in
Babeș-Bolyai Universität Cluj Napoca Fakultät für Mathematik und Informatik Grundlagen der Programmierung MLG5005. Modulare Programmierung
Babeș-Bolyai Universität Cluj Napoca Fakultät für Mathematik und Informatik Grundlagen der Programmierung MLG5005 Modulare Programmierung Test Driven Development Refactoring Modular programmierung der
5 DATEN. 5.1. Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu
Daten Makro + VBA effektiv 5 DATEN 5.1. Variablen Variablen können beliebige Werte zugewiesen und im Gegensatz zu Konstanten jederzeit im Programm verändert werden. Als Variablen können beliebige Zeichenketten
Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:
VBA Programmierung mit Excel Schleifen 1/6 Erweiterung der Aufgabe Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen: Es müssen also 11 (B L) x 35 = 385 Zellen berücksichtigt
Übung zur Algebra WiSe 2008/2009, Blatt 1
Aufgabe 1: Zeigen Sie, dass die Untergruppe der Permutationsmatrizen in GL(n, R) isomorph zur symmetrischen Gruppe S n ist. Es sei Perm n die Menge der Permutationsmatrizen in GL(n, R). Der Isomorphismus
.NET Code schützen. Projekt.NET. Version 1.0
.NET Code schützen Projekt.NET Informationsmaterial zum Schützen des.net Codes Version 1.0 Autor: Status: Ablage: Empfänger: Seiten: D. Hoyer 1 / 6 Verteiler : Dokument1 Seite 1 von 1 Änderungsprotokoll
! " # $ " % & Nicki Wruck worldwidewruck 08.02.2006
!"# $ " %& Nicki Wruck worldwidewruck 08.02.2006 Wer kennt die Problematik nicht? Die.pst Datei von Outlook wird unübersichtlich groß, das Starten und Beenden dauert immer länger. Hat man dann noch die.pst
Bauteilattribute als Sachdaten anzeigen
Mit den speedikon Attributfiltern können Sie die speedikon Attribute eines Bauteils als MicroStation Sachdaten an die Elemente anhängen Inhalte Was ist ein speedikon Attribut?... 3 Eigene Attribute vergeben...
Sie müssen sich für diesen Fall mit IHREM Rechner (also zeitgut jk o.ä.) verbinden, nicht mit dem Terminalserver.
Sie müssen sich für diesen Fall mit IHREM Rechner (also zeitgut jk o.ä.) verbinden, nicht mit dem Terminalserver. Am 15.08.2015 um 21:03 schrieb Jürgen Kleindienst : bei einer Terminalsitzung steht mir
Konfiguration eines DNS-Servers
DNS-Server Grundlagen des Themas DNS sind im Kapitel Protokolle und Dienste in meinem Buch (LINUX erschienen im bhv-verlag) beschrieben. Als Beispiel dient ein Intranet mit mehreren Webservern auf verschiedenen
Einrichten einer Festplatte mit FDISK unter Windows 95/98/98SE/Me
Einrichten einer Festplatte mit FDISK unter Windows 95/98/98SE/Me Bevor Sie die Platte zum ersten Mal benutzen können, muss sie noch partitioniert und formatiert werden! Vorher zeigt sich die Festplatte
AW: AW: AW: AW: Kooperationsanfrage anwalt.de
Seite 1 von 5 AW: AW: AW: AW: Kooperationsanfrage anwalt.de Di 13.08.2013 08:31 An:'Rene Meier' ; ich freue mich, dass alles noch so gut funktioniert hat. Die Logointegration
Einrichtung des Cisco VPN Clients (IPSEC) in Windows7
Einrichtung des Cisco VPN Clients (IPSEC) in Windows7 Diese Verbindung muss einmalig eingerichtet werden und wird benötigt, um den Zugriff vom privaten Rechner oder der Workstation im Home Office über
Verarbeitung der Eingangsmeldungen in einem Callcenter
Q-up ist ein Produkt der: Anwendungsbeispiele Verarbeitung der Eingangsmeldungen in einem Callcenter Der Testdatengenerator Der Testdatengenerator Verarbeitung der Eingangsmeldungen in einem Callcenter
TrueCrypt Anleitung: Datenschutz durch Festplattenverschlüsselung
TrueCrypt Anleitung: Datenschutz durch Festplattenverschlüsselung 1. Installation Seite 2 2. Datenträger mittels Truecrypt verschlüsseln Seite 2 a) Container erstellen Seite 3 b) Normales Volumen Seite
Leichte-Sprache-Bilder
Leichte-Sprache-Bilder Reinhild Kassing Information - So geht es 1. Bilder gucken 2. anmelden für Probe-Bilder 3. Bilder bestellen 4. Rechnung bezahlen 5. Bilder runterladen 6. neue Bilder vorschlagen
Anlegen eines SendAs/RecieveAs Benutzer unter Exchange 2003, 2007 und 2010
1 von 6 Anlegen eines SendAs/RecieveAs Benutzer unter Exchange 2003, 2007 und 2010 ci solution GmbH 2010 Whitepaper Draft Anleitung Deutsch Verfasser: ci solution GmbH 2010 Manfred Büttner 16. September
SEP 114. Design by Contract
Design by Contract SEP 114 Design by Contract Teile das zu entwickelnde Programm in kleine Einheiten (Klassen, Methoden), die unabhängig voneinander entwickelt und überprüft werden können. Einheiten mit
SMART Newsletter Education Solutions April 2015
SMART Education Newsletter April 2015 SMART Newsletter Education Solutions April 2015 Herzlich Willkommen zur aktuellen Ausgabe des Westcon & SMART Newsletters jeden Monat stellen wir Ihnen die neuesten
Satzhilfen Publisher Seite Einrichten
Satzhilfen Publisher Seite Einrichten Es gibt verschiedene Möglichkeiten die Seite einzurichten, wir fangen mit der normalen Version an, Seite einrichten auf Format A5 Wählen Sie zunächst Datei Seite einrichten,
Folgende Einstellungen sind notwendig, damit die Kommunikation zwischen Server und Client funktioniert:
Firewall für Lexware professional konfigurieren Inhaltsverzeichnis: 1. Allgemein... 1 2. Einstellungen... 1 3. Windows XP SP2 und Windows 2003 Server SP1 Firewall...1 4. Bitdefender 9... 5 5. Norton Personal
Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen
Binäre Bäume 1. Allgemeines Binäre Bäume werden grundsätzlich verwendet, um Zahlen der Größe nach, oder Wörter dem Alphabet nach zu sortieren. Dem einfacheren Verständnis zu Liebe werde ich mich hier besonders
Güte von Tests. die Wahrscheinlichkeit für den Fehler 2. Art bei der Testentscheidung, nämlich. falsch ist. Darauf haben wir bereits im Kapitel über
Güte von s Grundlegendes zum Konzept der Güte Ableitung der Gütefunktion des Gauss im Einstichprobenproblem Grafische Darstellung der Gütefunktionen des Gauss im Einstichprobenproblem Ableitung der Gütefunktion
Einführung in TexMaker
Einführung in TexMaker 23. November 2007 TexMaker ist ein ist ein freier Texteditor für LA TE X-Dokumente unter Windows. Mit diesem Editor lassen sich ohne große Schwierigkeiten *.tex-dokumente aufrufen,
Installation mit Lizenz-Server verbinden
Einsteiger Fortgeschrittene Profis [email protected] Version 1.0 Voraussetzungen für diesen Workshop 1. Die M-Quest Suite 2005-M oder höher ist auf diesem Rechner installiert 2. Der M-Lock 2005 Lizenzserver
FRONT CRAFT. www.frontcraft.com [email protected]
FRONT CRAFT Viele Menschen und viele Unternehmen haben eine Webseite. Jede neue, die dazu kommt, sollte nicht nur gut, sondern erstklassig sein. Das ist unsere Leidenschaft. FrontCraft. www.frontcraft.com
Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER
AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER Inhalt 1 Einleitung... 1 2 Einrichtung der Aufgabe für die automatische Sicherung... 2 2.1 Die Aufgabenplanung... 2 2.2 Der erste Testlauf... 9 3 Problembehebung...
Nach der Installation kann es auch schon losgehen. Für unseren Port Scanner erstellen wir zunächst ein neues Projekt:
Ein Port Scanner ist eine gute Möglichkeit den eigenen Server auf offene Ports zu scannen. Zu viele nicht benötigte und offene Ports können auf Ihrem Server und auf Ihrem Computer ein Sicherheitsrisiko
Anleitung über den Umgang mit Schildern
Anleitung über den Umgang mit Schildern -Vorwort -Wo bekommt man Schilder? -Wo und wie speichert man die Schilder? -Wie füge ich die Schilder in meinen Track ein? -Welche Bauteile kann man noch für Schilder
Arbeitsblätter. Sinnvolle Finanzberichte. Seite 19
Seite 19 Arbeitsblätter Seite 20 Dieses Arbeitsblatt wird Sie Schritt für Schritt durch das Verfahren von Finanzanalysen geleiten. Sie gehen von Ihren Finanzberichten aus egal wie einfach oder hoch entwickelt
Zukunft der WfbM Positionspapier des Fachausschusses IV
Hessen Diakonie Hessen Positionspapier zur Zukunft der WfbM 1 Zukunft der WfbM Positionspapier des Fachausschusses IV Diakonisches Werk in Hessen und Nassau und Kurhessen-Waldeck e.v. Leichte Sprache 8
Stapelverarbeitung Teil 1
Stapelverarbeitung Teil 1 In jedem Unternehmen gibt es von Zeit zu Zeit Änderungen in Normen und Firmenstandards, an die aktuelle und bereits bestehende Zeichnungen angepasst werden müssen. Auch Fehler
Informationen zum Ambulant Betreuten Wohnen in leichter Sprache
Informationen zum Ambulant Betreuten Wohnen in leichter Sprache Arbeiterwohlfahrt Kreisverband Siegen - Wittgenstein/ Olpe 1 Diese Information hat geschrieben: Arbeiterwohlfahrt Stephanie Schür Koblenzer
Internet online Update (Mozilla Firefox)
Um Ihr Consoir Beta immer schnell und umkompliziert auf den aktuellsten Stand zu bringen, bieten wir allen Kunden ein Internet Update an. Öffnen Sie Ihren Mozilla Firefox und gehen auf unsere Internetseite:
teischl.com Software Design & Services e.u. [email protected] www.teischl.com/booknkeep www.facebook.com/booknkeep
teischl.com Software Design & Services e.u. [email protected] www.teischl.com/booknkeep www.facebook.com/booknkeep 1. Erstellen Sie ein neues Rechnungsformular Mit book n keep können Sie nun Ihre eigenen
Constraint-Algorithmen in Kürze - Mit der Lösung zur Path-Consistency-Aufgabe 9
Constraint-Algorithmen in Kürze - Mit der Lösung zur Path-Consistency-Aufgabe 9 Prof. Dr. W. Conen Version 1.0c Januar 2009 Genereller Ablauf der Suche Gegeben: Variablen X, Domains D, Constraints R (explizit
Daten haben wir reichlich! 25.04.14 The unbelievable Machine Company 1
Daten haben wir reichlich! 25.04.14 The unbelievable Machine Company 1 2.800.000.000.000.000.000.000 Bytes Daten im Jahr 2012* * Wenn jedes Byte einem Buchstaben entspricht und wir 1000 Buchstaben auf
Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.
Schritt 1: Installation des Javacompilers JDK. Der erste Start mit Eclipse Bevor Sie den Java-Compiler installieren sollten Sie sich vergewissern, ob er eventuell schon installiert ist. Gehen sie wie folgt
Sie finden im Folgenden drei Anleitungen, wie Sie sich mit dem Server der Schule verbinden können:
FTP-Zugang zum Schulserver Sie finden im Folgenden drei Anleitungen, wie Sie sich mit dem Server der Schule verbinden können: Zugang mit dem Internet Explorer (zum download von Dateien) Zugang mit dem
Was meinen die Leute eigentlich mit: Grexit?
Was meinen die Leute eigentlich mit: Grexit? Grexit sind eigentlich 2 Wörter. 1. Griechenland 2. Exit Exit ist ein englisches Wort. Es bedeutet: Ausgang. Aber was haben diese 2 Sachen mit-einander zu tun?
SCHNELLEINSTIEG ZUM TOOL NODEBUILDER
Fakultät Informatik, Institut für Angewandte Informatik, Professur Technische Informationssysteme SCHNELLEINSTIEG ZUM TOOL NODEBUILDER Betreuer: Dipl.-Ing. A. Cemal Özlük Dipl.-Inf. Uwe Ryssel ALLGEMEINE
Autorisierung von ArcGIS 10.3 for Server mit Internetverbindung
Autorisierung von ArcGIS 10.3 for Server mit Internetverbindung (Februar 2015) Copyright 2015 Esri Deutschland GmbH Inhalt 1 Einleitung... 3 2 Voraussetzungen... 3 3 Aktualisierungsprozess... 3 4 Überprüfung
Wie kann man beweisen, dass (H, ) eine Gruppe ist?
Wie kann man beweisen, dass (H, ) eine Gruppe ist? Wie kann man beweisen, dass (H, ) eine Gruppe ist? (zb wenn die Multiplikation mit Hilfe einer Tabelle gegeben ist) Wie kann man beweisen, dass (H, )
Anleitung für die Version 2.4.1 von online 1. Schritt: Rufen Sie die Website auf...
1. Schritt: Rufen Sie die Website auf... www.profax.ch oder http://plc.profax.ch (www.profax.de - www.profax.at) auf und wählen Sie Registration für Klassen und Schulen. Wählen Sie bitte die Variante aus,
Einrichten einer mehrsprachigen Webseite mit Joomla (3.3.6)
Einrichten einer mehrsprachigen Webseite mit Joomla (3.3.6) 1. Loggen Sie sich im Administratorbereich ein und gehen Sie auf Extension > Extension Manager 2. Wählen Sie Install languages 3. Klicken Sie
Fotogalerie mit PWGallery in Joomla (3.4.0) erstellen
Fotogalerie mit PWGallery in Joomla (3.4.0) erstellen Als ersten Schritt müssen wir alle Fotos die in die Galerie sollen hochladen. Wir gehen davon aus, dass das Plugin PWGallery bereits installiert und
DER WING COMMANDER CD³² GUIDE
DER WING COMMANDER CD³² GUIDE powered by www.amigaemuboard.net & www.a1k.org Seite 1/5 Wing Commander ist ein geniales Game, vor allem die CD³² AGA-Version mit 256 Farben genießt unter Amigafans Kultstatus.
Komponententest. Testen von Software Systemen. Übung 02 SS 2009 Version: 1.0 09.06.2009
Testen von Software Systemen Übung 02 SS 2009 Version: 1.0 09.06.2009 Komponententest Kunde: Dr. Reinhold Plösch Dr. Johannes Sametinger Kundenreferenz: 259.019 Team 19 Mitarbeiter: Christian Märzinger
KURZANLEITUNG DUPLICITY MIT CLOUD OBJECT STORAGE
KURZANLEITUNG DUPLICITY MIT CLOUD OBJECT STORAGE Version 1.12 01.07.2014 SEITE _ 2 INHALTSVERZEICHNIS 1. Einleitung...Seite 03 2. Einrichtung des Systems...Seite 04 3. Erzeugen eines Backup-Skripts...Seite
Hinweise in Leichter Sprache zum Vertrag über das Betreute Wohnen
Hinweise in Leichter Sprache zum Vertrag über das Betreute Wohnen Sie möchten im Betreuten Wohnen leben. Dafür müssen Sie einen Vertrag abschließen. Und Sie müssen den Vertrag unterschreiben. Das steht
Die neue Aufgabe von der Monitoring-Stelle. Das ist die Monitoring-Stelle:
Die neue Aufgabe von der Monitoring-Stelle Das ist die Monitoring-Stelle: Am Deutschen Institut für Menschen-Rechte in Berlin gibt es ein besonderes Büro. Dieses Büro heißt Monitoring-Stelle. Mo-ni-to-ring
10.3.1.8 Übung - Konfigurieren einer Windows 7-Firewall
5.0 10.3.1.8 Übung - Konfigurieren einer Windows 7-Firewall Drucken Sie diese Übung aus und führen Sie sie durch. In dieser Übung werden Sie erfahren, wie man die Windows 7-Firewall konfiguriert und einige
CodeSaver. Vorwort. Seite 1 von 6
CodeSaver Vorwort Die Flut der Passwörter nimmt immer mehr zu. Kontopasswörter, Passwörter für Homepages, Shellzugriffe, Registrierungscodes für Programme und und und. Da ich aber nicht sonderlich viel
Informatik Kurs Simulation. Hilfe für den Consideo Modeler
Hilfe für den Consideo Modeler Consideo stellt Schulen den Modeler kostenlos zur Verfügung. Wenden Sie sich an: http://consideo-modeler.de/ Der Modeler ist ein Werkzeug, das nicht für schulische Zwecke
Erster Bug: eine Motte
SOFTWAREFEHLER Der erste Bug Erster Bug: eine Motte Der Begriff Bug (deutsch: Motte) stammt aus dem Jahre 1945, als Ingenieure in einem Schaltrelais eines Computers (Harvard Mark II-System) eine Motte
Übungen für Woche 10
Übungen für Woche 10 Martin Rubey 12. Januar 2011 Die folgenden Übungen sollen den Umgang mit Backtracking und kombinatorischen Spezies näherbringen. Genaue Hinweise gibt es erst auf Seite 5. Zur Erinnerung:
Vorbereitung einer Grafik zum Druck einer Glotze aus, Stadion an! -Zaunfahne Torsten Bunde, Stand 5. Juli 2014
Vorbereitung einer Grafik zum Druck einer Glotze aus, Stadion an! -Zaunfahne Torsten Bunde, Stand 5. Juli 2014 Wer wie wir beim SV Arminia Hannover eventuell das Problem hat, das sich nicht genügend Leute
FTP-Leitfaden RZ. Benutzerleitfaden
FTP-Leitfaden RZ Benutzerleitfaden Version 1.4 Stand 08.03.2012 Inhaltsverzeichnis 1 Einleitung... 3 1.1 Zeitaufwand... 3 2 Beschaffung der Software... 3 3 Installation... 3 4 Auswahl des Verbindungstyps...
Das sogenannte Beamen ist auch in EEP möglich ohne das Zusatzprogramm Beamer. Zwar etwas umständlicher aber es funktioniert
Beamen in EEP Das sogenannte Beamen ist auch in EEP möglich ohne das Zusatzprogramm Beamer. Zwar etwas umständlicher aber es funktioniert Zuerst musst du dir 2 Programme besorgen und zwar: Albert, das
Theoretische Grundlagen des Software Engineering
Theoretische Grundlagen des Software Engineering 11: Abstrakte Reduktionssysteme [email protected] Reduktionssysteme Definition: Reduktionssystem Ein Reduktionssystem ist ein Tupel (A, ) Dabei gilt: A
Wenn man nach Beendigung der WINDOWS-SICHERUNG folgendes angezeigt bekommt
1. Für alle, die mit wenig zufrieden sind Wenn man nach Beendigung der WINDOWS-SICHERUNG folgendes angezeigt bekommt Bild 1 bekommt man erst mal einen Schreck. Die Meldung wurden nicht gesichert beunruhigt,
Javakurs 2013 Objektorientierung
Javakurs 2013 Objektorientierung Objektorientierte Programmierung I Armelle Vérité 7 März 2013 Technische Universität Berlin This work is licensed under the Creative Commons Attribution-ShareAlike 3.0
Agiles Design. Dr.-Ing. Uwe Doetzkies Gesellschaft für Informatik mail: [email protected]
Agiles Design Dr.-Ing. Uwe Doetzkies Dr.-Ing. Uwe Doetzkies Gesellschaft für Informatik mail: [email protected] startupcamp berlin 15.3.2013 Regionalgruppe Berlin/Brandenburg Arbeitskreis Freiberufler
Version smarter mobile(zu finden unter Einstellungen, Siehe Bild) : Gerät/Typ(z.B. Panasonic Toughbook, Ipad Air, Handy Samsung S1):
Supportanfrage ESN Bitte füllen Sie zu jeder Supportanfrage diese Vorlage aus. Sie helfen uns damit, Ihre Anfrage kompetent und schnell beantworten zu können. Verwenden Sie für jedes einzelne Thema jeweils
L10N-Manager 3. Netzwerktreffen der Hochschulübersetzer/i nnen Mannheim 10. Mai 2016
L10N-Manager 3. Netzwerktreffen der Hochschulübersetzer/i nnen Mannheim 10. Mai 2016 Referentin: Dr. Kelly Neudorfer Universität Hohenheim Was wir jetzt besprechen werden ist eine Frage, mit denen viele
Programmierkurs Java
Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen
Lineargleichungssysteme: Additions-/ Subtraktionsverfahren
Lineargleichungssysteme: Additions-/ Subtraktionsverfahren W. Kippels 22. Februar 2014 Inhaltsverzeichnis 1 Einleitung 2 2 Lineargleichungssysteme zweiten Grades 2 3 Lineargleichungssysteme höheren als
Zeichen bei Zahlen entschlüsseln
Zeichen bei Zahlen entschlüsseln In diesem Kapitel... Verwendung des Zahlenstrahls Absolut richtige Bestimmung von absoluten Werten Operationen bei Zahlen mit Vorzeichen: Addieren, Subtrahieren, Multiplizieren
Professionelle Seminare im Bereich MS-Office
Gegenüber PowerPoint 2003 hat sich in PowerPoint 2007 gerade im Bereich der Master einiges geändert. Auf Handzettelmaster und Notizenmaster gehe ich in diesen Ausführungen nicht ein, die sind recht einfach
Leit-Bild. Elbe-Werkstätten GmbH und. PIER Service & Consulting GmbH. Mit Menschen erfolgreich
Leit-Bild Elbe-Werkstätten GmbH und PIER Service & Consulting GmbH Mit Menschen erfolgreich Vorwort zu dem Leit-Bild Was ist ein Leit-Bild? Ein Leit-Bild sind wichtige Regeln. Nach diesen Regeln arbeiten
Grundlagen von Python
Einführung in Python Grundlagen von Python Felix Döring, Felix Wittwer November 17, 2015 Scriptcharakter Programmierparadigmen Imperatives Programmieren Das Scoping Problem Objektorientiertes Programmieren
Adobe Photoshop. Lightroom 5 für Einsteiger Bilder verwalten und entwickeln. Sam Jost
Adobe Photoshop Lightroom 5 für Einsteiger Bilder verwalten und entwickeln Sam Jost Kapitel 2 Der erste Start 2.1 Mitmachen beim Lesen....................... 22 2.2 Für Apple-Anwender.........................
Agile Vorgehensmodelle in der Softwareentwicklung: Scrum
C A R L V O N O S S I E T Z K Y Agile Vorgehensmodelle in der Softwareentwicklung: Scrum Johannes Diemke Vortrag im Rahmen der Projektgruppe Oldenburger Robot Soccer Team im Wintersemester 2009/2010 Was
Objektorientierte Programmierung für Anfänger am Beispiel PHP
Objektorientierte Programmierung für Anfänger am Beispiel PHP Johannes Mittendorfer http://jmittendorfer.hostingsociety.com 19. August 2012 Abstract Dieses Dokument soll die Vorteile der objektorientierten
Datenexport aus JS - Software
Datenexport aus JS - Software Diese Programm-Option benötigen Sie um Kundendaten aus der JS-Software in andere Programme wie Word, Works oder Excel zu exportieren. Wählen Sie aus dem Programm-Menu unter
Stammdatenanlage über den Einrichtungsassistenten
Stammdatenanlage über den Einrichtungsassistenten Schritt für Schritt zur fertig eingerichteten Hotelverwaltung mit dem Einrichtungsassistenten Bitte bereiten Sie sich, bevor Sie starten, mit der Checkliste
Einführung in die Programmierung
: Inhalt Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund - mit / ohne Parameter - mit / ohne Rückgabewerte
Octave für Windows. Leichte Variante (kein Cygwin installiert)
1 of 9 09/08/2006 11:05 AM Octave für Windows Octave läuft unter den 32-Bit Versionen von Windows, also unter Windows 9x/NT/Me/2000 und XP. Auf dieser Seite geben wir vier Varianten an, um Octave unter
Upgrade auf die Standalone Editionen von Acronis Backup & Recovery 10. Technische Informationen (White Paper)
Upgrade auf die Standalone Editionen von Acronis Backup & Recovery 10 Technische Informationen (White Paper) Inhaltsverzeichnis 1. Über dieses Dokument... 3 2. Überblick... 3 3. Upgrade Verfahren... 4
Gezielt über Folien hinweg springen
Gezielt über Folien hinweg springen Nehmen wir an, Sie haben eine relativ große Präsentation. Manchmal möchten Sie über Folien hinweg zu anderen Folien springen. Das kann vorkommen, weil Sie den gesamten
Visual Basic Express Debugging
Inhalt Dokument Beschreibung... 1 Projekt vorbereiten... 1 Verknüpfung zu Autocad/ProStructures einstellen... 2 Debugging... 4 Autocad/ProSteel Beispiel... 5 Dokument Beschreibung Debuggen nennt man das
Catherina Lange, Heimbeiräte und Werkstatträte-Tagung, November 2013 1
Catherina Lange, Heimbeiräte und Werkstatträte-Tagung, November 2013 1 Darum geht es heute: Was ist das Persönliche Geld? Was kann man damit alles machen? Wie hoch ist es? Wo kann man das Persönliche Geld
NODELOCKED LIZENZ generieren (ab ST4)
NODELOCKED LIZENZ generieren () Besuchen Sie folgende Webseite support.ugs.com/global/de ( ohne www oder http:// ) Klicken Sie auf Lizenz Verwaltung und dann auf aktuelle Lizenz 1 1. Geben Sie Ihren Webkey
In 12 Schritten zum mobilen PC mit Paragon Drive Copy 11 und Microsoft Windows Virtual PC
PARAGON Technologie GmbH, Systemprogrammierung Heinrich-von-Stephan-Str. 5c 79100 Freiburg, Germany Tel. +49 (0) 761 59018201 Fax +49 (0) 761 59018130 Internet www.paragon-software.com Email [email protected]
Internet online Update (Internet Explorer)
Um Ihr Consoir Beta immer schnell und umkompliziert auf den aktuellsten Stand zu bringen, bieten wir allen Kunden ein Internet Update an. Öffnen Sie Ihren Internetexplorer und gehen auf unsere Internetseite:
Facebook I-Frame Tabs mit Papoo Plugin erstellen und verwalten
Facebook I-Frame Tabs mit Papoo Plugin erstellen und verwalten Seit Anfang Juni 2012 hat Facebook die Static FBML Reiter deaktiviert, so wird es relativ schwierig für Firmenseiten eigene Impressumsreiter
Access und die andern (Office) Programme. Armin Hess
Access und die andern (Office) Programme Armin Hess Was wir wollen Excel, Word, Powerpoint und andere Programme von Access aus fernsteuern Grundlagen Excel, Word, Powerpoint und andere Programme präsentieren
Autorisierung von ArcGIS 10.3 for Server ohne Internetverbindung
Autorisierung von ArcGIS 10.3 for Server ohne Internetverbindung (Februar 2015) Copyright 2015 Esri Deutschland GmbH Inhalt 1 Einleitung... 3 2 Voraussetzungen... 3 3 Aktualisierungsprozess... 3 4 Überprüfung
