Reducing Redundant Test Executions in Software Product Line Testing—A Case Study
<p>An illustrative example using the DoorLock SPL. (<b>a</b>) product line code base. (<b>b</b>) test cases.</p> "> Figure 2
<p>The process for avoiding equivalent test executions.</p> "> Figure 3
<p>The feature model for SPL<sub>V0</sub>.</p> "> Figure 4
<p>The feature model for SPL<sub>V1</sub>.</p> "> Figure 5
<p>The feature model for SPL<sub>V2</sub>.</p> ">
Abstract
:1. Introduction
- We extend our previous method [16] to make it more practicable by providing an improved algorithm that avoids equivalent test executions in order to reduce unnecessary repetition of test executions and unnecessary collection of test execution traces.
- We propose a practical process for applying our method to testing of the first version of a product family as well as regression testing of its subsequent versions.
- Through a case study based on the proposed process, we demonstrate the generality of our method and how it can be used for efficient testing of software product lines. The case study shows that, for the first version and its two subsequent versions of the VendingMachine SPL, our method reduces 42.3% of test executions compared to the exhaustive execution.
2. Equivalence of Test Executions in SPL
3. SPL Testing Process for Avoiding Equivalent Test Executions
3.1. Step 1: Obtain a Product Family
3.2. Step 2: Build/Update Checksum Matrix
3.3. Step 3: Select Test Cases to Execute
3.4. Step 4: Execute Test Cases and Collect Execution Traces
Algorithm 1 An algorithm for avoiding equivalent test executions |
Input: TP: target products Input: SelectedTCs: set of test cases selected from Step 3 Input: chksumMatrix: checksum matrix for a product family Use:execute(t, p): execute a test case t on a product p and collect the execution trace of t on p 1. function testExecution(TP, chksumMatrix) 2. Map ETrace ← ∅ // key: test case, value: set of traces 3. for each p ∈ TP do: 4. T ← SelectedTCs.for(p) 5. CandidateTCs.addAll(T) 6. foreach t ∈ T do: 7. TR ← ETrace.getTracesOf(t) 8. for each tr ∈ TR do: // tr: classes covered by t on products 9. chksumListA ← chksumMatrix.lookup(p, tr.classes) 10. chksumListB ← chksumMatrix.lookup(tr.product, tr.classes) 11. if chksumListA equals chksumListB then: 12. CandidateTCs.delete(t) 13. end if 14. end for 15. end for 16. pairs <TestCase, Trace> ← execute(CandidateTCs, p) 17. ETrace.appendAll(pairs) 18. CandidateTCs ← ∅ 19. end for 20. end function |
4. Case Study Using the VendingMachine SPL
4.1. Testing of the Initial Version of a Product Line (Testing of SPLV0)
4.2. Modification for Adding New Test Cases (Testing of SPLV1)
4.3. Modification Affecting Existing Test Cases (Testing of SPLV2)
4.4. Threats to Validity
4.5. Result and Discussion
5. Related Work
5.1. Studies on Testing of a Single SPL Version
5.2. Studies on SPL Regression Testing
5.3. Studies on Reducing Test Redundancy at the Level of Test Executions
6. Conclusions
Author Contributions
Funding
Conflicts of Interest
References
- Pohl, K.; Böckle, G.; van Der Linden, F.J. Software Product Line Engineering: Foundations, Principles and Techniques, 1st ed.; Springer Science & Business Media: Berlin/Heidelberg, Germany, 2005. [Google Scholar]
- Johansen, M.F.; Haugen, Ø.; Fleurey, F. An algorithm for generating t-wise covering arrays from large feature models. In Proceedings of the 16th International Software Product Line Conference, Salvador, Brazil, 2–7 September 2012; Volume 1, pp. 46–55. [Google Scholar]
- Al-Hajjaji, M.; Krieter, S.; Thüm, T.; Lochau, M.; Saake, G. IncLing: Efficient product-line testing using incremental pairwise sampling. ACM SIGPLAN Not. 2016, 52, 144–155. [Google Scholar] [CrossRef]
- Hervieu, A.; Marijan, D.; Gotlieb, A.; Baudry, B. Practical minimization of pairwise-covering test configurations using constraint programming. Inf. Softw. Technol. 2016, 71, 129–146. [Google Scholar] [CrossRef]
- Reuling, D.; Bürdek, J.; Rotärmel, S.; Lochau, M.; Kelter, U. Fault-based product-line testing: Effective sample generation based on feature-diagram mutation. In Proceedings of the 19th International Conference on Software Product Line, Nashville, TN, USA, 20–24 July 2015; pp. 131–140. [Google Scholar]
- Marijan, D.; Gotlieb, A.; Sen, S.; Hervieu, A. Practical pairwise testing for software product lines. In Proceedings of the 17th International Software Product Line Conference, Tokyo, Japan, 26–30 August 2013; pp. 227–235. [Google Scholar]
- Lity, S.; Nieke, M.; Thüm, T.; Schaefer, I. Retest test selection for product-line regression testing of variants and versions of variants. J. Syst. Softw. 2019, 147, 46–63. [Google Scholar] [CrossRef]
- Lochau, M.; Lity, S.; Lachmann, R.; Schaefer, I.; Goltz, U. Delta-oriented model-based integration testing of large-scale systems. J. Syst. Softw. 2014, 91, 63–84. [Google Scholar] [CrossRef]
- Lachmann, R.; Lity, S.; Lischke, S.; Beddig, S.; Schulze, S.; Schaefer, I. Delta-oriented test case prioritization for integration testing of software product lines. In Proceedings of the 19th International Conference on Software Product Line, Nashville, TN, USA, 20–24 July 2015; pp. 81–90. [Google Scholar]
- Varshosaz, M.; Beohar, H.; Mousavi, M.R. Delta-oriented FSM-based testing. In Formal Methods and Software Engineering, Proceedings of the International Conference on Formal Engineering Methods, Paris, France, 3–5 November 2015; Springer: Cham, Switzerland, 2015; pp. 366–381. [Google Scholar]
- Xu, Z.; Cohen, M.B.; Motycka, W.; Rothermel, G. Continuous test suite augmentation in software product lines. In Proceedings of the 17th International Software Product Line Conference, Tokyo, Japan, 26–30 August 2013; pp. 52–61. [Google Scholar]
- Stricker, V.; Metzger, A.; Pohl, K. Avoiding redundant testing in application engineering. In Software Product Lines: Going Beyond, Proceedings of the International Conference on Software Product Lines, Jeju Island, South Korea, 13–17 September 2010; Springer: Berlin/Heidelberg, Germany, 2010; pp. 226–240. [Google Scholar]
- Kim, C.H.P.; Khurshid, S.; Batory, D. Shared execution for efficiently testing product lines. In Proceedings of the 2012 IEEE 23rd International Symposium on Software Reliability Engineering, Dallas, TX, USA, 27–30 November 2012; pp. 221–230. [Google Scholar]
- Nguyen, H.V.; Kästner, C.; Nguyen, T.N. Exploring variability-aware execution for testing plugin-based web applications. In Proceedings of the 36th International Conference on Software Engineering, Hyderabad, India, 31 May–7 June 2014; pp. 907–918. [Google Scholar]
- Wong, C.P.; Meinicke, J.; Lazarek, L.; Kästner, C. Faster variational execution with transparent bytecode transformation. Proc. ACM Program. Lang. 2018, 2, 1–30. [Google Scholar] [CrossRef] [Green Version]
- Jung, P.; Kang, S.; Lee, J. Efficient Regression Testing of Software Product Lines by Reducing Redundant Test Executions. Appl. Sci. 2020, 10, 8686. [Google Scholar] [CrossRef]
- Nahrendorf, S.; Lity, S.; Schaefer, I. Applying Higher-Order Delta Modeling for the Evolution of Delta-Oriented Software Product Lines. In TU Braunschweig-Institute of Software Engineering and Automotive Informatics; Technical Report; Institute for Software Engineering and Automotive Informatics: Braunschweig, Germany, 2018. [Google Scholar]
- Classen, A. Modelling with FTS: A Collection of Illustrative Examples; PReCISE Research Center, University of Namur: Namur, Belgium, 2010. [Google Scholar]
- Thao, C. A Configuration Management System for Software Product Lines. Ph.D. Thesis, University of Wisconsin, Milwaukee, WI, USA, 2012. [Google Scholar]
- ASM. Available online: https://asm.ow2.io/ (accessed on 23 March 2022).
- BCEL. Available online: http://commons.apache.org/proper/commons-bcel/ (accessed on 23 March 2022).
- SPL2go. Available online: http://spl2go.cs.ovgu.de/projects/ (accessed on 23 March 2022).
- Do Carmo Machado, I.; McGregor, J.D.; Cavalcanti, Y.C.; De Almeida, E.S. On strategies for testing software product lines: A systematic literature review. Inf. Softw. Technol. 2014, 56, 1183–1199. [Google Scholar] [CrossRef]
- Arcaini, P.; Gargantini, A.; Vavassori, P. Generating tests for detecting faults in feature models. In Proceedings of the 2015 IEEE 8th International Conference on Software Testing, Verification and Validation (ICST), Graz, Austria, 13–17 April 2015; pp. 1–10. [Google Scholar]
- Kim, C.H.P.; Batory, D.S.; Khurshid, S. Reducing combinatorics in testing product lines. In Proceedings of the Tenth International Conference on Aspect-Oriented Software Development, Porto de Galinhas, Brazil, 21–25 March 2011; pp. 57–68. [Google Scholar]
- Tartler, R.; Lohmann, D.; Dietrich, C.; Egger, C.; Sincero, J. Configuration coverage in the analysis of large-scale system software. In Proceedings of the 6th Workshop on Programming Languages and Operating Systems, Cascais, Portugal, 23 October 2011; pp. 1–5. [Google Scholar]
- Shi, J.; Cohen, M.B.; Dwyer, M.B. Integration testing of software product lines using compositional symbolic execution. In Fundamental Approaches to Software Engineering, Proceedings of the International Conference on Fundamental Approaches to Software Engineering, Tallinn, Estonia, 24 March–1 April 2012; Springer: Berlin/Heidelberg, Germany, 2012; pp. 270–284. [Google Scholar]
- Varshosaz, M.; Al-Hajjaji, M.; Thüm, T.; Runge, T.; Mousavi, M.R.; Schaefer, I. A classification of product sampling for software product lines. In Proceedings of the 22nd International Systems and Software Product Line Conference, Gothenburg, Sweden, 10–14 September 2018; Volume 1, pp. 1–13. [Google Scholar]
- Ensan, F.; Bagheri, E.; Gašević, D. Evolutionary search-based test generation for software product line feature models. In Advanced Information Systems Engineering, Proceedings of the International Conference on Advanced Information Systems Engineering, Gdansk, Poland, 25–29 June 2012; Springer: Berlin/Heidelberg, Germany, 2012; pp. 613–628. [Google Scholar]
- Ferreira, T.N.; Lima, J.A.P.; Strickler, A.; Kuk, J.N.; Vergilio, S.R.; Pozo, A. Hyper-heuristic based product selection for software product line testing. IEEE Comput. Intell. Mag. 2017, 12, 34–45. [Google Scholar] [CrossRef]
- Henard, C.; Papadakis, M.; Perrouin, G.; Klein, J.; Traon, Y.L. Multi-objective test generation for software product lines. In Proceedings of the 17th International Software Product Line Conference, Tokyo, Japan, 26–30 August 2013; pp. 62–71. [Google Scholar]
- Henard, C.; Papadakis, M.; Perrouin, G.; Klein, J.; Heymans, P.; Le Traon, Y. Bypassing the combinatorial explosion: Using similarity to generate and prioritize t-wise test configurations for software product lines. IEEE Trans. Softw. Eng. 2014, 40, 650–670. [Google Scholar] [CrossRef] [Green Version]
- Gregg, S.P.; Albert, D.M.; Clements, P. Product Line Engineering on the Right Side of the V. In Proceedings of the 21st International Systems and Software Product Line Conference, Sevilla, Spain, 25–29 September 2017; Volume A, pp. 165–174. [Google Scholar]
- Damiani, F.; Faitelson, D.; Gladisch, C.; Tyszberowicz, S. A novel model-based testing approach for software product lines. Softw. Syst. Modeling 2017, 16, 1223–1251. [Google Scholar] [CrossRef] [Green Version]
- Markiegi, U.; Arrieta, A.; Sagardui, G.; Etxeberria, L. Search-based product line fault detection allocating test cases iteratively. In Proceedings of the 21st International Systems and Software Product Line Conference, Sevilla, Spain, 25–29 September 2017; Volume A, pp. 123–132. [Google Scholar]
- Li, X.; Wong, W.E.; Gao, R.; Hu, L.; Hosono, S. Genetic algorithm-based test generation for software product line with the integration of fault localization techniques. Empir. Softw. Eng. 2018, 23, 1–51. [Google Scholar] [CrossRef]
- Hierons, R.M.; Li, M.; Liu, X.; Parejo, J.A.; Segura, S.; Yao, X. Many-objective test suite generation for software product lines. ACM Trans. Softw. Eng. Methodol. (TOSEM) 2020, 29, 1–46. [Google Scholar] [CrossRef] [Green Version]
- Devroey, X.; Perrouin, G.; Legay, A.; Schobbens, P.Y.; Heymans, P. Search-based similarity-driven behavioural SPL testing. In Proceedings of the Tenth International Workshop on Variability Modelling of Software-Intensive Systems, Salvador, Brazil, 27–29 January 2016; pp. 89–96. [Google Scholar]
- Al-Hajjaji, M.; Thüm, T.; Lochau, M.; Meinicke, J.; Saake, G. Effective product-line testing using similarity-based product prioritization. Softw. Syst. Modeling 2019, 18, 499–521. [Google Scholar] [CrossRef]
- Markiegi, U.; Arrieta, A.; Etxeberria, L.; Sagardui, G. Test case selection using structural coverage in software product lines for time-budget constrained scenarios. In Proceedings of the 34th ACM/SIGAPP Symposium on Applied Computing, Limassol, Cyprus, 8–12 April 2019; pp. 2362–2371. [Google Scholar]
- Arrieta, A.; Segura, S.; Markiegi, U.; Sagardui, G.; Etxeberria, L. Spectrum-based fault localization in software product lines. Inf. Softw. Technol. 2018, 100, 18–31. [Google Scholar] [CrossRef]
- Lachmann, R.; Beddig, S.; Lity, S.; Schulze, S.; Schaefer, I. Risk-based integration testing of software product lines. In Proceedings of the Eleventh International Workshop on Variability Modelling of Software-Intensive Systems, Eindhoven, The Netherlands, 1–3 February 2017; pp. 52–59. [Google Scholar]
- Jung, P.; Kang, S.; Lee, J. Automated code-based test selection for software product line regression testing. J. Syst. Softw. 2019, 158, 110419. [Google Scholar] [CrossRef]
- Ensan, A.; Bagheri, E.; Asadi, M.; Gasevic, D.; Biletskiy, Y. Goal-oriented test case selection and prioritization for product line feature models. In Proceedings of the Information Technology: New Generations (ITNG), Las Vegas, NV, USA, 11–13 April 2011; pp. 291–298. [Google Scholar]
- Wang, S.; Buchmann, D.; Ali, S.; Gotlieb, A.; Pradhan, D.; Liaaen, M. Multi-objective test prioritization in software product line testing: An industrial case study. In Proceedings of the 18th International Software Product Line Conference, Florence, Italy, 15–19 September 2014; Volume 1, pp. 32–41. [Google Scholar]
- Arrieta, A.; Wang, S.; Sagardui, G.; Etxeberria, L. Search-Based test case prioritization for simulation-Based testing of cyber-Physical system product lines. J. Syst. Softw. 2019, 149, 1–34. [Google Scholar] [CrossRef]
- Baller, H.; Lity, S.; Lochau, M.; Schaefer, I. Multi-objective test suite optimization for incremental product family testing. In Proceedings of the 2014 IEEE Seventh International Conference on Software Testing, Verification and Validation, Cleveland, OH, USA, 31 March–4 April 2014; pp. 303–312. [Google Scholar]
- Wang, S.; Ali, S.; Gotlieb, A. Cost-effective test suite minimization in product lines using search techniques. J. Syst. Softw. 2015, 103, 370–391. [Google Scholar] [CrossRef]
- Li, J.J.; Geppert, B.; Rößler, F.; Weiss, D.M. Reuse Execution Traces to Reduce Testing of Product Lines. In Proceedings of the 11th International Software Product Line Conference, Kyoto, Japan, 10–14 September 2007; Volume 2, pp. 65–72. [Google Scholar]
Class | Foo.class | Bar.class | Baz.class | |
---|---|---|---|---|
Product | ||||
P1 | 9da53bba | 8a841cc2 | - | |
P2 | 9da53bba | - | 30cea121 | |
P3 | f253ab1c | 83523abb | - |
Test Case | Input | Expected Output | Description |
---|---|---|---|
t1 | 1 | True | Checks whether a cup of tea is provided when 1 is inputted. |
t2 | 2 | True | Checks whether a cup of coffee is provided when 2 is inputted. |
t3 | 3 | True | Checks whether a cup of cappuccino is provided when 3 is inputted. |
t4 | “Coffee” | True | Checks whether sugar is poured when a cup of coffee is made. |
t5 | 1 | “1 Euro” | Checks whether “1 euro” is displayed when 1 euro is inserted. |
t6 | 5 | “5 Dollars” | Checks whether “5 dollars” is displayed when 5 dollars is inserted. |
t7 | BeberageDelevered(=True) | True | Checks whether a tone is emitted when a beverage has been delivered. |
t8 | Ring-Off(=False) | False | Checks whether the turn-off switch of the ring correctly works. |
t9 | ErrNotEnough Sugar(=1) | “not enough sugar” | Checks whether an error message is displayed. |
Product (LOC) | Test Case | Feature Configuration | Class Set |
---|---|---|---|
P1 (167) | t1, t5, t7, t8, t9 | VendingMachine, Beverages, Tea, RingTone, Currency, Euro | VMachine, DrinkOrder, Display, Beverages, Tea, RingTone, Currency |
P2 (167) | t3, t6, t7, t8, t9 | VendingMachine, Beverages, Cappuccino, RingTone, Currency, Dollar | VMachine, DrinkOrder, Display, Beverages, Cappuccino, RingTone, Currency |
P3 (182) | t2, t3, t4, t6, t7, t8, t9 | VendingMachine, Beverages, Coffee, Cappuccino, RingTone, Currency, Dollar | VMachine, DrinkOrder, Display, Beverages, Coffee, Cappuccino, RingTone, Currency |
P4 (140) | t1, t5, t9 | VendingMachine, Beverages, Tea, Currency, Euro | VMachine, DrinkOrder, Display, Beverages, Tea, Currency |
Class | VMachine | Beverages | Coffee | Tea | Cappuccino | DrinkOrder | RingTone | Currency | Display | |
---|---|---|---|---|---|---|---|---|---|---|
Product | ||||||||||
P1 | a | e | - | g | - | i | k | l | n | |
P2 | b | e | - | - | h | j | k | m | n | |
P3 | c | e | f | - | h | j | k | m | n | |
P4 | d | e | - | g | - | i | - | l | n |
Test Case | Used Products | Test Execution Trace | Checksum Values |
---|---|---|---|
t1 | P1, P4 | {P1}: [VMachine, Currency, Beverages, DrinkOrder, Tea, RingTone, Display] {P4}: [VMachine, Currency, Beverages, DrinkOrder, Tea, Display] | P1: aleigkn, P4: dleign |
t2 | P3 | {P3}: [VMachine, Currency, Beverages, DrinkOrder, Coffee, RingTone, Display] | P3: cmejfkn |
t3 | P2, P3 | {P2, P3}: [VMachine, Currency, Beverages, DrinkOrder, Cappuccino, RingTone, Display] | P2: bmejhkn, P3: cmejhkn |
t4 | P3 | {P3}: [DrinkOrder] | P3: j |
t5 | P1, P4 | {P1, P4}: [Currency, Display] | P1: ln, P4: ln |
t6 | P2, P3 | {P2, P3}: [Currency, Display] | P2: mn, P3: mn |
t7 | P1, P2, P3 | {P1, P2, P3}: [DrinkOrder, RingTone] | P1: ik, P2: jk, P3: jk |
t8 | P1, P2, P3 | {P1, P2, P3}: [RingTone] | P1: k, P2: k, P3: k |
t9 | P1, P2, P3, P4 | {P1, P2, P3, P4}: [Display] | P1: n, P2: n, P3: n, P4: n |
Test Case | Input | Expected Output | Description |
---|---|---|---|
t10 | 1 | “Small” | Checks whether a small size beverage is chosen. |
t11 | 2 | “Regular” | Checks whether a regular size beverage is chosen. |
t12 | 3 | “Large” | Checks whether a large size beverage is chosen. |
Product (LOC) | Test Case | Feature Configuration | Class Set |
---|---|---|---|
P1 (194) | t1, t5, t7, t8, t9, t10, t11, t12 | VendingMachine, Beverages, Tea, RingTone, Currency, Euro, Size, Small, Regular, Large | VMachine, DrinkOrder, Display, Beverages, Tea, RingTone, Currency |
P2 (167) | t3, t6, t7, t8, t9 | VendingMachine, Beverages, Cappuccino, RingTone, Currency, Dollar | VMachine, DrinkOrder, Display, Beverages, Cappuccino, RingTone, Currency |
P3 (182) | t2, t3, t4, t6, t7, t8, t9 | VendingMachine, Beverages, Coffee, Cappuccino, RingTone, Currency, Dollar | VMachine, DrinkOrder, Display, Beverages, Coffee, Cappuccino, RingTone, Currency |
P4 (167) | t1, t5, t9, t10, t11, t12 | VendingMachine, Beverages, Tea, Currency, Euro, Size, Small, Regular, Large | VMachine, DrinkOrder, Display, Beverages, Tea, Currency |
Class | VMachine | Beverages | Coffee | Tea | Cappuccino | DrinkOrder | RingTone | Currency | Display | |
---|---|---|---|---|---|---|---|---|---|---|
Product | ||||||||||
P1 | a | e | - | g | - | o | k | l | n | |
P2 | b | e | - | - | h | j | k | m | n | |
P3 | c | e | f | - | h | j | k | m | n | |
P4 | d | e | - | g | - | o | - | l | n |
Test Case | Used Products | Test Execution Trace | Checksum Values |
---|---|---|---|
t1 | P1, P4 | {P1}: [VMachine, Currency, Beverages, DrinkOrder, Tea, RingTone, Display] {P4}: [VMachine, Currency, Beverages, DrinkOrder, Tea, Display] | P1: aleogkn, P4: dleogn |
t2 | P3 | {P3}: [VMachine, Currency, Beverages, DrinkOrder, Coffee, RingTone, Display] | P3: cmejfkn |
t3 | P2, P3 | {P2, P3}: [VMachine, Currency, Beverages, DrinkOrder, Cappuccino, RingTone, Display] | P2: bmejhkn, P3: cmejhkn |
t4 | P3 | {P3}: [DrinkOrder] | P3: j |
t5 | P1, P4 | {P1, P4}: [Currency, Display] | P1: ln, P4: ln |
t6 | P2, P3 | {P2, P3}: [Currency, Display] | P2: mn, P3: mn |
t7 | P1, P2, P3 | {P1, P2, P3}: [DrinkOrder, RingTone] | P1: ok, P2: jk, P3: jk |
t8 | P1, P2, P3 | {P1, P2, P3}: [RingTone] | P1: k, P2: k, P3: k |
t9 | P1, P2, P3, P4 | {P1, P2, P3, P4}: [Display] | P1: n, P2: n, P3: n, P4: n |
t10 | P1, P4 | {P1, P4}: [DrinkOrder, Display] | P1: on, P4: on |
t11 | P1, P4 | {P1, P4}: [DrinkOrder, Display] | P1: on, P4: on |
t12 | P1, P4 | {P1, P4}: [DrinkOrder, Display] | P1: on, P4: on |
Test Case | Input | Expected Output | Description |
---|---|---|---|
t13 | 0 | ErrNotEnoughMilk | Checks whether the ErrNotEnoughMilk event is created when the amount of milk is not enough. |
Product (LOC) | Test Case | Feature Configuration | Class Set |
---|---|---|---|
P1 (189) | t1, t5, t7, t8, t9, t10, t11, t12 | VendingMachine, Beverages, Tea, RingTone, Currency, Euro, Size, Regular, Large | VMachine, DrinkOrder, Display, Beverages, Tea, RingTone, Currency |
P2 (185) | t3, t6, t7, t8, t9, t13 | VendingMachine, Beverages, Cappuccino, RingTone, Currency, Dollar, Milk | VMachine, DrinkOrder, Display, Beverages, Cappuccino, RingTone, Currency, Milk |
P3 (200) | t2, t3, t4, t6, t7, t8, t9, t13 | VendingMachine, Beverages, Coffee, Cappuccino, RingTone, Currency, Dollar, Milk | VMachine, DrinkOrder, Display, Beverages, Coffee, Cappuccino, RingTone, Currency, Milk |
P4 (162) | t1, t5, t9, t10, t11, t12 | VendingMachine, Beverages, Tea, Currency, Euro, Size, Regular, Large | VMachine, DrinkOrder, Display, Beverages, Tea, Currency |
Class | VMachine | Beverages | Coffee | Tea | Cappuccino | DrinkOrder | RingTone | Currency | Display | Milk | |
---|---|---|---|---|---|---|---|---|---|---|---|
Product | |||||||||||
P1 | a | e | - | g | - | p | k | l | n | - | |
P2 | b | e | - | - | h | q | k | m | n | r | |
P3 | c | e | f | - | h | q | k | m | n | r | |
P4 | d | e | - | g | - | p | - | l | n | - |
Test Case | Used Products | Test Execution Trace | Checksum Values |
---|---|---|---|
t1 | P1, P4 | {P1}: [VMachine, Currency, Beverages, DrinkOrder, Tea, RingTone, Display] {P4}: [VMachine, Currency, Beverages, DrinkOrder, Tea, Display] | P1: alepgkn, P4: dlepgn |
t2 | P3 | {P3}: [VMachine, Currency, Beverages, DrinkOrder, Coffee, RingTone, Display] | P3: cmeqfkn |
t3 | P2, P3 | {P2, P3}: [VMachine, Currency, Beverages, DrinkOrder, Cappuccino, RingTone, Display] | P2: bmeqhkn, P3: cmeqhkn |
t4 | P3 | {P3}: [DrinkOrder] | P3: q |
t5 | P1, P4 | {P1, P4}: [Currency, Display] | P1: ln, P4: ln |
t6 | P2, P3 | {P2, P3}: [Currency, Display] | P2: mn, P3: mn |
t7 | P1, P2, P3 | {P1, P2, P3}: [DrinkOrder, RingTone] | P1: pk, P2: qk, P3: qk |
t8 | P1, P2, P3 | {P1, P2, P3}: [RingTone] | P1: k, P2: k, P3: k |
t9 | P1, P2, P3, P4 | {P1, P2, P3, P4}: [Display] | P1: n, P2: n, P3: n, P4: n |
t10 | P1, P4 | {P1, P4}: [DrinkOrder, Display] | P1: pn, P4: pn |
t11 | P1, P4 | {P1, P4}: [DrinkOrder, Display] | P1: pn, P4: pn |
t12 | P1, P4 | {P1, P4}: [DrinkOrder, Display] | P1: pn, P4: pn |
t13 | P2, P3 | {P2, P3}: [DrinkOrder, Milk, Display] | P2: qrn, P3: qrn |
Publisher’s Note: MDPI stays neutral with regard to jurisdictional claims in published maps and institutional affiliations. |
© 2022 by the authors. Licensee MDPI, Basel, Switzerland. This article is an open access article distributed under the terms and conditions of the Creative Commons Attribution (CC BY) license (https://creativecommons.org/licenses/by/4.0/).
Share and Cite
Jung, P.; Kang, S.; Lee, J. Reducing Redundant Test Executions in Software Product Line Testing—A Case Study. Electronics 2022, 11, 1165. https://doi.org/10.3390/electronics11071165
Jung P, Kang S, Lee J. Reducing Redundant Test Executions in Software Product Line Testing—A Case Study. Electronics. 2022; 11(7):1165. https://doi.org/10.3390/electronics11071165
Chicago/Turabian StyleJung, Pilsu, Sungwon Kang, and Jihyun Lee. 2022. "Reducing Redundant Test Executions in Software Product Line Testing—A Case Study" Electronics 11, no. 7: 1165. https://doi.org/10.3390/electronics11071165
APA StyleJung, P., Kang, S., & Lee, J. (2022). Reducing Redundant Test Executions in Software Product Line Testing—A Case Study. Electronics, 11(7), 1165. https://doi.org/10.3390/electronics11071165