Zusammenfassung
Liegen Teile der Software implementiert vor, kann damit begonnen werden, die Software zu verifizieren und die Teile zu integrieren. Typischerweise werden einzelne Teile zunächst für sich getestet und dann, soweit sie vorgegebenen Qualitätsanforderungen genügen, mit anderen Teilen zusammengefügt. Abhängig von der Vorgehensweise kann wieder sehr früh damit begonnen werden, Programmcode Schritt für Schritt aufzubauen und zu vervollständigen. Liegen einzelne Funktionen implementiert vor, werden diese unmittelbar getestet. Im Optimum heißt das, dass nach jedem Schritt ein ablauffähiges System vorliegt, wobei Implementierung, Test und Integration Hand in Hand gehen. Es ist aber auch möglich, einzelne Module oder Klassen zunächst individuell zu testen, dann zu größeren Softwareeinheiten zu integrieren, wobei der Zusammenbau in sogenannten Integrationstests auf Fehler überprüft wird, um schließlich die einzelnen Teile zu einem Gesamtsystem zu integrieren und dieses zu testen. Dieses Kapitel führt in die Grundlagen des Testens von Software ein. Dies umfasst die wesentlichen Konzepte und Vorgehensweisen im manuellen und automatisierten Softwaretest. Kaum zu trennen von den Testaufgaben ist die Integration. Die Strategien für die Software- und Systemintegration bilden den zweiten Teil dieses Kapitels, welches mit einem Überblick über Methoden und Techniken der kontinuierlichen Integration und DevOps abgeschlossen wird.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Notes
- 1.
Nach Wagner [57] wird auch der Begriff Defect als Oberbegriff für die Klassen Fault und Error verwendet.
- 2.
International Software Testing Qualifications Board (ISTQB) – Gemeinnützige Zertifizierungsstelle für Softwaretester. Das ISTQB bietet ein mehrstufiges Qualifikations- und Zertifizierungsprogramm an. Online: https://www.istqb.org.
- 3.
Man beachte den Unterschied zwischen Testen, der Überprüfung der Qualität fertiggestellten Codes und Debugging, der Fehlersuche während der Entwicklung des Codes.
- 4.
Man beachte, dass das Test-driven Development (siehe Abschn. 12.2.6) hier einen anderen Ansatz verfolgt und daher der Entwicklungs-, Integrations- und Testzyklus anders organisiert ist.
- 5.
Die Grundannahme hier ist, dass, wenn ein Parameter ungültig ist, die Wahrscheinlichkeit, dass eine Kompensation durch andere Parameter erfolgt nur sehr gering ist. Zudem ist auch davon auszugehen, dass eine Funktion auch bei nur einer ungültigen Eingabe einen Fehler meldet, das gewünschte Verhalten ist.
- 6.
- 7.
Siehe beispielsweise International Conference on Software Testing, Verification, and Validation (ICST) oder die German Testing Days.
Literatur
J. Albrecht-Zölch. Testdaten und Testdatenmanagement: Vorgehen, Methoden und Praxis. dpunkt.verlag GmbH, January 2018.
Apache.org. Apache ant version 1.10.7. Online: https://ant.apache.org (abgerufen: 2020-01-03), September 2019.
Apache.org. Apache maven version 3.6.3. Online: https://maven.apache.org (abgerufen: 2020-01-03), November 2019.
K. Apt, F. S. de Boer, and E.-R. Olderog. Verification of Sequential and Concurrent Programs. Texts in Computer Science. Springer-Verlag, 3 edition, 2009.
T. Arora and U. Shigihalli. Azure DevOps Server 2019 Cookbook: Proven recipes to accelerate your DevOps journey with Azure DevOps Server 2019. Cookbook. Packt Publishing, 2 edition, May 2019.
A. Avizienis, J.-C. Laprie, B. Randell, and C. Landwehr. Basic concepts and taxonomy of dependable and secure computing. IEEE Transactions on Dependable and Secure Computing, 1(1):11–33, 2004.
K. Beck. Test Driven Development. By Example. Addison-Wesley Longman, 2002.
M. Beller, A. Bacchelli, A. Zaidman, and E. Jürgens. Modern code reviews in open-source projects: Which problems do they fix? In Proceedings of the 11th Working Conference on Mining Software Repositories, MSR, pages 202–211, New York, NY, USA, 2014. ACM.
M. Beller, G. Gousios, A. Panichella, S. Proksch, S. Amann, and A. Zaidman. Developer testing in the ide: Patterns, beliefs, and behavior. IEEE Transactions on Software Engineering, 45(3):261–284, 2019.
T. Bennett and P. Wennberg. Eliminating Embedded Software Defects Prior to Integration Test. Quality Assurance Institute Journal, 2006.
M. Broy and M. Kuhrmann. Projektorganisation und Management im Software Engineering. Number 978-3-642-29289-7 in Xpert.press. Springer Verlag, Berlin Heidelberg, 1 edition, 2013.
J. Burch, E. Clarke, K. McMillan, D. Dill, and L. Hwang. Symbolic model checking: 1020 states and beyond. Information and Computation, 98(2):142–170, 1992.
J. N. Buxton and B. Randell. Report of the nato software engineering conference on software engineering techniques. Conference report, NATO Science Committee, October 1969.
E. M. Clarke, O. Grumberg, and D. A. Peled. Model Checking. MIT Press, 1999.
CMMI Product Team. CMMI for Development, Version 1.3. Technical Report CMU/SEI-2010-TR-033, Software Engineering Institute, Carnegie Mellon University, 2010.
M. Daigl and R. Glunz. ISO 29119 - Die Softwaretest-Normen verstehen und anwenden. dpunkt.verlag GmbH, January 2016.
F. Deißenböck. Continuous Quality Control of Long-Lived Software Systems. PhD thesis, Technische Universität München, October 2009.
F. Deißenböck and B. Hummel. Kontinuierliches qualitäts-controlling: Mittel gegen den qualitätsverfall in der softwarewartung. OBJEKTspektrum, 5:34–38, 2011.
F. Deissenböck, E. Jürgens, B. Hummel, S. Wagner, B. M. Parareda, and M. Pizka. Tool support for continuous quality control. IEEE Software, 25(5):60–67, September 2008.
W. E. Deming. Out of the Crisis. (Reprint). MIT Press, 2 edition, August 2000.
ECSS Secretariat. Space product assurance, software metrication programme definition and implementation. Standard ECSS-Q-HB-80-04A, ESA-ESTEC Requirements and Standards Division, March 2011.
M. E. Fagan. Design and code inspections to reduce errors in program development. IBM Systems Journal, 15(3):182–211, Sept. 1976.
Gradle Enterprise. Gradle build tool version 6.6.1. Online: https://gradle.org (abgerufen: 2020-09-13), August 2020.
M. Grochtmann and K. Grimm. Classification trees for partition testing. Software Testing, Verification and Reliability, 3(2):63–82, 1993.
T. Hall, A. Rainer, and N. Baddoo. Implementing software process improvement: an empirical study. Software Process: Improvement and Practice, 7(1):3–15, 2002.
C. A. R. Hoare. An axiomatic basis for computer programming. Commun. ACM, 12(10):576–583, Oct. 1969.
W. S. Humphrey. Managing the Software Process. Addison-Wesley Professional, January 1989.
IEEE 829-2008. IEEE Standard for Software and System Test Documentation. IEEE, July 2008.
IEEE Std 1012-2004. IEEE Standard for Software Verification and Validation. IEEE, 2004.
IEEE Std 1028-1997. IEEE Standard for Software Reviews. IEEE, 1998.
ISO 26262:2018. Road vehicles – Functional safety. International Organization for Standardization, 2018.
ISO/IEC 25010:2011. Systems and software engineering – System and software quality models. International Organization for Standardization, 2011.
ISO/IEC 25023:2016. Systems and software engineering – Systems and software Quality Requirements and Evaluation (SQuaRE) – Measurement of system and software product quality. International Organization for Standardization, 2016.
ISO/IEC/IEEE 24765:2010. Systems and software engineering – Vocabulary. International Organization for Standardization, 2010.
ISO/IEC/IEEE 29119:2013. ISO/IEC/IEEE International Standard – Software and systems engineering – Software testing – Part 2: Test processes. International Organization for Standardization, 2013.
Jenkins Community. Jenkins version 2.210. Online: https://jenkins.io (abgerufen: 2020-01-03), December 2019.
G. Kim, J. Humble, P. Debois, and J. Willis. The DevOps Handbook. NBN TRADESELECT, 2016.
S. Kleuker. Formale Modelle der Softwareentwicklung: Model-Checking, Verifikation, Analyse und Simulation. Studium. Vieweg+Teubner Verlag, September 2009.
S. Kleuker. Qualitätssicherung durch Softwaretests: Vorgehensweisen und Werkzeuge zum Testen von Java-Programmen. Springer Vieweg, 2 edition, July 2019.
J. Klünder, R. Hebig, P. Tell, M. Kuhrmann, J. Nakatumba-Nabende, R. Heldal, S. Krusche, M. Fazal-Baqaie, M. Felderer, M. F. G. Bocco, S. Küpper, S. A. Licorish, G. Lopez, F. McCaffery, Ö. Ö. Top, C. R. Prause, R. Prikladnicki, E. Tüzün, D. Pfahl, K. Schneider, and S. G. MacDonell. Catching up with Method and Process Practice: An Industry-Informed Baseline for Researchers. In Proceedings of 41st International Conference on Software Engineering, ICSE-SEIP, pages 255–264. ACM, 2019.
R. Kneuper. Software Process and Life Cycle Models. Springer International Publishing, 2018.
I. Koren and C. M. Krishna. Fault-Tolerant Systems. Morgan Kaufmann, April 2007.
M. Kuhrmann, P. Diebold, and J. Münch. Software process improvement: A systematic mapping study on the state of the art. PeerJ Computer Science, 2(1):1–38, May 2016.
A. Magana and J. Muli. Version Control with Git and GitHub. Packt Publishing, December 2018.
R. C. Martin. Clean Code: A Handbook of Agile Software Craftsmanship. Prentice Hall, 2008.
R. C. Martin and M. Marin. Agile Principles, Patterns, and Practices in C#. Prentice Hall, 2007.
S. McIntosh, Y. Kamei, B. Adams, and A. E. Hassan. The Impact of Code Review Coverage and Code Review Participation on Software Quality: A Case Study of the Qt, VTK, and ITK Projects. In Proceedings of the 11th Working Conference on Mining Software Repositories, MSR, pages 192–201, New York, NY, USA, 2014. ACM.
S. Mujtaba, R. Feldt, and K. Petersen. Waste and lead time reduction in a software product customization process with value stream maps. In 2010 21st Australian Software Engineering Conference, pages 139–148, April 2010.
S. R. Palmer and J. M. Felsing. A Practical Guide to Feature-Driven Development. Prentice Hall, February 2002.
K. Petersen. A palette of lean indicators to detect waste in software maintenance: A case study. In C. Wohlin, editor, Agile Processes in Software Engineering and Extreme Programming, pages 108–122, Berlin, Heidelberg, 2012. Springer Berlin Heidelberg.
C. R. Prause, J. Werner, K. Hornig, S. Bosecker, and M. Kuhrmann. Is 100% Test Coverage a Reasonable Requirement? Lessons Learned from a Space Software Project. In Product-Focused Software Process Improvement, PROFES, pages 351–367, Cham, 2017. Springer International Publishing.
P. Runeson, C. Andersson, T. Thelin, A. Andrews, and T. Berling. What do we know about defect detection methods? IEEE Softw., 23(3):82–90, May 2006.
T. Sedano, P. Ralph, and C. Péraire. Software development waste. In Proceedings of the 39th International Conference on Software Engineering, ICSE ’17, pages 130–140, Piscataway, NJ, USA, 2017. IEEE Press.
A. Spillner and U. Breymann. Lean Testing für C++-Programmierer: Angemessen statt aufwendig testen. dpunkt.verlag GmbH, June 2016.
A. Spillner and T. Linz. Basiswissen Softwaretest. dpunkt.verlag GmbH, 6 edition, June 2019.
S. Wagner. A literature survey of the quality economics of defect-detection techniques. In Proceedings of the 2006 ACM/IEEE International Symposium on Empirical Software Engineering, ISESE ’06, pages 194–203, New York, NY, USA, 2006. ACM.
S. Wagner. Software Product Quality Control. Springer Verlag, 2013.
Author information
Authors and Affiliations
Corresponding author
Rights and permissions
Copyright information
© 2021 Springer-Verlag GmbH Deutschland, ein Teil von Springer Nature
About this chapter
Cite this chapter
Broy, M., Kuhrmann, M. (2021). Verifikation und Integration von Software. In: Einführung in die Softwaretechnik. Xpert.press. Springer Vieweg, Berlin, Heidelberg. https://doi.org/10.1007/978-3-662-50263-1_12
Download citation
DOI: https://doi.org/10.1007/978-3-662-50263-1_12
Published:
Publisher Name: Springer Vieweg, Berlin, Heidelberg
Print ISBN: 978-3-662-50262-4
Online ISBN: 978-3-662-50263-1
eBook Packages: Computer Science and Engineering (German Language)