A CQSE presentation on software quality
Talks

We give talks about software quality at industrial conferences and internal workshops of our customers regularly. Depending on your requirements, we can give talks in English or German

Announcements

-- Since this post accompanies a talk in German, it is written in German, too.

 

Machine Learning hat uns im privaten Bereich längst erreicht: Amazon schlägt mir Produkte vor, Netflix Filme. Oft treffen sie dabei sogar meinen Geschmack. Warum gibt es keine Software, die mir fundiert vorschlägt, was ich testen soll? Es gibt mehrere Ansätze in der Forschung, die das versprechen. Defect Prediction setzt beispielsweise Machine Learning auf historischen Fehlerdaten ein, um vorherzusagen, wo in meinem System mit hoher Wahrscheinlichkeit noch Fehler enthalten sein könnten. Inverse Defect Prediction identifiziert Bereiche, die vermutlich viel weniger Fehler enthalten, und eher ignoriert werden können. Aber wie gut funktioniert das wirklich in der Praxis?

 

Wir haben verschiedene dieser Ansätze selbst implementiert und eingesetzt. In diesem Vortrag stelle ich die Ergebnisse und Erfahrungen aus Forschung und Praxis vor --- sowohl die nützlichen als auch die Fehlschläge.

 

Read more...

Since this post accompanies a talk in German, it is written in German, too.

Quality Gates, wie sie in vielen Software-Entwicklungsprozessen definiert sind, funktionieren in der Praxis meist nicht wie gewünscht, da sie zu schwergewichtig sind und ihr Feedback viel zu spät kommt.

In diesem Vortrag zeige ich auf, wie jüngere Entwicklungen im Bereich Code-Collaboration-Platforms (GitHub, Bitbucket, GitLab und Co.) es erlauben, eine viel schlankere und wirksamere Form von Quality Gates zu etablieren.

Read more...

Die typischen Beispiele für technische Schulden sind uns allen bekannt. Trotzdem werden sie in den meisten Projekten nicht ausreichend adressiert. Ein Grund dafür ist, dass die Kosten, um Qualitätsprobleme zu beheben, viel einfacher zu quantifizieren sind, als der Nutzen.

Im Vortrag stellen wir verschiedene Ansätze vor, um Konsequenzen technischer Schulden zu quantifizieren und zu visualisieren. Die Kostenmodelle stammen aus der Forschung, die Beispiele aus realen Kundenprojekten.

 

Read more...

-- Since this post accompanies a talk in German, it is written in German, too.

 

Machine Learning hat uns im privaten Bereich längst erreicht: Amazon schlägt mir Produkte vor, Netflix Filme. Oft treffen sie dabei sogar meinen Geschmack. Warum gibt es keine Software, die mir fundiert vorschlägt, was ich testen soll? Es gibt mehrere Ansätze in der Forschung, die das versprechen. Defect Prediction setzt beispielsweise Machine Learning auf historischen Fehlerdaten ein, um vorherzusagen, wo in meinem System mit hoher Wahrscheinlichkeit noch Fehler enthalten sein könnten. Inverse Defect Prediction identifiziert Bereiche, die vermutlich viel weniger Fehler enthalten, und eher ignoriert werden können. Aber wie gut funktioniert das wirklich in der Praxis?

 

Wir haben verschiedene dieser Ansätze selbst implementiert und eingesetzt. In diesem Vortrag stelle ich die Ergebnisse und Erfahrungen aus Forschung und Praxis vor --- sowohl die nützlichen als auch die Fehlschläge.

 

Read more...
Invited Talks

We are happy to come visit you in your office for an internal conference or a workshop. Our list of topics includes quality analyses, quality control, but also test control or introducing peer reviews. You are also welcome to pick a topic of your choice.

Request Invited Talk
Past Talks

We want our tests to discover new bugs quickly. But with which likelihood do my tests actually discover new bugs in my code base? And which code is pseudo-tested in the sense that it gets executed by tests, but in which novel, severe bugs will most likely not be discovered?

In this talk, I present different approaches to answer this question. From code coverage, to mutation testing to novel approaches in between from new research (partly from our group). I demonstrate all approaches using the same real world project and depict the strengths and limitations of each.

 

Read more...

Wir streben alle nach möglichst hoher Qualität unseres Codes, wissen aber gleichzeitig dass eine gewisse Zahl an Qualitätsproblemen immer anwesend ist. Statt auf absolute Perfektion zu zielen, ist es oft viel sinnvoller zu schauen, ob man mit seinen Problemen im erwartbaren Bereich, oder deutlich darüber oder darunter liegt. Daraus lässt sich z.B. Handlungsbedarf ableiten und die Notwendigkeit zur Modernisierung argumentieren.

Read more...

-- Since this post accompanies a talk in German, it is written in German, too.

