Classification Tree Method: Difference between revisions

Content deleted Content added
OMPwiki (talk | contribs)
m nicer refs III
 
(47 intermediate revisions by 28 users not shown)
Line 1:
{{About|a software testing methodology|decision trees and prediction modeling using them (known as Classification tree)|Decision tree|and|Classification tree}}
 
The '''Classification Tree Method''' is a method for test design,<ref>{{cite book|last=Bath|first=Graham|author2=McKay, Judy|title=The software test engineer's handbook : a study guide for the ISTQB test analyst and technical test analyst advanced level certificates|year=2008|publisher=Rocky Nook|___location=Santa Barbara, CA|isbn=9781933952246|edition=1st}}</ref> as it is used in different areas of [[software development]].<ref name=advStest>{{cite book|last=Hass|first=Anne Mette Jonassen|title=Guide to advanced software testing|year=2008|publisher=Artech House|___location=Boston|isbn=1596932864978-1596932869|pages=179–186}}</ref>
It has beenwas developed by Grimm and Grochtmann in 1993.<ref name=GG>{{cite journal|last=Grochtmann|first=Matthias|author2=Grimm, Klaus|title=Classification Trees for Partition Testing|journal=Software Testing, Verification & Reliability|year=1993|volume=3|issue=2|pages=63–82|doi=10.1002/stvr.4370030203|s2cid=33987358}}</ref>
Classification Trees in terms of the Classification Tree Method must not be confused with [[decision tree]]s.
 
The classification tree method consists of two major steps:<ref name=lkk>{{cite book|last=Kuhn|first=D. Richard|author2=Kacker, Raghu N. |author3=Lei, Yu |title=Introduction to combinatorial testing|year=2013|publisher=Crc Pr Inc|isbn=1466552298978-1466552296|pages=76–81}}</ref><ref name=pierre>{{cite book|last=Henry|first=Pierre|title=The testing network an integral approach to test activities in large software projects|year=2008|publisher=Springer|___location=Berlin|isbn=978-3-540-78504-0|page=87}}</ref>
# Identification of test relevant aspects (so called ''classifications'') and their corresponding values (called ''classes'') as well as
# Combination of different classes from all classifications into [[test case (software)|test case]]s.
 
The identification of test relevant aspects usually follows the (functional) [[specification]] (e.g. [[requirements]], [[use case]]s …) of the [[system under test]].
Line 19:
 
Prerequisites for applying the classification tree method (CTM) is the selection (or definition) of a [[system under test]].
The CTM is a [[black-box testing]] method and supports any type of system under test. This includes (but is not limited to) [[Computer hardware|hardware systemsystems]]s, integrated hardware-software systems, plain [[software system]]s, including [[embedded software]], [[user interface]]s, [[operating system]]s, [[parser]]s, and others (or [[subsystem]]s of mentioned systems).
 
With a selected system under test, the first step of the classification tree method is the identification of test relevant aspects.<ref name=lkk />
Any system under test can be described by a set of classifications, holding both input and output parameters.
(Input parameters can also include [[Environment (systems)|environment]]s states, [[pre-condition]]s and other, rather uncommon parameters).<ref name=advStest />
Each classification can have any number of disjoint classes, describing the occurrence of the parameter.
The selection of classes typically follows the principle of [[equivalence partitioning]] for abstract test cases and [[boundary-value analysis]] for concrete test cases.<ref name=pierre />
Together, all classifications form the classification tree.
For semantic purpose, classifications can be grouped into ''compositions''.
Line 32:
The minimum number of test cases is the number of classes in the classification with the most containing classes.
 
In the secondssecond step, test cases are composed by selecting exactly one class from every classification of the classification tree.
The selection of test cases originally<ref name=GG /> was a manual task to be performed by the [[test engineer]].
 
=== Example ===
Line 59:
=== Background ===
 
The CTM introduced the following advantages<ref name=advStest /> over the Category Partition Method<ref>{{cite journal|last=Ostrand|first=T. J.|author2=Balcer, M. J.|title=The category-partition method for specifying and generating functional tests|journal=Communications of the ACM|year=1988|volume=31|issue=6|pages=676–686|doi=10.1145/62959.62964|s2cid=207647895|doi-access=free}}</ref> (CPM) by OlstradOstrand and Balcer:
* '''Notation''': CPM only had a textual notation, whereas CTM uses a graphical, tree-shaped representation.
* '''Refinements''' Selecting one representative might have an influence on the occurrence of other representatives.
Line 65:
: CTM allows modeling of hierarchical refinements in the classification tree, also called ''implicit dependencies''.
* '''Tool support''': The tool presented by Ostrand and Balcer only supported test case generation, but not the partitioning itself.
: Grochtmann and Wegener presented their tool, the [[Classification Tree Method#Classification Tree Editor|Classification Tree Editor]] (CTE) which supports both partitioning as well as test case generation.<ref name="GW">{{cite journal|last=Grochtmann|first=Matthias|author2=Wegener, Joachim|title=Test Case Design Using Classification Trees and the Classification-Tree Editor CTE|journal=Proceedings of the 8th International Software Quality Week(QW '95), San Francisco, USA|year=1995|url=http://www.systematic-testing.com/documents/qualityweek1995_1.pdf|access-date=2013-08-12|archive-url=https://web.archive.org/web/20150924112623/http://www.systematic-testing.com/documents/qualityweek1995_1.pdf|archive-date=2015-09-24|url-status=dead}}</ref>
[[File:Classification Tree for Embedded System.png|thumb|Classification Tree for Embedded System Example containing concrete values, concrete timing, (different) transitions and distinguish between States and Actions]]
 
=== Classification Tree Method for Embedded Systems ===
 
The classification tree method first was intended for the design and specification of abstract test cases. With the classification tree method for embedded systems,<ref name="conrad">{{cite journal|last=Conrad|first=Mirko|author2=Krupp, Alexander|title=An Extension of the Classification-Tree Method for Embedded Systems for the Description of Events|journal=Electronic Notes in Theoretical Computer Science|date=1 October 2006|volume=164|issue=4|pages=3–11|doi=10.1016/j.entcs.2006.09.002|doi-access=free}}</ref> test implementation can also be performed. Several additional features are integrated with the method:
# In addition to atomic test cases, test sequences containing several test steps can be specified.
# A concrete timing (e.g. in Seconds, Minutes ...) can be specified for each test step.
Line 79:
=== Dependency Rules and Automated Test Case Generation ===
 
One way of modelling constraints is using the refinement mechanism in the classification tree method. This, however, does not allow for modelling [[Constraint (information theory)|constraint]]s between classes of different classifications. Lehmann and Wegener introduced Dependency Rules based on [[Boolean expression]]s with their incarnation of the CTE.<ref name="LW">{{cite journal|last=Lehmann|first=Eckard|author2=Wegener, Joachim|title=Test Case Design by Means of the CTE XL|journal=Proceedings of the 8th European International Conference on Software Testing, Analysis & Review (EuroSTAR 2000)|year=2000|url=http://www.systematic-testing.com/documents/eurostar2000.pdf|access-date=2013-08-12|archive-url=https://web.archive.org/web/20160304191237/http://www.systematic-testing.com/documents/eurostar2000.pdf|archive-date=2016-03-04|url-status=dead}}</ref> Further features include the automated generation of [[test suite]]s using combinatorial test design (e.g. [[all-pairs testing]]).
 
=== Prioritized Test Case Generation ===
 
Recent enhancements to the classification tree method include the [[Risk-based testing|prioritized test case generation]]: It is possible to assign weights to the elements of the classification tree in terms of occurrence and error [[probability]] or risk. These weights are then used during test case generation to prioritize test cases.<ref name="luniak">{{cite journal|last=Kruse|first=Peter M.|author2=Luniak, Magdalena|title=Automated Test Case Generation Using Classification Trees|journal=Software Quality Professional|date=December 2010|volume=13|issue=1|pages=4–12}}</ref><ref>Franke M, Gerke D, Hans C. und andere. Method-Driven Test Case Generation for Functional System Verification. Proceedings ATOS. Delft. 2012. P.36-44.</ref> [[Statistics|Statistical testing]] is also available (e.g. for [[wear]] and [[Fatigue (material)|fatigue]] tests) by interpreting the element weights as a [[discrete probability distribution]].
 
=== Test Sequence Generation ===
 
With the addition of valid transitions between individual classes of a classification, classifications can be interpreted as a [[Finite-state machine|state machine]], and therefore the whole classification tree as a [[Statechart#Harel statechart|Statechart]]. This defines an allowed order of class usages in test steps and allows to automatically create test sequences.<ref name="seqgen">{{cite journalbook|last=Kruse|first=Peter M.|author2=Wegener, Joachim|title=Test2012 SequenceIEEE GenerationFifth fromInternational ClassificationConference on Trees|journal=Software Testing, Verification and Validation (ICST),|chapter=Test 2012Sequence IEEEGeneration Fifthfrom InternationalClassification ConferenceTrees on|date=April 2012|pages=539–548|doi=10.1109/ICST.2012.139|isbn=978-0-7695-4670-4|s2cid=581740}}</ref> Different coverage levels are available, such as [[Code coverage#Basic coverage criteria|state coverage]], transitions coverage and coverage of state pairs and transition pairs.
 
=== Numerical Constraints ===
 
In addition to Boolean dependency rules referring to classes of the classification tree, Numerical Constraints allow to specify [[formula]]s with classifications as variables, which will evaluate to the selected class in a test case.<ref name="numdeb">{{cite journalbook|last=Kruse|first=Peter M.|author2=Bauer, Jürgen |author3=Wegener, Joachim |title=Numerical2012 ConstraintsIEEE forFifth CombinatorialInternational InteractionConference on Testing|journal=Software Testing, Verification and Validation (ICST),|chapter=Numerical 2012Constraints IEEEfor FifthCombinatorial InternationalInteraction ConferenceTesting on|date=April 2012|pages=758–763|doi=10.1109/ICST.2012.170|isbn=978-0-7695-4670-4|s2cid=16683773}}</ref>
 
== Classification Tree Editor ==
The '''Classification Tree Editor''' (CTE) is a software tool for test design that implements the classification tree method.<ref name=vehicleElectronics>{{cite book|last=International|first=SAE|title=Vehicle electronics to digital mobility : the next generation of convergence ; proceedings of the 2004 International Congress on Transportation Electronics, Convergence 2004, [Cobo Center, Detroit, Michigan, USA, October 18 - 20, 2004]|year=2004|publisher=Society of Automotive Engineers|___location=Warrendale, Pa.|isbn=076801543X978-0768015430|pages=305–306}}</ref><ref name=behave>{{cite book|last=[edited by] Gomes|first=Luís|coauthorsauthor2=Fernandes, João M.|title=Behavioral modeling for embedded systems and technologies applications for design and implementation|year=2010|publisher=Information Science Reference|___location=Hershey, PA|isbn=160566751X978-1605667515|page=386}}</ref><ref name=justyna>{{cite book|last=[edited by] Zander|first=Justyna|title=Model-based testing for embedded systems|publisher=CRC Press|___location=Boca Raton|isbn=1439818452978-1439818459 |coauthorsauthor2=Schieferdecker, Ina; |author3=Mosterman, Pieter J.|page=10|date=2011-09-15}}</ref><ref name=model2>{{cite book|last=[edited by] Rech|first=Jörg|coauthorsauthor2=Bunse, Christian|title=Model-driven software development integrating quality assurance|year=2009|publisher=Information Science Reference|___location=Hershey|isbn=1605660078978-1605660073|page=101}}</ref>
 
Over the time, several editions of the CTE tool have appeared, written in several (by that time popular) [[programming languages]] and developed by several companies.
Line 107:
In 1997 a major re-implementation was performed, leading to CTE 2. Development again was at Daimler-Benz Industrial Research. It was written in [[C (programming language)|C]] and available for [[win32]] systems.
 
The CTE 2 was later licensed to [[Razorcat]] forin inclusion1997 withand theis modulepart andof the [[unit testingTESSY]] toolunit [[Tessytest (software)|Tessy]]tool.
The classification tree editor for embedded systems<ref name="conrad" /><ref name=behave /> also based upon this edition.
 
[[Razorcat]] has been developing the CTE since 2001 and has CTE registered a brand name in 2003.
 
The last version CTE 3.2 was published with the tool [[TESSY]] 4.0 in 2016. Note the Versions table below.
 
=== CTE 4 ===
The CTE 4 was implemented in [[TESSY]] 4.1.7 as an [[Eclipse (software)|Eclipse]] plug-in in 2018. The latest CTE 4 version is still being developed as part of [[TESSY]] 4.3 in 2021.
 
=== CTE XL ===
 
In 2000, Lehmann and Wegener introduced Dependency Rules with their incarnation of the CTE, the CTE XL (eXtended Logics).<ref name=LW /><ref name=vehicleElectronics /><ref name=model2 /><ref name=rob>{{cite book|last=Olejniczak|first=Robert|title=Systematisierung des funktionalen Tests eingebetteter Software|year=2008|publisher=Technical University Munich|___location=Doctoral dissertation|pages=61–63|url=http://d-nb.info/988858436/34.pdf|accessdate=10 October 2013|archive-url=https://web.archive.org/web/20160306062722/http://d-nb.info/988858436/34.pdf|archive-date=6 March 2016|url-status=dead}}</ref> Further features include the automated generation of [[test suite]]s using combinatorial test design (e.g. [[all-pairs testing]]).<ref>{{cite journalbook|last=Cain|first=Andrew|author2=Chen, Tsong Yueh |author3=Grant, Doug |author4=Poon, Pak-Lok |author5=Tang, Sau-Fun |author6= Tse, TH |title=Software Engineering Research and Applications |chapter=An Automatic Test Data Generation System Based on the Integrated Classification-Tree Methodology |journalvolume=First International Conference, SERA 2003, San Francisco, CA, USA, June 25–27, 2003, Selected Revised Papers3026|year=2004|pages=[https://archive.org/details/softwareengineer0000soft/page/225 225–238]|doi=10.1007/978-3-540-24675-6_18|chapter-url=httphttps://hubarchive.hku.hkorg/bitstreamdetails/10722softwareengineer0000soft/43692page/1/121170.pdf225|accessdate=10 October 2013|series=Lecture Notes in Computer Science|isbn=978-3-540-21975-0|hdl=10722/43692}}</ref>
 
Development was performed by [[DaimlerChrysler]]. CTE XL was written in [[Java (programming language)|Java]] and was supported on win32 systems.
Line 121 ⟶ 128:
=== CTE XL Professional ===
 
Starting in 2010, CTE XL Professional was developed by Berner&Mattner.<ref name="luniak" /> A complete re-implemenationimplementation was done, again using [[Java (programming language)|Java]] but this time [[Eclipse (software)|Eclipse]]-based. CTE XL Professional was available on win32 and [[win64]] systems.
 
New developments included:
* Prioritized test case generation: It is possible to assign weights to the elements of the classification tree in terms of occurrence and error [[probability]] or risk. These weights are then used during test case generation to prioritize test cases.<ref name="luniak" /><ref>Franke, M.; Gerke, D.; Hans, C; and others: Method-Driven Test Case Genera-tion for Functional System Verification, Air Transport and Operations Sym-posium 2012; p.354-365. Proceedings ATOS. Delft 2012.</ref> [[Risk-based testing|Risk-based]] and statistical testing is also available.
* Test Sequence Generation<ref name="seqgen" /> using [[Multi-Agent System]]s
* Numerical Constraints<ref name="numdeb" />
Line 142 ⟶ 149:
| CTE 1.0 ||1993|| Original Version,<ref name=GW /><ref name=justyna /> limited to 1000 test cases (fix!)|| [[Pascal (programming language)|Pascal]] || [[Unix]]
|-
| CTE 2.0 ||1998|| Windows Version,<ref name=behave /> unlimited number of test cases|| [[C (programming language)|C]]++ || Unix, [[win32]]
|-
|CTE 2.1
|2003
|Embedded system version of [[Razorcat]]s part of the [[TESSY]] tool.
|C++
|win32
|-
| CTE XL 1.0 ||2000|| Dependency Rules, Test Case Generation<ref name=LW /><ref name=vehicleElectronics /><ref name=model2 /> || [[Java (programming language)|Java]] || win32
Line 152 ⟶ 165:
| CTE XL 1.9 ||2009|| Last Java-only Version|| Java || win32
|-
| CTE XL Professional 2.1 || 2011-02-21 || First [[Eclipse (software)|Eclipse]]-based Version, Prioritized Test Case Generation,<ref name=luniak /> [[Deterministic]] Test Case Generation, [[Requirements traceability|Requirements-Tracing]] with [[IBM Rational DOORS|DOORS]]|| [[Java version history#Java SE 6|Java 6]], [[Eclipse (software)|Eclipse]] 3.5 || win32
|-
| CTE XL Professional 2.3 || 2011-08-02 || [[Quality Center|QualityCenter]] integration, Requirements Coverage Analysis and [[Traceability matrix|Traceability Matrix]], [[API]]|| Java 6, Eclipse 3.6 || win32
|-
| CTE XL Professional 2.5 || 2011-11-11 || Test Resultresult Anotationannotation, [[Mind map|MindMap]] import|| Java 6, Eclipse 3.6 || win32, [[win64]]
|-
| CTE XL Professional 2.7 || 2012-01-30 || Bug fix release|| Java 6, Eclipse 3.6 || win32, win64
|-
| CTE XL Professional 2.9 || 2012-06-08 || Implicit Mark Mode, Default classes, [[Commandcommand-line Line Interfaceinterface]]|| Java 6, Eclipse 3.7 || win32, win64
|-
| CTE XL Professional 3.1 || 2012-10-19 || Test Post-Evaluation (e.g. for [[Root cause analysis|Root Cause Analysis]]), Test Sequence Generation,<ref name=seqgen /> Numerical Constraints<ref name=numdeb />|| Java 6, Eclipse 3.7 || win32, win64
|-
| CTE XL Professional 3.3 || 2013-05-28 || Test Coverage Analysis, Variant Management (e.g. as part of [[Product family engineering|Product Family Engineering]]), Equivalence Class Testing|| Java 6, Eclipse 3.7 || win32, win64
|-
| CTE XL Professional 3.5 || 2013-12-18 || BoundayBoundary Value Analysis Wizard, Import of [[AUTOSAR]] and [[MATLAB]] models || [[Java version history#Java SE 7|Java 7]], Eclipse 3.8 || win32, win64
|-
| TESTONA 4.1 || 2014-09-22 || Bug fix release || Java 7, Eclipse 3.8 || win32, win64
|-
| TESTONA 4.3 || 2015-07-08 || Generation of Executable [[Test script|Test Scripts]] ([[Code generation (compiler)|Code Generation]]), Import of Test Results<ref>{{cite web|last1=Berner&Mattner|title=Press Release: Test Case Implementation with TESTONA 4.3|url=http://www.testona.net/en/media/press-releases/press-release-testona-4.3.html}}</ref> || Java 7, Eclipse 3.8 || win32, win64
|-
| TESTONA 4.5 || 2016-01-21 || Enhanced Export Facilities, [[GUI]] Improvements || Java 7, Eclipse 3.8 || win32, win64
|-
| TESTONA 5.1 || 2016-07-19 || Bug fix release, Switch to [[Java version history#Java SE 8|Java 8]], Eclipse 4.5 || [[Java version history#Java SE 8|Java 8]], Eclipse 4.5 || win32, win64
|-
|CTE 4.0
|2018-08-01
|New implementation of [[Razorcat]] as a plug-in for the [[TESSY]] 4.1 tool based on [[Eclipse (software)|Eclipse]]. Support in creating (model-based) test cases.
|Java
|win32
win64
|}
 
Line 180 ⟶ 206:
* When test design with the classification tree method is performed without proper test decomposition, classification trees can get large and cumbersome.
* New users tend to include too many (esp. irrelevant) test aspects resulting in too many test cases.
* There is no algorithm or strict guidance for selection of test relevant aspects.<ref>{{cite journalbook|last=Chen|first=T.Y.|author2=Poon, P.-L.|title=Proceedings of 1996 Australian Software Engineering Conference |chapter=Classification-Hierarchy Table: aA methodology for constructing the classification tree|journal=Australian Software Engineering Conference, 1996., Proceedings of 1996|year=1996|pages=93–104|doi=10.1109/ASWEC.1996.534127|isbn=978-0-8186-7635-32|s2cid=6789744}}</ref>
 
== References ==
{{Reflist}}
 
{{reflist}}
 
== External links ==
 
* [http://www.systematic-testing.com/functional_testing/cte_main.php?cte=1 Systematic Testing]
 
 
[[Category:Software development process]]