Skip to Content

Mein Weg zum Testing

Bevor ich mit der Buchbesprechung beginne, möchte ich noch kurz schreiben, wie ich zum Testing kam und wie sich meine Einstellung dazu im Laufe der Zeitgeändert hat. Als ich in der Softwarebranche anfing, lebte ich in einem Zeitalter der ewigen Wahrheiten:  Wir Akolythen und Mönche der Wasserfall-artigen Softwareentwicklung beteten es Tag für Tag: Softwareentwicklung besteht aus Spezifikation, Entwicklung und Test in der genannten Reihenfolge. Wer das bestritt, war im besten Fall wirr und fehlgeleitet oder noch schlimmer: ein Ketzer.

Weil man natürlich das Streben nach Qualität legte wohlgefällig war, war es ebenso wohlgefällig, umfangreiche Testtools zu bauen. Aber wie im Mittelalter stand das hochheilige ex Cathedra gepredigte Ideal im krassen Gegensatz zum Elend des Projektgeschäfts. Doch das Licht der Aufklärung vertrieb das softwaretechnische Mittelalter, und es stellten sich bohrende Fragen:

  • Nun ist sie also erstellt, die tolle Individualsoftware, wurde dem Kunden übergeben und neue Anforderungen müssen umgesetzt werden. Nur: wie stellen wir sicher, dass im Zuge der Wartung keine neuen Fehler eingebaut werden?
  • Es wurde ein tolles, individuelles Testtool erstellt mit Java-Frontend, Python-Kern, einigen COM-Komponenten und sogar mit dem MVS-Host kann es sprechen. Nur: wie soll der Kunde es anpassen? Wer kennt schon so viele Programmiersprachen und Technologien?

Die Antworten auf die angesprochenen Probleme sind einfach:

  1. Eine Software, die nicht mit wendig Aufwand testbar ist, ist nicht wartbar.
  2. Dasselbe gilt für Testtools. Verwenden Sie bewährte, standardisierte Tools und versuchen Sie diese auszureizen, bevor Sie ein neues Tool erfinden.

Diese Tipps bewähren sich meiner Auffassung auch in der ABAP-Welt – und genau von diesen Dingen handelt das Buch „Unit Tests mit ABAP Unit”.

Das Buch „Unit Tests mit ABAP Unit”

Auch, wenn Sie diese Erfahrungen bereits gemacht haben und selber seit Jahren mit eCATT und Unit Tests unter ABAP arbeiten, werden sie das Buch „Unit Tests mit ABAP Unit” viele Anregungen geben, u.a. Gedanken zur Architektur von Programmen, Prinzipien wie Design By Contract und den Auswirkungen auf die Testarchitektur.

Da Buch behandelt vor allem die Grundlagen des Testens und speziell der Unit Tests, wobei es auf Grundlagen wert legt, so dass es für Anfänger besonders wertvoll ist.

Grundlagen des Testens

Das Buch gibt Tipps für die Erstellung aussagekräftiger Tests.  Es gibt  eine Einführung in Grundlagen des Testens wie zum Äquivalenzklassen- und Grenzwertanalyse. Weitere Themen sind Tipps zur Erstellung testbarer Software und ebenso der Durchführung von Unit Tests nach IEEE 1008-1987.

Units Tests in ABAP

Unit Tests sind Tests auf Modulebene mit wenig bis keinem integrativen Charakter. Sie können damit ihre Programme mit einem engmaschigen Netz an Testfällen durchziehen. Vor und nach jeder Änderung können Sie sicherstellen, dass Sie keinen neuen Fehler eingebaut haben.

Unit Tests werden in speziellen lokalen Klassen angelegt und sind in Produktionssystemen nicht lauffähig. Sie können sie über die ABAP Workbench oder den Code Inspector ausführen. Wenn ihr Programm einen Fehler hat und Sie ihn analysiert haben, dann erstellen Sie einen zusätzlichen Testfall, der genau diesen Fall abdeckt, also eine „rote Ampel” als Testresultat besitzt. Wenn Sie den Fehler korrigieren, dann wird die Ampel in Zukunft „grün” ist.

