Zusammenfassung
Mit dem ständig zunehmenden Einsatz von Rechnersystemen in sicherheitsrelevanten technischen Bereichen werden auch an die Software die gleichen hohen Zuverlässigkeits- und Sicherheitsanforderungen wie an konventionelle, Hardware-implementierte sicherheitsrelevante Systeme gestellt. Damit steigen die Anforderungen an die Qualität der Software und ihren Entwicklungsprozeß. Eine bedeutende Rolle bei der Entwicklung und Zulassung sicherheitsrelevanter Software kommt der Verifikation und Validation zu, wobei der systematische Test unverzichtbarer Bestandteil dieser Software-Prüfung ist. Da die existierenden Standards und Richtlinien zur Qualitätssicherung und Zulassung, insbesondere zur Prüfung sicherheitsrelevanter Software zwar systematische Tests, in der Regel aber keine konkreten Methoden und Verfahren vorschreiben, wird im vorliegenden Beitrag eine umfangreiche Untersuchung des State-of-the-Art auf dem Gebiet der Testmethoden und -verfahren einerseits und der Automatisierung des Tests andererseits vorgestellt. Ziel dieser Untersuchung ist, auf der Basis einer leistungs- und aufwandsorientierten Bewertung der verschiedenen Ansätze die Auswahl der im konkreten Anwendungsfall geeignetsten Methoden, Verfahren und Werkzeuge zu unterstützen.
Nach einer kurzen Einführung in die Situation bei der Standardisierung der Entwicklung, Prüfung und Zulassung sicherheitsrelevanter Software und Hinweisen auf entsprechende Richtlinien wird die große Bedeutung des systematischen Tests im Rahmen von Prüfung und Zulassung hervorgehoben.
Anschließend werden alle wichtigen Methoden und Verfahren zum Testen von Software klassifiziert und beschrieben, wobei drei verschiedene Klassifizierungskriterien und -schemata vorgestellt und angewendet werden. Nach einer vergleichenden Bewertung dieser Verfahren wird der Stand der Technik auf dem Gebiet der Automatisierung des Tests beschrieben. Zu jedem Testverfahren und zu jedem Automatisierungsansatz werden ausführliche Hinweise auf weiterführende Literatur gegeben.
Aus einer zusammenfassenden Beurteilung des Stands der Wissenschaft und Technik und den Erkenntnissen über eine effektive, Sicherheits- und hohen Zuverlässigkeitsanforderungen Rechnung tragende Teststrategie werden Anforderungen an neue, leistungsfähigere Testverfahren aufgestellt.
Ein gesondertes Kapitel ist den speziellen Problemen beim Test von parallelen, verteilten und Realzeit-Systemen gewidmet. Die existierenden Probleme und die wenigen auf diesem Gebiet bereits existierenden Lösungsansätze werden kurz zusammengefaßt.
Das Papier schließt mit einem kurzen Resümee und einem Ausblick auf die Arbeiten, die in Zukunft auf dem Gebiet des systematischen Testens von Software weiterhin Gegenstand der Forschung sein müssen.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
Literatur
Abbenhardt, H. (1985). TUS - Methode und Werkzeug für den systematischen Software-Test. In H. Balzert (Ed.) (1985), S. 263–274.
Abbenhardt, H. (1986). Das Testunterstützungs-System TUS. Gl-Softwaretechnik-Trends, Heft 6–1, S. 71–76.
Ansart, J.P. (1982). GENEPI/A - A Protocol Indépendant System for Testing Protocol Implementation. In: Sunshine, C. (Ed.). Protocol Specification, Testing and Verification II. North Holland Publishing Company, S. 523–528.
Apt, K.R. (1983). A Static Analysis of CSP Programs. In: Proceedings of the Workshop on Program Logic, Pittsburgh, PA.
Baber, R.L. (1990). Fehlerfreie Programmierung für den Software-Zauberlehrling. Oldenbourg Verlag, München/Wien.
Balzert, H. (1982). Die Entwicklung von Software-Systemen. Reihe Informatik, Band 34, BI Wissenschaftsverlag, Mannheim, Wien, Zürich.
Balzert, H. (Ed.) (1985). Moderne Software-Entwicklungssysteme und Werkzeuge. Bibliographisches Institut Mannheim.
Berg, H.K. (1982). Distributed System Testbeds - Experimentation with Distributed Systems. Computer, Vol. 15, No. 10, S. 9–11.
Berliner, E., und U. Voges (1982). RXVP80 - Handbuch. KfK-Primärbericht, Kernforschungszentrum Karlsruhe.
Bemot, G., M.C. Gaudel und B. Marre (1990). Software Testing Based on Formal Specifications: A Theory and a Tool. Rapport de Recherche No. 410, Université de Paris - Sud, Centre d’Orsay.
Brauer, W. (Ed.) (1987). Kommunikation in verteilten Systemen. Informatik-Fachberichte Nr. 130, Springer-Verlag, Berlin/Heidelberg.
Brinch Hansen, P. (1978). Reproducible Testing of Monitors. Software - Practice and Experience, Vol. 8, S. 721–729.
Budd, T.A. (1983). The Portable Mutation Testing Suite. Technical Report TR 83–8, University of Arizona, Department of Computer Science, Tucson, Arizona.
Budd, T.A., R.J. Lipton, F.G. Say ward und R.A. DeMillo (1978). The Design of a Prototype Mutation System for Program Testing. In: Proceedings of the National Computer Conference, AFIPS Press, Montvale, New Jersey, S. 623–627.
Cartwright, R. (1981). Formal Program Testing. Conference Record of 8th ACM Symposium on Principles of Programming Languages, S. 125–132.
Carver, R.H., und K.C. Tai (1986). Reproducible Testing of Concurrent Programs Based on Shared Variables. In IEEE: Proceedings of Distributed Systems, S. 428–433.
Chandrasekharan, M., B. Dasarathy und Z. Kishimoto (1985). Requirements-Based Testing of Real-Time Systems: Modeling for Testability. Computer, Vol. 18, No. 4, S. 71–80.
Chow, T.S. (1978). Testing Software Design Modeled by Finite-State Machines. IEEE Transactions on Software Engineering, Vol. 4, No. 3, S. 178–187.
Clarke, L.A. (1976). A System to Generate Test Data and Symbolically Execute Programs. IEEE Transactions on Software Engineering, Vol. 2, No. 3.
Clarke, L.A., J. Hassell und D.J. Richardson (1982). A Close Look at Domain Testing. IEEE Transactions on Software Engineering, Vol. 8, No. 4, S. 380–390.
Clarke, L.A., und D.J. Richardson (1983). A Rigorous Approach to Error-Sensitive Testing. In: Proceedings of the Sixteenth Annual Hawaii International Conference on System Sciences, S. 197–206.
Dahll,G. (Ed.) (1983). Techniques for Verification and Validation of Safety Related Software. EWICS-TC7, No. 267/6.
Dasarathy, B. (1985). Timing Constraints of Real-Time Systems: Constructs for Expressing Them, Methods of Validating Them. IEEE Transactions on Software Engineering, Vol. 11, No. 1,S. 80–86.
DEC (1989). Guide to VAX DEC ¡Test Manager (Version 3.0). Digital Equipment Corporation, Maynard, Massachusetts.
deMeer, J. (1987). Testmodelle für Systeme kommunizierender Prozesse. In: Brauer, W. (Ed.). Kommunikation in verteilten Systemen. Informatik-Fachberichte Nr. 130, Springer- Verlag, Berlin/Heidelberg, S. 712–724.
DeMillo, R.A., R.J. Lipton und F.G. Sayward (1979). Program Mutation: A New Approach to Program Testing. In Infotech Int. Ltd.: Infotech State of the Art Report on Software Testing, Vol. 2, Infotech International Limited, Maidenhead, England, S. 107–127.
DeMillo, R.A., W.M. McCracken, R.J. Martin und J.F. Passafiume (1987). Software Testing and Evaluation. Benjamin/Cummings Publishing Company, Menlo Park, CA.
DIN (1990a). Grundsätze für Rechner in Systemen mit Sicherheitsaufgaben. Vornorm DIN V VDE 0801/01.90, Januar 1990.
DIN (1990b). Anwendungssoftware, Gütebedingungen und Prüfbestimmungen. Norm DIN 66285, August 1990.
Duran, J.W., und S.C. Ntafos (1984). An Evaluation of Random Testing. IEEE Transactions on Software Engineering, Vol. 10, No. 4, S. 438–444.
Ehrenberger, W. (Ed.) (1990). Approving Software Products. Proceedings of the IFIP Working Conference ASP-90, North Holland, Amsterdam.
Elmendorf, W.R. (1973). Cause-Effect-Graphs in Functional Testing. TR-00.2487, IBM Systems Development Div., Poughkeepsie, New York.
Fosdick, L.D., und L.J. Osterweil (1976). Data Row Analysis in Software Reliability. ACM Computing Surveys, Vol. 8, No. 3, S. 305–330.
Frankl, P.G., S.N. Weiss und E.J. Weyuker (1985). ASSET: A System to Select and Evaluate Tests. In IEEE: Proceedings of the Conference on Software Tools, New York.
Frankl, P.G., und E.J. Weyuker (1988). An Applicable Family of Data Flow Testing Criteria. IEEE Transactions on Software Engineering, Vol. 14, No. 10, S. 1483–1498.
Franta, W.R., H.K. Berg und W.T. Wood (1982). Issues and Approaches to Distributed Testbed Instrumentation. Computer, Vol. 15, No. 10, S. 71–81.
Gannon, J.D. (1986). Testing Tools Using Formal Specifications and Coverage Metrics. Gl-Softwaretechnik-Trends, Heft 6–1, S. 5–11.
Genser, R., E. Schoitsch und P. Kopacek (1989). Safety of Computer Control Systems 1989 (SAFECOMP ’89). Proceedings of the IFAC/IFIP Workshop (Wien), Pergamon Press, Oxford, U.K.
Gerhart, S.L. (1985). A Test Data Generation Method Using PROLOG. TR-85-02, Wang Institute of Graduate Studies.
Girgis, M.R., und M.R. Woodward (1985). An Integrated System for Program Testing Using Weak Mutation and Data Flow Analysis. In IEEE: Proceedings of the 8th International Conference on Software Engineering, London, S. 313–319.
Girgis, M.R., und M.R. Woodward (1986). An Experimental Comparison of the Error Exposing Ability of Program Testing Criteria. In IEEE: Proceedings of the Workshop on Software Testing, Banff, Canada, S. 64–73.
Glass, R.L. (1980). Real-Time: The Lost World of Software Debugging and Testing. Communications of the ACM, Vol. 23, No. 5, S. 264–271.
Gmeiner, L. (1983). Zur Testfallgenerierung in der Entwurfsphase. Bericht KfK 3538, Kernforschungszentrum Karlsruhe.
Gmeiner, L., und U. Voges (1982). Erfahrungen mit dem Einsatz automatischer Werkzeuge für die Qualitätssicherung während Entwurf und Test. In H.M. Srieed und H.R. Wiehle (Ed.). Software-Qualitätssicherung. Berichte des German Chapter of the ACM, Band 9. Teubner Verlag, Stuttgart, S. 235–252.
Gmeiner, L., und U. Voges (1986). Automatisierung des Software-Tests in der Entwurfs- und Implementierungsphase. GI-Softwaretechnik-Trends, Heft 6–1, S. 35–63.
Goodenough, J.B., und S.L. Gerhart (1975). Toward a Theory of Test Data Selection. IEEE Transactions on Software Engineering, Vol. 1, No. 2, S. 156–173.
Gourlay, J.S. (1981). Theory of Testing Computer Programs. Ph.D. Dissertation, University of Michigan.
Grimm, K. (1985). Klassifizierung und Bewertung von Software-Verifikationsverfahren. In: Technische Zuverlässigkeit - Generalthema: Softwarequalität und Systemzuverlässigkeit. VDE-Verlag, Berlin und Offenbach, S. 79–90.
Grimm, K. (1988). Methoden und Verfahren zum systematischen Testen von Software. Automatisierungstechnische Praxis, 30, Heft 6, S. 271–280.
Grimm, K. (1989). An Effective Strategy and Automation Concepts for Systematic Testing of Safety Related Software. In R. Genser et al. (Eds). Safety of Computer Control Systems 1989 (SAFECOMP ’89 Pergamon Press, U.K., S. 71–79.
Haban, D. (1986). Eine Methode zum Testen von verteilten Systemen. Gl Softwaretechnik- Trends, Heft 6–1, Juni 1986, S. 101–107.
Haban, D., und D. Wybranietz (1986). Hardware Supported Monitoring in Distributed Computer Systems. SFB124-Bericht 23/86, Universität Kaiserslautem.
Hecht, M.S. (1977). Flow Analysis of Computer Programs. North Holland, New York.
Heger, D., G. Krüger, O. Spaniol und W. Zorn (Ed.) (1985). Kommunikation in verteilten Systemen I. Informatik-Fachberichte Nr. 95, Springer Verlag, Berlin/Heidelberg.
Helmbold, D.P., und D.C. Luckham (1985). Debugging ADA Tasking Programs. IEEE Software, März 1985, S. 47–57.
Howden, W.E. (1975). Methodology for the Generation of Program Test Data. IEEE Transactions on Computers, Vol. 24, No. 5, S. 554–560.
Howden, W.E. (1976). Reliability of the Path Analysis Testing Strategy. IEEE Transactions on Software Engineering, Vol. 2, No. 3, S. 208–215.
Howden, W.E. (1977). Symbolic Testing and the DISSECT Symbolic Evaluation System. IEEE Transactions on Software Engineering, Vol. 3, No. 4, S. 266–278.
Howden, W.E. (1978). Algebraic Program Testing. Actalnformatica, Vol. 10, No. 1, S. 56–66.
Howden, W.E. (1982). Weak Mutations Testing and Completeness of Test Sets. IEEE Transactions on Software Engineering, Vol. 8, No. 4, S. 371–379.
Howden, W.E. (1987). Functional Program Testing and Analysis. McGraw-Hill Book Company, New York.
Huang, J.C. (1975). An Approach to Program Testing. Computing Surveys, Vol. 7, No. 3, S 113–128
INFOTECH (1979). INFOTECH State of the Art Report on Software Testing. INFOTECH. International, Maidenhead, England.
King, J.C. (1976). Symbolic Execution and Program Testing. Communications of the ACM, Vol. 19, No.7, S. 385–394.
Knirk, D.L. (1990). T Customer Service System (TCCS). The Letter T, Vol. 4, No. 2, Juni 1990, Programming Environments Inc., Tinton Falls, New Jersey.
Laski, J.W., und B. Korel (1983). A Data Flow Oriented Program Testing Strategy. IEEE Transactions on Software Engineering, Vol. 9, No. 3, S. 347–354.
LDRA (1985). LDRA Software Testbed PASCAL, User Documentation. LDRA Ltd., Liverpool, England.
Liggesmeyer, P. (1990). Modultest und Modulverifikation: State of the Art. Angewandte Informatik, Band 4, BI Wissenschaftsverlag, Mannheim.
Loeckx, J., und K. Sieber (1987). The Foundations of Program Verification. 2nd Edition, Teubner Verlag, Stuttgart (und John Wiley and Sons).
Loo, P.S., und W.K. Tsai (1988). Random Testing Revisited. Information and Software Technology, Vol. 30, No. 7, S. 402–417.
Majoros, M. (1982). SOFTEST: A System for the Automatic Verification of PL/1, COBOL and Assembler Programs. In H.M. Sneed und H.R. Wiehle (Ed.). Software-Qualitäts- sicherung. Berichte des German Chapter of the ACM, Band 9. Teubner Verlag, Stuttgart, S. 253–269.
McDonald, W.C., und R.W. Smith (1982). A Flexible Distributed Testbed for Real-Time Applications. Computer, Vol. 15, No. 10, S. 25–39.
McMullin, P.R. (1982). DAISTS: A System for Using Specifications to Test Implementations. Ph.D. Dissertation, University of Maryland.
McMullin, P.R., und J.D. Gannon (1983). Combining Testing with Formal Specifications: A Case Study. IEEE Transactions on Software Engineering, Vol. 9, No. 3, S. 328–335.
Micro Case (1987). Software Analysis Workstation. Produktbeschreibung der Firma Micro Case, Beaverton, Oregon, USA.
Miller, E.F., M.R. Paige, J.P. Benson und W.R. Wisehart (1978). Structural Techniques of Program Validation. In E. Miller und W.E. Howden (Ed.). Tutorial: Software Testing and Validation Techniques. IEEE Computer Society, S. 262–265.
Myers, G.J. (1976). Software Reliability - Principles and Practices. John Wiley and Sons, New York.
Myers, G.J. (1987). Methodisches Testen von Programmen, 2. Auflage. Oldenbourg Verlag, München/Wien.
NBS(l9S2).NBS SpecialPublication500-88:Software Development Tools. J.S of Commerce, Washington, DC.
Ntafos, S. (1981). On Testing with Required Elements. In IEEE: Proceedings ofCOMPSAC 81, Chicago, IL, S. 132–139.
NTG (1982). NTG-Empfehlung 3004: Zuverlässigkeitsbegriffe im Hinblick auf komplexe Software und Hardware. Nachrichtentechnische Zeitschrift, 35, Heft 5, S. 325–333.
Osterweil, L.J., und L.A. Clarke (1990). Directions for U.S. Research and Development Efforts on Software Testing and Analysis. COINS Technical Report 90–73, University of Massachusetts, Amherst.
Ostrand, T.J., und M.J. Balcer (1988). The Category-Partition Method for Specifying and Generating Functional Tests. Communications of the ACM, Vol. 31, No. 6, S. 676–686.
PEI (1990). T Advances Software Testing. Produktbeschreibung der Programming Environment Inc., Tinton Falls, New Jersey.
Pelkmann, U. (1989). Abschlußbericht der SCOPE GmbH zum Verbundprojekt “Rationelle Software-Produktion (RASOP)”, Scope GmbH, München.
Poston, R.M. (1988). Software Test Coverage Measure Automated in T. The Letter T, Vol. 2, No. 2, April 1988, Programming Environments Inc., Tinton Falls, New Jersey.
Poston, R.M. (1989). Software Quality, Productivity and T. The Letter T, Vol. 3, No. 2, Juni 1989, Programming Environments Inc., Tinton Falls, New Jersey.
Probert, R.L., und H. Ural (1983). Requirements for a Test Specification Language for Protocol Implementation Testing. In: Rudin, H., und C.H. West (Ed.). Protocol Specification, Testing and Verification III. Elsevier Science Publishers B.V. (North Holland Publishing Co.), S. 437–443.
Quirk, W.J. (Ed.) (1985). Verification and Validation of Real-Time Software. Springer Verlag, Berlin/Heidelberg.
Rapps, S., und E J. Weyuker (1985). Selecting Software Test Data Using Data Flow Information. IEEE Transactions on Software Engineering, Vol. 11, No. 4, S. 367–375.
Rayner, D. (1982). A System for Testing Protocol Implementations. In: Sunshine, C. (Ed.). Protocol Specification, Testing and Verification II. North Holland Publishing Company, S. 539–554.
Redmill, FJ. (Ed.) (1988). Dependability of Critical Computer Systems 1. Elsevier Applied Science, London/New York.
Redmill, F.J. (Ed.) (1989). Dependability of Critical Computer Systems 2. Elsevier Applied Science, London/ New York.
Richardson, DJ., und L.A. Clarke (1981). A Partition Analysis Method to Increase Program Reliability. In IEEE: Proceedings of the Fifth International Conference on Software Engineering.
Richardson, D.J., und L.A. Clarke (1985). Partition Analysis: A Method Combining Testing and Verification. IEEE Transactions on Software Engineering, Vol. 11, No. 12, S. 1477–1490.
Riedemann, E.H. (1986a). Minimale Mehrfachbedingungs-Überdeckung als Methode zur Bewertung von white-box-Tests. GI-Softwaretechnik-Trends, Heft 6–1, S. 17–24.
Riedemann, E.H. (1986b). PROST - Ein Programmsystem zum Software-Testen. Gl-Softwaretechnik-Trends, Heft 6–1, S. 64–68.
Rudin, H., und C.H. West (Ed.) (1983). Protocol Specification, Testing and Verification III. Elsevier Science Publishers B.V. (North Holland Publishing Company).
Sarikaya, B., und G.v. Bochmann (1982). Some Experience with Test Sequence Generation for Protocols. In: Sunshine, C. (Ed.). Protocol Specification, Testing and Verification II. North Holland Publishing Company, S. 555–567.
Schindler, M. (1990). Computer-Aided Software Design: Build Quality Software with CASE. John Wiley and Sons, New York.
Schwartz, J.T., R.B.K. Dewar, E. Dubinsky und E. Schonberg (1986). Programming with Sets - An Introduc-tion to SETL. Springer-Verlag, New York.
Sneed, H.M. (1987). Software-Testen - State of the Art. In H.-J. Scheibl (Ed.). Software- Entwicklungs-Systeme und - Werkzeuge, Verlag Technische Akademie Esslingen, S. 10.3–1 bis 10.3–6.
Spillner, A. (1986). Aufdeckung von Codesequenzen, die nach Integration dynamisch nicht mehr erreichbar sind. GI-Softwaretechnik-Trends, Heft 6–1, S. 25–29.
Stoll, W. (1987). Automatische Generierung von Testdaten für den Protokolltest. In: Brauer, W. (Ed.). Kommunikation in verteilten Systemen. Informatik-Fachberichte Nr. 130, Springer-Verlag, Berlin/Heidelberg, S. 58–70.
Stucki, L.G. (1978). New Directions in Automated Tools for Improving Software Quality. In E. Miller und W. Howden (Ed.). Tutorial: Software Testing and Validation Techniques. IEEE Computer Society, S. 207–237.
Sunshine, C. (Ed.) (1982). Protocol Specification, Testing and Verification II. North Holland Publishing Company.
Tai, K.C. (1985). On Testing Concurrent Programs. IEEE Compsac, S. 310–317.
Tai, K.C., und E.E. Obaid (1986). Reproducible Testing of ADA Tasking Programs. In IEEE: Proceedings of 2nd International Conference on ADA Applications and Environments, April 1986.
Taylor, R.N. (1983). A General-Purpose Algorithm for Analyzing Concurrent Programs. Communications of the ACM, Vol. 26, No. 5, S. 362–376.
Taylor, R.N., und C.D. Kelly (1986). Structural Testing of Concurrent Programs. In: Proceedings of the Workshop on Software Testing, Banff, Canada. IEEE Computer Society, S. 164–169.
Taylor, R.N., L.A. Clarke, L.J. Osterweil, J.C. Wileden, M. Young (1986). Arcadia: A Software Development Environment Research Project. In: Proceedings of the Conference on ADA Applications and Environments, Miami, Florida, April 1986, S. 137–149.
Ural, H., und R.L. Probert (1983). User-Guided Test Sequence Generation. In: Rudin, H., und C.H. West (Ed.). Protocol Specification, Testing and Verification III. Elsevier Science Publishers B.V. (North Holland Publishing Co.), S. 421–436.
Voges, U., L. Gmeiner und A.v. Mayrhauser (1980). SADAT - An Automated Testing Tool. IEEE Transactions on Software Engineering, Vol. 6, Np. 3, S. 286–290.
Wampler, G.K. (1985). Static Concurrency Analysis of ADA Programs. Master’s Thesis, University of California, Irvine, Department of Information and Computer Science.
Weyuker, E.J. (1983). Assessing Test Data Adequacy through Program Inference. ACM Transactions on Programming Languages and Systems, Vol. 5, No. 4, S. 641–655.
Weyuker, E.J., und T.J. Ostrand (1980). Theories of Program Testing and the Application of Revealing Subdomains. IEEE Transactions on Software Engineering, Vol. 6, No. 3, S. 236–246.
White, L.J., und E.I. Cohen (1980). A Domain Strategy for Computer Program Testing. IEEE Transactions on Software Engineering, Vol. 6, No. 3, S. 247–257.
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 1992 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Grimm, K. (1992). Systematisches Testen sicherheitsrelevanter Software — Methoden, Verfahren und Werkzeuge. In: Kreowski, HJ. (eds) Informatik zwischen Wissenschaft und Gesellschaft. Informatik-Fachberichte, vol 309. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-77449-2_4
Download citation
DOI: https://doi.org/10.1007/978-3-642-77449-2_4
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-55389-2
Online ISBN: 978-3-642-77449-2
eBook Packages: Springer Book Archive