Auf dem Weg vom Prototyp zur Produktreife müssen wir unsere UX schrittweise verbessern, wenn wir dazulernen, welche Anforderungen an die UX unseren Nutzern besonders wichtig sind. In dieser Keynote möchte ich Erfahrungen aus unserem Weg zu besserer UX von Qualitätsanalysen sowie Erkenntnisse und die über den Haufen geworfenen Entwurfsentscheidungen vorstellen, aber auch unverhoffte neue Analysen und Einsatzszenarien, die sich dadurch ergeben haben.

 

Read more...

Die typischen Beispiele für technische Schulden sind uns allen bekannt. Trotzdem werden diese in den meisten Projekten nicht ausreichend adressiert, da es nicht gelungen ist, die Entscheidungsträger von ihrer Relevanz zu überzeugen.

Ich sammele seit 15 Jahren in Forschung und Praxis Erfahrungen, wie sich technische Schulden effektiv interpretieren und kommunizieren lassen. In diesem Vortrag stelle ich anhand von Kundenprojekten die Analysen, Visualisierungen und Kostenmodelle vor, die hierfür am besten funktionieren.

 

Read more...

Viele historisch gewachsene Systeme sammeln über die Jahre Code an, den niemand mehr braucht und der deshalb nutzlos ist. Ein Grund dafür ist beispielsweise, dass bereits implementierte Anforderungen obsolet werden und der Code, der diese Anforderungen implementiert, in der Codebasis verbleibt. Da meist unbekannt ist, welcher Code nutzlos ist, verursacht er oft Kosten ohne Wert zu stiften. In diesem Vortrag stellen wir drei statische und dynamische Analyseansätze vor, die wir in den letzten Jahren bei der Analyse von Kundensystemen und im Rahmen von Forschungsarbeiten entwickelt haben. Schließlich beschreiben wir konkrete Handlungsoptionen zum Umgang mit nutzlosem Code bei Migration und Wartung.

Read more...

Es gibt grundsätzlich zwei Arten, um Funktionalität wiederzuverwenden: Systematisch und Ad-Hoc. Systematische Wiederverwendung steht im Lehrbuch und umfasst die Erstellung von wiederverwendbaren Artefakten (Klassen, Komponenten, Services, usw.) die an einer Stelle im Code gepflegt, und von vielen Stellen genutzt werden. Ad-Hoc-Wiederverwendung steht nicht im Lehrbuch, kennt aber trotzdem jeder: Quelltext wird einfach überall dorthin kopiert, wo die Funktionalität benötigt wird.

In dieser Keynote möchte ich unterschiedliche Fälle von Ad-Hoc-Reuse aus verschiedenen Bereichen der Praxis vorstellen (u.a. eingebettete Software und betriebliche Informationssysteme). Ich werde jeweils auf die Ursachen eingehen und vorstellen wie die Organisation damit umgegangen ist: Von Fällen, in denen ad-hoc in systematische Wiederverwendung überführt wurde, bis zu Beispielen, in denen Ad-Hoc Wiederverwendung beibehalten, aber kontrolliert gewartet wird.

Read more...

-- Since this post accompanies a talk in German, it is written in German, too.

 

Durch Clone-Detection aufgedeckte Codeduplikate in Testcode sind schwieriger zu bewerten als solche in Produktivcode, und in der Praxis werden sie häufig ignoriert. In der Folge bleiben redundante Codeabschnitte in Testcode erhalten. Diese führen zu War-tungsproblemen, und es besteht die Gefahr ungewollt inkonsistenter Änderungen. In diesem Vortrag wird hinterfragt, ob die Kombination von Ergebnissen einer Clone Detection mit testspezifischer Code Coverage helfen kann, Klonfunde in Testcode automatisch zubewerten.

 

 

Read more...

In software projects with growing functionality, the number of tests increases fast which results in long execution times for the whole test suite. As a consequence, it is not possible to always execute the wholetest suite after each commit so that feedback time todevelopers increases. With long test feedback times, the effort for an early fix rises and developers can behindered in productive work. One solution to reduce feedback times is test case prioritization. Although test prioritization strategies have been extensively studied, they are rarely used in practice and their benefits are widely unknown.

 

 

Read more...

-- Since this post accompanies a talk in German, it is written in German, too.

Durch Tests möchten wir Fehler finden, bevor diese in Produktion gelangen. Leider gelingt das nicht immer. Studien zeigen, dass die meisten Feldfehler dort auftreten, wo viel geändert, aber wenig getestet wurde. Seit 2012 setzen wir deshalb mit unseren Kunden Test-Gap-Analyse ein, wodurch solche ungetesteten Änderungen bereits während der Entwicklung vollautomatisch identifiziert werden, damit Entwickler und Tester frühzeitig und kontinuierlich reagieren können.

Read more...

Im Test möchten wir Fehler finden, bevor diese in Produktion gelangen. Trotzdem gelingt dies nicht immer zu 100 Prozent. Dr. Stefan Staudt (TRUMPF Werkzeugmaschinen) gibt einen Einblick in die Hintergründe zur Einführung der Test-Gap-Analyse bei TRUMPF und berichtet von Erfahrungen bei deren Einsatz insbesondere auch im Hinblick auf die Instrumentierung von C++-Anwendungen, um die Testausführung zu messen.

Read more...