Towards Incremental FSM-based Testing of Software Product Lines
ResumoSoftware Product Line (SPL) is an approach which offers several benefits for organizations, such as significant reductions in the development and maintenance costs, reduced time-to-market, and personalized software products. In SPLs, the testing activity presents challenges due to characteristics of their development process. The cost of testing SPL is usually higher than the cost of testing traditional systems. SPLs foster the reuse of artifacts that include requirement specifications, code and models. Among different models used in an SPL, state-based models, such as Finite State Machines, are promising candidates to support the test case generation. Therefore, we propose a strategy to reuse test cases generated for different products of an SPL. Test cases are derived from Finite State Machines representing products instantiated from an SPL. The test cases generated for a product are reused when testing further products instantiated from the same SPL, in order to reduce the size of additional test cases. We illustrate our strategy in a case study using two SPLs of embedded system applications.
Bertolino, A. and Gnesi, S. (2003). Use case-based testing of product lines. In the 9th European software engineering conference (ESEC/FSE-11), pages 355– 358, ACM.
Broy, M., Jonsson, B., Katoen, J.-P., Leucker, M., and Pretschner, A. (2005). Model-based testing of reactive systems: advanced lectures. Springer, 1st edition.
Cabral, I., Cohen, M. B., and Rothermel, G. (2010). Improving the testing and testability of software product lines. In SPLC, 2010, pages 241–255.
Chow, T. S. (1978). Testing software design modeled by finite-state machines. IEEE Trans. Softw. Eng., 4:178–187.
Clements, P. and Northrop, L. (2001). Software Product Lines: Practices and Patterns. Addison- Wesley Longman Publishing Co.
Cockburn, A. (2000). Writing Effective Use Cases. Addison-Wesley Professional.
Dalal, S. R., Jain, A., Karunanithi, N., Leaton, J. M., Lott, C. M., Patton, G. C., and Horowitz, B. M. (1999). Model-based testing in practice. In the 21st international conference on Software engineering (ICSE ’99), pages 285–294, ACM.
Figueiredo,E.,Cacho,N.,Sant'Anna,C.,Monteiro,M.,Kulesza,U.,Garcia,A.,Soares,S.,Ferrari, F., Khan, S., Castor Filho, F., and Dantas, F. (2008). Evolving software product lines with aspects: an empirical study on design stability. In ICSE ’08, pages 261–270.
Fujiwara, S., von Bochmann, G., Khendek, F., Amalou, M., and Ghedamsi, A. (1991). Test selection based on finite state models. IEEE Trans. Softw. Eng., 17:591–603.
Gill, A. (1962). Introduction to the theory of finite-state machines. McGraw-Hill.
Gomaa, H. (2004). Designing Software Product Lines with UML: From Use Cases to Pattern- Based Software Architectures. Addison Wesley, Redwood City, CA, USA.
Gomaa, H. (2005). Designing software product lines with uml. In SEW ’05: Proceedings of the 29th Annual IEEE/NASA Software Engineering Workshop - Tutorial Notes, pages 160–216, Washington, DC, USA. IEEE Computer Society.
Im, K., Im, T., and McGregor, J. D. (2008). Automating test case definition using a domain specific language. Pages 180–185.
Kang, K. C., Cohen, S. G., Hess, J. A., Novak, W. E., and Peterson, A. S. (1990). Feature-oriented domain analysis (FODA) feasibility study. Technical report, Carnegie-Mellon University Software Engineering Institute.
Luo, G., Petrenko, A., Petrenko, R., and Bochmann, G. V. (1994). Selecting test sequences for partially-specified nondeterministic finite state machines. In In IFIP 7th International Workshop on Protocol Test Systems, pages 91–106.
MIT, S. D. G. (2010). Alloy.
Olimpiew, E. M. and Gomaa, H. (2009). Reusable model-based testing. In ICSR ’09: Proceedings of the 11th International Conference on Software Reuse, pages 76–85,.
Oster, S., Wubbeke, A., Engels, G., and Schurr, A. (2011). A Survey of Model-Based Software Product Lines Testing, pages 339–381. CRC Press/Taylor & Francis.
Petrenko, A., Yevtushenko, N., Lebedev, A., and Das, A. (1994). Nondeterministic state machines in protocol conformance testing. In Proceedings of the IFIP TC6WG6.1 Sixth International Workshop on Protocol Test systems VI, pages 363–378.
Pohl, K., Böckle, G., and van der Linden, F. J. (2005). Software Product Line Engineering: Foundations, Principles and Techniques. Springer-Verlag.
Pohl, K. and Metzger, A. (2006). Software product line testing. Commun. ACM, 49(12):78–81.
SEI (2011). A framework for software product line practice. Simão, A. and Petrenko, A. (2010). Fault Coverage-Driven Incremental Test Generation. The Computer Journal, 53(9):1508–1522.
Simão, A., Petrenko, A., and Yevtushenko, N. (2009). Generating reduced tests for fsms with extra states. In the 21st IFIP WG 6.1 International Conference on Testing of Software and Communication Systems (TESTCOM ’09), pages 129–145.
Tevanlinna, A., Taina, J., and Kauppinen, R. (2004). Product family testing: a survey. SIGSOFT Softw. Eng. Notes, 29(2):12–12.
Uzuncaova, E., Garcia, D., Khurshid, S., and Batory, D. (2007). A specification-based approach to testing software product lines. In ESEC-FSE ’07, pages 525–528, ACM.
Uzuncaova, E., Garcia, D., Khurshid, S., and Batory, D. (2008). Testing software product lines using incremental test generation. In the 2008 19th International Symposium on Software Reliability Engineering (ISSRE ’08), pages 249–258.
Young, T. J. and Young, T. J. (2005). Using AspectJ to build a software product line for mobile devices. MSc dissertation. In University of British Columbia.
Zander, J., Schieferdecker, I., and Mosterman, P. J. (2011). Model-Based Testing for Embedded Systems. CRC Press.