skip to main content
research-article

A regression test selection technique for embedded software

Published:24 December 2013Publication History
Skip Abstract Section

Abstract

The current approaches for regression test selection of embedded programs are usually based on data- and control-dependency analyses, often augmented with human reasoning. Existing techniques do not take into account additional execution dependencies which may exist among code elements in such programs due to features such as tasks, task deadlines, task precedences, and intertask communications. In this context, we propose a model-based regression test selection technique for such programs. Our technique first constructs a graph model of the program; the proposed graph model has been designed to capture several characteristics of embedded programs, such as task precedence order, priority, intertask communication, timers, exceptions and interrupt handlers, which we consider important for regression-test selection. Our regression test selection technique selects test cases based on an analysis of the constructed graph model. We have implemented our technique to realize a prototype tool. The experimental results obtained using this tool show that, on average, our approach selects about 28.33% more regression test cases than those selected by a traditional approach. We observed that, on average, 36.36% of the fault-revealing test cases were overlooked by the existing regression test selection technique.

References

  1. Aho, A., Sethi, R., and Ullman, J. 2008. Compilers: Principles, Techniques and Tools 2nd Ed. Dorling Kindersley (India) Pvt Ltd. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. Allen, M. and Horwitz, S. 2003. Slicing java programs that throw and catch exceptions. In Proceedings of the ACM SIGPLAN Workshop on Partial Evaluation and Semantics-Based Program Manipulation (PEPM'03). ACM, New York, NY, 44--54. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. Bates, S. and Horwitz, S. 1993. Incremental program testing using program dependence graphs. In Proceedings of the Conference Record of the 20th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages. ACM, New York, NY, 384--396. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. Binkley, D. 1997. Semantics guided regression test cost reduction. IEEE Trans. Softw. Eng. 23, 8, 498--516. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. Biswas, S. 2011. Model-based regression test selection and optimization for embedded programs. M.S. thesis, Indian Institute of Technology, Kharagpur, India.Google ScholarGoogle Scholar
  6. Biswas, S., Mall, R., Satpathy, M., and Sukumaran, S. 2009. A model-based regression test selection approach for embedded applications. ACM SIGSOFT Softw. Eng. Notes 34, 4, 1--9. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. Biswas, S., Mall, R., Satpathy, M., and Sukumaran, S. 2011. Task dependency analysis for regression test selection of embedded programs. IEEE Embed. Syst. Lett. 3, 4, 117--120. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. Cartaxo, E., Machado, P., and Neto, F. 2011. On the use of a similarity function for test case selection in the context of model-based testing. Softw. Test. Verification Reliab. 21, 2, 75--100. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. Cleve, A., Henrard, J., and Hainaut, J. 2006. Data reverse engineering using system dependency graphs. In Proceedings of the 13th Working Conference on Reverse Engineering. IEEE Computer Society, Los Alamitos, CA, 157--166. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. Do, H., Mirarab, S., Tahvildari, L., and Rothermel, G. 2010. The effects of time constraints on test case prioritization: A series of controlled experiments. IEEE Trans. Softw. Eng. 36, 5, 593--617. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. Ferrante, J., Ottenstein, K., and Warren, J. 1987. The program dependence graph and its use in optimization. ACM Trans. Program. Lang. Syst. 9, 3, 319--349. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. Guan, J., Offutt, J., and Ammann, P. 2006. An industrial case study of structural testing applied to safety-critical embedded software. In Proceedings of the ACM/IEEE International Symposium on Empirical Software Engineering. ACM, New York, NY, 272--277. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. Harrold, M., Jones, J., Li, T., Liang, D., Orso, A., Pennings, M., Sinha, S., Spoon, S. A., and Gujarathi, A. 2001. Regression test selection for java software. In Proceedings of the 16th ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages and Applications. ACM, New York, NY, 312--326. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. Hatley, D. and Pirbhai, I. 1987. Strategies for Real-Time System Specification. Dorset House Publishing Company. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. Horwitz, S., Reps, T., and Binkley, D. 1990. Interprocedural slicing using dependence graphs. ACM Trans. Program. Lang. Syst. 12, 1, 26--61. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. Jiang, S., Zhou, S., Shi, Y., and Jiang, Y. 2006. Improving the preciseness of dependence analysis using exception analysis. In Proceedings of the 15th IEEE International Conference on Computing. IEEE Computer Society, Los Alamitos, CA, 277--282. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. Kapfhammer, G. 2004. The Computer Science Handbook 2nd Ed. CRC Press, Boca Raton, FL, (Chapter on Software Testing.)Google ScholarGoogle Scholar
  18. Knuth, D. 1974. Structured programming with go to statements. ACM Comput. Surv. 6, 4, 261--301. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. Kondoh, H. and Futatsugi, K. 2006. To use or not to use the goto statement: Programming styles viewed from Hoare Logic. Sci. Comput. Program. 60, 1, 82--116. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. Leung, H. and White, L. 1989. Insights into regression testing. In Proceedings of the Conference on Software Maintenance. 60--69.Google ScholarGoogle Scholar
  21. Liang, D. and Harrold, M. 1998. Slicing objects using system dependence graphs. In Proceedings of the International Conference on Software Maintenance. IEEE Computer Society, Los Alamitos, CA, 358--367. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. Mall, R. 2007. Real-Time Systems Theory and Practice 1st Ed. Pearson Education. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. Marwedel, P. 2007. Embedded System Design. Springer. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. Mathworks. 2011. MATLAB. http://www.mathworks.com.Google ScholarGoogle Scholar
  25. McConell, S. 2004. Code Complete: A Practical Handbook of Software Construction 2nd Ed. Microsoft Press.Google ScholarGoogle Scholar
  26. Netkow, M. and Brylow, D. 2010. Xest: An automated framework for regression testing of embedded software. In Proceedings of the Workshop on Embedded Systems Education (WESE'10). ACM, New York, NY, 7:1--7:8. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. Orso, A., Shi, N., and Harrold, M. 2004. Scaling regression testing to large software systems. In Proceedings of the 12th ACM SIGSOFT 12th International Symposium on Foundations of Software Engineering. ACM, New York, NY, 241--251. Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. OSEK. 2001. OSEK/VDX time-triggered operating system specification 1.0. http://portal.osek-vdx.org.Google ScholarGoogle Scholar
  29. Romanovsky, A., Xu, J., and Randell, B. 1998. Exception handling in object-oriented real-time distributed systems. In Proceedings of the 1st IEEE International Symposium on Object-Oriented Real-Time Distributed Computing (ISORC'98). IEEE Computer Society, Los Alamitos, CA 32--42. Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. Rothermel, G. and Harrold, M. 1996. Analyzing regression test selection techniques. IEEE Trans. Softw. Eng. 22, 8, 529--551. Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. Rothermel, G. and Harrold, M. 1997. A safe, efficient regression test selection technique. ACM Trans. Softw. Eng. Methodol. 6, 2, 173--210. Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. Sales, J. 2005. Symbian OS Internals: Real-Time Kernel Programming. John Wiley & Sons. Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. Salewski, F. and Taylor, A. 2007. Fault handling in FPGAs and microcontrollers in safety-critical embedded applications: A comparative survey. In Proceedings of the ACM/IEEE International Symposium on Empirical Software Engineering (ISESE'06). 124--131. Google ScholarGoogle ScholarDigital LibraryDigital Library
  34. Sangiovanni-Vincentelli, A. and Natale, M. D. 2007. Embedded system design for automotive applications. IEEE Computer 40, 42--51. Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. Schotland, T. and Petersen, P. 2011. Exception Handling in C without C++. http://www.on-time.com/ddj0011.htm.Google ScholarGoogle Scholar
  36. Seo, J., Ki, Y., Choi, B., and La, K. 2008. Which spot should I test for effective embedded software testing? In Proceedings of the 2nd International Conference on Secure System Integration and Reliability Improvement (SSIRI'08). IEEE Computer Society, Los Alamitos, CA, 135--142. Google ScholarGoogle ScholarDigital LibraryDigital Library
  37. Silberschatz, A., Galvin, P., and Gagne, G. 2010. Operating System Concepts 8th Ed. Wiley India Pvt Ltd. Google ScholarGoogle ScholarDigital LibraryDigital Library
  38. Sinha, S., Harrold, M., and Rothermel, G. 1999. System-dependence-graph-based slicing of programs with arbitrary interprocedural control flow. In Proceedings of the 21st International Conference on Software Engineering. ACM, New York, NY, 432--441. Google ScholarGoogle ScholarDigital LibraryDigital Library
  39. Sinha, S. and Harrold, M. J. 1998. Analysis of programs with exception-handling constructs. In Proceedings of the International Conference on Software Maintenance (ICSM'98). IEEE Computer Society, 348. Google ScholarGoogle ScholarDigital LibraryDigital Library
  40. Sundmark, D., Pettersson, A., Eldh, S., Ekman, M., and Thane, H. 2007. Efficient system-level testing of embedded real-time software. In Proceedings of the Work in Progress Session of the 17th Eurmicro Conference on Real-Time System. 53--56.Google ScholarGoogle Scholar
  41. Vahid, F. and Givargis, T. 2002. Embedded System Design: A Unified Hardware/Software Introduction 1st Ed. John Wiley & Sons. Google ScholarGoogle ScholarDigital LibraryDigital Library
  42. Vokolos, F. and Frankl, P. 1997. Pythia: A regression test selection tool based on textual differencing. In Proceedings of the 3rd International Conference on Reliability, Quality & Safety of Software-Intensive Systems (ENCRESS'97). Chapman & Hall, Ltd., London, 3--21. Google ScholarGoogle ScholarDigital LibraryDigital Library
  43. Ward, P. and Mellor, S. 1991. Structured Development for Real-Time Systems. Prentice Hall Professional Technical Reference. Google ScholarGoogle ScholarDigital LibraryDigital Library
  44. Wind River Systems. 2010. Wind River VxWorks: Embedded RTOS with support for POSIX and SMP. http://www.windriver.com/products/vxworks/.Google ScholarGoogle Scholar
  45. Zheng, J., Robinson, B., Williams, L., and Smiley, K. 2006. Applying regression test selection for COTS-based applications. In Proceedings of the 28th International Conference on Software Engineering (ICSE'06). ACM, New York, NY, 512--522. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. A regression test selection technique for embedded software

    Recommendations

    Comments

    Login options

    Check if you have access through your login credentials or your institution to get full access on this article.

    Sign in

    Full Access

    PDF Format

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader
    About Cookies On This Site

    We use cookies to ensure that we give you the best experience on our website.

    Learn more

    Got it!