Das Buch geht im Detail auf die Erstellung von Unit Tests ein. Auch Programmieranfänger und Entwickler, die noch wenig Erfahrungen im objektorientierten Programmieren haben, erhalten, bekommen eine gründliche Einführung.

Die Arbeit mit ABAP Unit wird sich für jedes Entwicklungsmodell rentieren. Auch, wenn Sie wie oben beschrieben Wasserfall-artig entwickeln, werden Sie Entwicklertests vorsehen und auch in der klassischen ABAP-Programmierung durchgeführt haben, nur waren diese in der Vergangenheit nur begrenzt automatisierbar. Sie können für Funktionsbausteine Testfälle anlegen, nur gehen diese verloren, wenn Sie die Schnittstelle ändern. Ein weiterer Nachteil ist, dass diese Regressionstests nicht komfortabel automatisierbar und auch nicht für alle Modularisierungseinheiten verfügbar sind. Durch die Verwendung von ABAP Unit können Sie ihre Software durch ein “Netz” an Regressionstests absichern – diese Tests haben einen bleibenden Wert im Vergleich zum einmaligen Test einer Modularisierungseinheit durch den Entwickler per Debugger.

Gebrauch von eCATT-Testdatencontainern

In Unit Tests haben wir oft das Problem, dass wir Testdaten benötigen. Wir können sie hart in Testfällen kodieren aber auch in eCATT-Testdatencontainern speichern, so dass Testdatendaten auch auf Konsolidierungssystemen verändert und diese Testfälle durchgeführt werden können.

Hierfür wird im Buch die API des Extended Computer Aided Test Tool benutzt. Für mich war dieses Kapitel eine sehr inspirierend. Viele kennen das eCATT-Tool nur in wenigen Aspekten: Wer benutzen den Recorder zum Aufzeichnen von Benutzerinteraktionen und zum Speichern von Eingabe- oder Solldaten als Name/Wertepaare in Datencontainern. eCATT ist aber wesentlich mächtiger und lässt sich auch im Zusammenhang mit ABAP Unit verwenden.

 

Fazit 

Auch für Testexperten bietet das Buch viel Neues. Besonders, wenn Sie oder ihre Kollegen noch nicht vom „Test-Virus” infiziert sind, aber einen schnell bessere und testbare Software entwickeln sollen, dann sollten Sie es Ihnen empfehlen.

 

English Translation

  

My way to the Testing

Before I begin with the book review, I would like to write briefly, how I came to testing and how my attitude to it time-changed within the years. When I began in the software industry, I lived in one age of the eternal truths: We adepts and monks of the waterfall software development prayed it day after day: Software development consists of specification, development and test in the order mentioned. Who denied, was confused and misdirected or still more badly in the best case: an heretic.

Because one naturally put a striving for quality was probably obliging, it was just as probably obliging to build extensive test tools. But as in the middle ages the high-holy ex Cathedra preached ideal stood in the glaring contrast to the misery of the project business. But enlightenment slowly drove the software-technical middle ages out, and questions arose:

  • Now it is provided, the new individual software, the customer was thus handed over and new requirements to have to be converted. But how do we guarantee that during maintenance no new errors are built in?
  • We created a great, individual test tool provided with Java frontend, Python core, some COM components and there were even interfaces to the MVS host. But: will the customer be able to adapt it? Who knows so many programming languages and technologies?

The answers to the addressed problems are simple:

  1. A software, which is not testable with few effort, is not maintainable.
  2. The same is true for test tools. I recommend to use standardized and well-established test tools before you invent a new.

I believe that this work satisfactorily in the ABAP world – and with these things the book  „Unit Tests with ABAP Unit” deals.

The book „Unit Test mit ABAP Unit”

Even if you already made these experiences and have much experience with eCATT and unit test under ABAP, the book „Unit Test with ABAP Unit” can give you many suggestions, among other things thoughts of architecture of programs, principles such as Design By Contract and the effects on test architecture.

