Samstag, 4. Januar 2020

Unit-Tets - Was ist automatisches Testen?

Der Zusatzaufwand für automatische Tests lohnt sich in der Regel schon nach wenigen Releases. Die Tests helfen den Entwicklern dabei Fehler im Voraus zu vermeiden und den Quellcode gut zu strukturieren.


Manuelles Testing

Das Testing von umgesetzten Anforderungen nimmt immer eine gewisse Menge Zeit in Anspruch. Oft werden hierbei Fehler übersehen um z.B. Zeit zu sparen oder es werden nicht alle Testfälle "durchgespielt".

Dieses "manuelle" Testing hat in der Regel weitere Releases zur Folge und der gesamte Test-Zyklus muss wiederholt werden. Dies kann dann für alle Beteiligten (Anforderer, Product Owner, Entwickler usw.) eine sehr stupide Tätigkeit werden. Hieraus ergibt sich die Empfehlung für die Einführung von automatischen Tests (Unit-Test).

Unit-Tests

Unit-Tests sind kleine Programme, welche die umgesetzten Anforderungen testen und prüfen, ob sie die Erwartungen der Anforderer erfüllen. Wichtig, jeder automatische Test sollte immer nur eine Eigenschaft einer Methode überprüfen (ein zu erwartender Output). Nichts desto trotz muss natürlich die jeweilige Methode vollständig (Verzweigungen, Sonderfälle usw.) getestet werden und so werden viele kleine Tests benötigt. Man spricht hierbei auch von vielen kleinen Einheiten (Units).
Die Tests müssen zusätzlich zu den Anforderungen programmiert werden, so fallen bei einer "testgetrieben Entwicklung / Test Driven Development" höhere Aufwände an. Das Verständnis dafür sollte vorher beim Auftraggeber eingeholt werden.

Idealerweise stehen die Testfälle vorab für die Entwickler zusätzlich zu den Anforderungen (in der Regel als User Story beschrieben) bereit. So besteht die Möglichkeit zuerst die Unit-Tests zu entwickeln und im Nachgang erfolgt die Umsetzung des eigentlichen Quellcodes für die Anforderungen. Dies hilft den Entwicklern den Quellcode besser zu strukturieren und intuitive Ideen für die Umsetzung zu entwickeln. Ein weiterer Vorteil ist, dass jede Implementierung (Eincheken/Commit) bereits auf Basis der Unit-Tests überprüft wird. So können einzelne Funktionen (Features) gezielt umgesetzt werden, ohne die komplette Umsetzung der Anforderungen in Gänze in einem Schritt entwickeln zu müssen.

Werden im Anschluss die umgesetzten Funktionen in ihrer gesamten Komplexität getestet, spricht man von Integrationstests.
Siehe hierzu auch meinen Beitrag vom März 2018 "Softwaretest bei agiler Entwicklung durch Testautomatisierung".

Fazit

Wurde das Projekt mit automatischen Tests ausgestattet, ist das Entwickeln effizienter und macht mehr Spaß!

So kann man zum Beispiel beim Refactoring schon sagen, welche Anpassungen am Quellcode notwendig sind, damit dieser korrekt funktioniert. Beim Einchecken einer Codeänderung in das Versionsverwaltungssystem werden die Tests gestartet und können den Commit z.B. automatisch zurückweisen (erstellen eines Issue), wenn diese fehlschlagen.

Gerade bei größeren Softwareentwicklungsprojekten zahlt sich der anfangs zusätzliche Aufwand im Nachgang wieder aus. Entwickler und Tester sparen mit jedem weiteren Release Zeit, das Refactoring wird optimiert und es treten zwangläufig weniger Fehler auf (im Vergleich zum manuellen Testing).

Montag, 30. Dezember 2019

6-2-1 - Regel

Vielen ist die Regel zum Beispiel vom Chaos Communication Congress bekannt.


Die 6-2-1 - Regel ist eine Empfehlung für Congress Teilnehmer, an jedem Tag mindestens
  • sechs Stunden Schlaf
  • zwei Mahlzeiten
  • eine Dusche
durchzuführen.

Weitere nützliche Tipps finden sich auch hier:

Samstag, 28. Dezember 2019

Aldi Wifi Steckdosen - undokumentiertes Web-Interface aufrufen

In der aktuellen c’t (1/2020) wurde mit Hilfe des "Raspion" nachgewiesen, dass das WLAN Passwort bei der Ersteinrichtung der Aldi Wifi Steckdosen unverschlüsselt (Erkennung anhand der Länge eines WLAN-Paketes) übertragen wird. In diesem Post möchte ich kurz auf das undokumentierte Web-Interface hinweisen.


Die Zugangsdaten zum Web-Interface (Login-Zugang) im Heimnetzwerk (wer hätte es gedacht) lauten:
  • User: admin
  • Passwort: admin
Die eigentliche Steuerung im LAN findet über den UDP Port 8530 statt:
  • <IP-Steckdose>:<UDP Port>
Mit Hilfe des undokumentierten Web-Interfaces kann jeder im gleichen WLAN die Steckdosen beliebig an- und ausschalten.


Alternativ ist auch eine Schaltung per Bash-Shell oder Python möglich. Weitere Infos dazu unter http://www.ludwich.de/ludwich/smart_home_IdOTy.html .

