Systematisches Testen von Nebenläufiger Software
Systematic Testing of Concurrent Software
Wissenschaftsdisziplinen
Informatik (100%)
Keywords
-
Systematic Concurrency Testing,
Abstractions,
Automatic Program Repair,
Scalable Constraint Solving,
Coverage Measures,
Testing for Inconsistencies
Software-basierte Systeme sind allgegenwärtig und müssen zuverlässig funktionieren. Bei der Entwicklung solcher Systeme spielen effiziente Testtechniken, insbesondere Testautomatisie- rung, eine immer wichtigere Rolle. Die Forschung an automatisierten Testtechniken für sequen- tielle Software hat in den letzten Jahren große Fortschritte gemacht, jedoch erfordern moderne Prozessorarchitekturen einen Verlagerung von sequentieller zu nebenläufiger Software. Die Ent- wicklung zuverlässiger Software wird dadurch erschwert, beispielsweise müssen Programmierer Prozesse und Threads aufwändig synchronisieren. Das Testen von nebenläufiger Software ge- staltet sich ebenfalls äußerst schwierig, da alle möglichen Verschränkungen von Operationen verschiedener Threads und Prozesse betrachtet werden müssen um keine wichtigen Spezialfälle zu übersehen. Ohne eine angemessene Vorgehensweise verursacht dies eine kombinatorische Explosion, die systematisches Testen unmöglich macht. Industrielle Testwerkzeuge wie Micro- softs CREST zeigen, dass systematisches Testen auf große sequentielle Programme angewen- det werden kann, solch ein Beweis der Skalierbarkeit für nebenläufige Systeme fehlt aber noch. Der erste Teil dieses Projekts untersucht Entwurfsprinzipien für skalierbare systematische Test- techniken für nebenläufige Software und hat zum Ziel systematisches Testen auch auf praktisch relevante nebenläufige Programme anwendbar zu machen. Der Antragssteller hat vor kurzem Con2colic Testen mitentwickelt, einen neuen systematischen Testansatz für nebenläufige Soft- ware, der vielversprechende Leistungswerte zeigte. Um jedoch den gleichen industriellen Ein- fluss zu erreichen, den systematisches Testen sequentieller Software derzeit erzielt, müssen noch viele offene Forschungsfragen beantwortet werden. Der zweite Teil dieses Projekts beschäftigt sich mit Programmreparatur nachdem ein Fehler durch Testen gefunden wurde. Manuelle Programmreparatur ist aufwändig und komplex und verursacht, insbesondere für nebenläufige Software, regelmäßig neue Fehler und sollte deshalb ebenfalls bestmöglich automatisiert werden. Im Allgemeinen kann Programmreparatur jedoch bereits für sehr kleine Probleminstanzen unlösbar werden und erfordert deshalb effiziente domänenspezifische Lösungen. Dieses Projekt konzentriert sich auf die Reparatur algorith- mischer Aspekte von Programmen, die wiederholt Entscheidungsprozeduren während ihrer Ausführung aufrufen, beispielsweise Programme, die geometrische Berechnungen durchführen und wiederholt prüfen ob sich eine Gerade mit einer Fläche schneidet. Solche Aufrufe von Ent- scheidungsprozeduren können zu widersprüchlichen Ergebnissen führen, falls beispielsweise die Implementierung einer Entscheidungsprozedur anfällig für Ungenauigkeiten in numerischen Be- rechnungen aufgrund von Rundungsfehlern oder zeitlichen Verschiebungen in nebenläufigen Berechnungen ist.
- University of Toronto - 100%