Since book treats above all the bases of testing and particularly unit tests, whereby it emphasizes foundations of testing, so that it is particularly valuable for beginners.

Foundations of Testing

The book gives hints for the production of meaningful tests. There is an introduction to bases of testing as to equivalence class and limit value analysis. Further topics are hints for the production of testable software and likewise the execution from unit test after IEEE 1008-1987.

Unit Tests in ABAP

Unit test are tests on module level with few to no integration character. They cover our programs with a close net at test cases. Before and after each change you can guarantee that you did not insert a new error.

Unit tests are implemented in special local classes and are not executable in production systems. We can run them using the ABAP Workbench or the Code Inspector. If your program has an error you should add an additional test case, which covers exactly this case, thus the test case has a „red light” as result of test possess. When you corrected the error, then you should have a “green light”..

The book deals in the detail with the creation of unit test. Also beginners and developers, who have only few experiences with object-oriented programming, will learn the foundations of object orientation.

The work with ABAP unit will be useful for each development model. If you develop with the above mentioned waterfall model, developers will perform tests. With ABAP Unit your tests have remaining value because you can rerun them.

In the fact the idea of regression tests already existed in classical ABAP programming: You are able define test cases for functional modules, but these are lost, if you change the interface. A further disadvantage of this technique is, that these test are not easy to run automatically and they are restricted because they have no tear up and tear down mechanism and they are not available for all modularization units. Using ABAP Unit you can cover your application with a “net” of module test and  these tests have a lasting value in the comparison to a single test using the debugger.

Usage of eCATT Test Data Containers

In unit test often we have the problem that we need test data. We can code them in test cases or put them in eCATT test data containers, so that test data can be changed on consolidation systems, too.

Therefore the book suggests to use the API of the Extended Computer Aided Test tool. For me this chapter was much inspiring. Many know only a few aspects of eCATT: We can use the recorder for saving and simulation of user interactions and for storing input or target being as pair of name and value in data containers. But eCATT is much more powerful and can also be used in connection with ABAP Unit.

Summary  

Also for test experts the book offers much new. Particularly, if it or your colleagues are not yet „infected with the test virus”, but if they want to create a better and testable software in less of time, then you should suggest them to read the book.

To report this post you need to login first.

6 Comments

You must be Logged on to comment or reply to a post.

  1. Olivier CHRETIEN
    Hello,

    Are you aware that SCN is an international site where English is the common language ?
    Most people, including me, cannot understand anything from your blog…

    Regards,
    Olivier

    (0) 
    1. Tobias Trapp Post author
      Hi Oliver,

      ususally I’m blogging in english. But since some weeks different languages for blogs are offered: english, portoguese, spanish and german. And because I discussed a book that is only available in german I chose german as language. And I was was curious whether this would be accepted by the community.

      There has been a controversal debate about different languages on SDN Community in another countries and The specified item was not found. . My personal point of view is that for forums and wiki we should use english but not necessarily for blogs although I recommend would recommend it in general.

      But we shouldn’t discuss this here – the forum is more appropriate.

      Best Regards
      Tobias

      (0) 
      1. Anton Wenzelhuemer
        Hallo Tobias,

        danke für die interessante Buchbesprechung.

        Was die Diskussion hier betrifft, so hoffe ich, dass Du dies nicht als respektlos gegenüber Deinem Blog betrachtest, aber ich denke, dass diese Diskussion anhand eines (und bei einem) konkreten Beispiel geführt werden sollte.

        Es kann damit dem SCN Team vor Augen geführt werden, welche Auswirkungen die bewusste Babylonifizierung (d.i. die Einladung an jeden, Inhalte in beliebigen Sprachen zu erstellen) von SCN haben kann.

        Ich persönlich halte es auch für falsch, dass die Inhalte und Kommunikation lokalisiert werden, wenn mich aber SCN dazu ermutigt, dann werde ich auch noch meine spärlichen Französisch- und Jiddischkenntnisse auspacken und mir ein kauderwelsch angewöhnen wie Salvatore im Namen der Rose.

        Viele Grüsse,
        anton

        (0) 

Leave a Reply