Montag, 23. Dezember 2019

Doodle Alternativen - Datenschutz freundliche Terminumfragen

Mit Hilfe von Doodle kann man schnell Terminumfragen oder auch einfache Online-Umfragen erstellen. Allerdings gibt es immer wieder Datenschutzrechtliche Bedenken. Es existieren zum Beispiel folgende datenschutzfreundliche Terminplaner mit vergleichbarem Funktionsumfang.


Foodle

Digitalcourage-Tool

Sonntag, 22. Dezember 2019

Datenschutz- und Werbeeinstellungen von Windows 10: Beispiele

In Windows 10 gibt es viele Einstellungsmöglichkeiten um Werbung von Microsoft und Datenübermittlung an Microsoft zu unterbinden. Anbei einige Einstellungen, welche oft vergessen werden.


Edge-Pop-Up und Benachrichtigungen mit Tipps und Vorschlägen:
  • Einstellungen => System => Benachrichtigungen und Aktionen

Lokales Wörterbuch und Stifteingabe verbessern:
  • Einstellungen => Datenschutz => Freihand- und Eingabeanpassung


Aktivitätsverlauf an Microsoft senden und lokal speichern:
  • Einstellungen => Datenschutz => Aktivitätsverlauf

Sonntag, 17. November 2019

SNES Controller für Nintendo Switch - 8BitDo Mod Kit

Für die Nintendo Switch Konsole gibt es nach der NES- auch die SNES-Emulation, sofern man eine Nintendo Switch Online Mitgliedschaft abschließt.

Es gibt einen Wireless-Controller im SNES-Stil von Nintendo. Die SNES-Controller sind nur mit den SNES-Spielen der Switch Online-Mitgliedschaft kompatibel und nur für Mitglieder von Switch Online verfügbar.

Eine Alternative gibt es in Kombination mit einem Nintendo Classic Mini: Super Nintendo Entertainment System und dem 8BitDo Mod Kit für original SNES Classic controller. Es entstehen dabei Kosten von ca. 25 EUR.
Hinweis: Leider gibt es nicht die Möglichkeit den SNES Controller einzeln zu erwerben (wie in meinem NES Artikel vom Dezember 2018). Daher ist der Umbau nur für die jenigen geeignet, die ein SNES Classic besitzen oder per Ebay einen Controller erworben haben.

8BitDo stellt einen Bausatz (Wireless-Funktion und wiederaufladbarer Akku) bereit, dadurch lässt sich der Controller sehr schnell umbauen.





Anleitung: http://download.8bitdo.com/Manual/Mod-Kit/Mod-Kit-for-SNES-Original&Classic-controller.pdf

Mittwoch, 6. November 2019

Retrokonsole - ODROID-GO mit ESP32, Arduino und MicroPython

Mit dem Selbstbausatz von ODROID-GO bekommt man eine Retrokonsole im Gameboy Design. Zusätzlich ist mit dem ESP32 MicroPython und Arduino Programmierung möglich.


Man benötigt ca. 15 Minuten für den Zusammenbau und der Bausatz selber kostet ca. 40 EUR. Desweiteren benötigt man noch eine MicroSD Karte für die ROMs und sonstige Erweiterungen (siehe https://forum.odroid.com/viewtopic.php?f=159&t=31716).

Eine gute Anleitung zum schnellen Zusammenbau findet sich direkt im ODROID Wiki:
 

Die folgenden Konsolen werden ab Werk unterstützt:
  • Nintendo Entertainment System (NES)
  • Nintento GameBoy (GB)
  • Nintendo GameBoy Color (GBC)
  • Sega Master System (SMS)
  • Sega Game Gear (SGG)
  • ColecoVison bzw. Atari(COL)
Eine Anleitung zur Installation dazu findet sich hier https://wiki.odroid.com/odroid_go/make_sd_card .

Dank des sparsamen ESP32 Mikrocontroller hält der Akku bis zu 10 Stunden. Über die GPIO-Pins (I2C) lässt sich der ODROID-GO erweitern

Mir persönlich fehlt ein Kopfhöreranschluss, damit man unterwegs niemanden mit den Retrospiele-Sounds stört ;-) .



Technische Daten:
  • CPU & RAM: 80MHz - 240MHz(Adjustable), 4MB PSRAM
  • Wi-Fi: 802.11 b/g/n 2.4GHz - 2.5GHz
  • Bluetooth: Bluetooth v4.2 BR/EDR, BLE
  • Display: 2.4inch 320×240 TFT LCD (SPI interface)
  • Battery: Li-Polymer 3.7V/1200mAh, Up to 10 hours of continuous game playing time
  • Speaker: 0.5Watt 8Ω Mono
  • Micro SD card slot: 20Mhz SPI interface
  • Micro USB port: Battery charging(500mA) and USB-UART data communication
  • Expansion Port: 10Pin port (I2C, GPIO, IRQ at 3.3Volt)
  • Input Buttons: Menu, Volume, Select, Start, A, B, Direction Pad
  • Power consumption: Game emulation: 100~115mA, Sleep mode: 5.3~5.8mA, Power off: 0.1mA
Quelle: https://wiki.odroid.com/odroid_go/odroid_go#specifications