Skip to main content
Log in

TOAST: Automated Testing of Object Transformers in Dynamic Software Updates

  • Regular Paper
  • Published:
Journal of Computer Science and Technology Aims and scope Submit manuscript

Abstract

Dynamic software update (DSU) patches programs on the fly. It often involves the critical task of object transformation that converts live objects of the old-version program to their semantically consistent counterparts under the new-version program. This task is accomplished by invoking an object transformer on each stale object. However, a defective transformer failing to maintain consistency would cause errors or even crash the program. We propose TOAST (Test Object trAnSformaTion), an automated approach to detecting potential inconsistency caused by object transformers. TOAST first analyzes an update to identify multiple target methods and then adopts a fuzzer with specially designed inconsistency guidance to randomly generate object states to drive two versions of a target method. This creates two corresponding execution traces and a pair of old and new objects. TOAST finally performs object transformation to create a transformed object and detects inconsistency between it and the corresponding new object produced from scratch by the new program. Moreover, TOAST checks behavior inconsistency by comparing the return variables and exceptions of the two executions. Experimental evaluation on 130 updates with default transformers shows that TOAST is promising: it got 96.0% precision and 85.7% recall in state inconsistency detection, and 81.4% precision and 94.6% recall in behavior inconsistency detection. The inconsistency guidance improved the fuzzing efficiency by 14.1% for state inconsistency detection and 40.5% for behavior inconsistency detection.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Similar content being viewed by others

References

  1. Arnold J, Kaashoek M F. Ksplice: Automatic rebootless kernel updates. In Proc. the 4th ACM European Conference on Computer Systems, April 2009, pp.187-198. https://doi.org/10.1145/1519065.1519085.

  2. Giuffrida C, Iorgulescu C, Tanenbaum A S. Mutable checkpoint-restart: Automating live update for generic server programs. In Proc. the 15th International Middleware Conference, Dec. 2014, pp.133-144. https://doi.org/10.1145/2663165.2663328.

  3. Alkalai L, Tai A T. Long-life deep-space applications. IEEE Annals of the History of Computing, 1998(4): 37-38

    Google Scholar 

  4. Gregersen A R, Jørgensen B N. Dynamic update of Java applications—Balancing change flexibility vs programming transparency. Journal of Software Maintenance and Evolution: Research and Practice, 2009, 21(2): 81-112. https://doi.org/10.1002/smr.406.

    Article  Google Scholar 

  5. Subramanian S, Hicks M, McKinley K S. Dynamic software updates: A VM-centric approach. In Proc. the ACM SIGPLAN Conference on Programming Language Design and Implementation, June 2009, pp.1-12. https://doi.org/10.1145/1542476.1542478.

  6. Lindholm T, Yellin F, Bracha G, Buckley A. The Java® Virtual Machine Specification—Java SE 8 Edition (1st edition). Addison-Wesley Professional, 2014.

  7. Gu T, Cao C, Xu C, Ma X, Zhang L, Lu J. Javelus: A low disruptive approach to dynamic software updates. In Proc. the 19th Asia-Pacific Software Engineering Conference, Dec. 2012, pp.527-536. https://doi.org/10.1109/APSEC.2012.55.

  8. Ferrandina F, Meyer T, Zicari R, Ferran G. Schema and database evolution in the O2 object database system. In Proc. the 21st International Conference on Very Large Data Bases, Sept. 1995, pp.170-181.

  9. Saur K, Dumitraş T, Hicks M. Evolving NoSQL databases without downtime. In Proc. the International Conference on Software Maintenance and Evolution, Oct. 2016, pp.166-176. https://doi.org/10.1109/ICSME.2016.47.

  10. Kim D K, Tilevich E, Ribbens C J. Dynamic software updates for parallel high-performance applications. Concurrency and Computation: Practice and Experience, 2011, 23(4): 415-434. https://doi.org/10.1002/cpe.1663.

    Article  Google Scholar 

  11. Gupta D, Jalote P, Barua G. A formal framework for on-line software version change. IEEE Transactions on Software Engineering, 1996, 22(2): 120-131. https://doi.org/10.1109/32.485222.

    Article  Google Scholar 

  12. Neamtiu I, Hicks M, Stoyle G, Oriol M. Practical dynamic software updating for C. In Proc. the ACM SIGPLAN Conference on Programming Language Design & Implementation, June 2006, pp.72-83. https://doi.org/10.1145/1133981.1133991.

  13. Magill S, Hicks M, Subramanian S, McKinley K S. Automating object transformations for dynamic software updating. In Proc. the ACM International Conference on Object Oriented Programming Systems Languages and Applications, Oct. 2012, pp.265-280. https://doi.org/10.1145/2384616.2384636.

  14. Zhao Z, Jiang Y, Xu C, Gu T, Ma X. Synthesizing object state transformers for dynamic software updates. In Proc. the 43rd International Conference on Software Engineering, May 2021, pp.1111-1122. 10.1109/ICSE43902.2021.00103.

  15. Nahabedian L, Braberman V, D’Ippolito N, Honiden S, Kramer J, Tei K, Uchitel S. Dynamic update of discrete event controllers. IEEE Transactions on Software Engineering, 2020, 46(11): 1220-1240. https://doi.org/10.1109/TSE.2018.2876843.

    Article  Google Scholar 

  16. Zhao Z, Gu T, Ma X, Xu C, Lü J. CURE: Automated patch generation for dynamic software update. In Proc. the 23rd Asia-Pacific Software Engineering Conference, Dec. 2016, pp.249-256. https://doi.org/10.1109/APSEC.2016.043.

  17. Gu T, Ma X, Xu C, Jiang Y, Cao C, Lu J. Automating object transformations for dynamic software updating via online execution synthesis. In Proc. the 32nd European Conference on Object-Oriented Programming, July 2018, Article No. 19. https://doi.org/10.4230/LIPIcs.ECOOP.2018.19.

  18. Hayden C M, Hardisty E A, Hicks M, Foster J S. Efficient systematic testing for dynamically updatable software. In Proc. the 2nd International Workshop on Hot Topics in Software Upgrades, Oct. 2009, Article No. 9. https://doi.org/10.1145/1656437.1656449.

  19. Pina L, Veiga L, Hicks M. Rubah: DSU for Java on a stock JVM. In Proc. the 2014 International Conference on Object Oriented Programming Systems Languages Applications, Oct. 2014, pp.103-119. https://doi.org/10.1145/2660193.2660220.

  20. Pina L, Hicks M. Tedsuto: A general framework for testing dynamic software updates. In Proc. the 2016 IEEE International Conference on Software Testing, Verification and Validation, April 2016, pp.278-287. https://doi.org/10.1109/ICST.2016.27.

  21. Padhye R, Lemieux C, Sen K. JQF: Coverage-guided property-based testing in Java. In Proc. the 28th ACM SIGSOFT International Symposium on Software Testing and Analysis, July 2019, pp.398-401. https://doi.org/10.1145/3293882.3339002.

  22. Böhme M, Pham V T, Roychoudhury A. Coverage-based greybox fuzzing as Markov chain. IEEE Transactions on Software Engineering, 2019, 45(5): 489-506. https://doi.org/10.1109/TSE.2017.2785841.

  23. Padhye R, Lemieux C, Sen K, Papadakis M, Le Traon Y. Semantic fuzzing with ZEST. In Proc. the 28th ACM SIGSOFT International Symposium on Software Testing and Analysis, July 2019, pp.329-340. https://doi.org/10.1145/3293882.3330576.

  24. Liu X, Li X, Prajapati R, Wu D. DeepFuzz: Automatic generation of syntax valid C programs for fuzz testing. In Proc. the 33rd AAAI Conference on Artificial Intelligence, January 27-February 1, 2019, pp.1044-1051. https://doi.org/10.1609/aaai.v33i01.33011044.

  25. Wang C, Kang S. ADFL: An improved algorithm for American fuzzy lop in fuzz testing. In Proc. the 4th International Conference on Cloud Computing and Security, June 2018, pp.27-36. https://doi.org/10.1007/978-3-030-00018-9_3.

  26. Huang D, Zhao Z, Ma X. Testing for dynamic software update: An object-state-oriented approach. In Proc. the 12th Asia-Pacific Symposium on Internetware, Nov. 2020, pp.41-50. https://doi.org/10.1145/3457913.3457942.

  27. Altekar G, Bagrak I, Burstein P, Schultz A. OPUS: Online patches and updates for security. In Proc. the 14th Conference on USENIX Security Symposium, July 31-August 5, 2005.

  28. Hayden C M, Hardisty E A, Hicks M, Foster J S. A testing based empirical study of dynamic software update safety restrictions. Technical Report, University of Maryland, 2009. http://hdl.handle.net/1903/9802, Nov. 2021.

  29. Chiba S. Javassist—A reflection-based programming wizard for Java. In Proc. OOPSLA’98 Workshop on Reflective Programming in C++ and Java, Oct. 1998.

  30. Hosseini R, Brusilovsky P. JavaParser: A fine-grain concept indexing tool for Java problems. In Proc. the 1st Workshop on AI-Supported Education for Computer Science at the 16th International Conference on Artificial Intelligence in Education, July 2013.

  31. Qi L, Jin H, Foster I, Gawor J. HAND: Highly available dynamic deployment infrastructure for Globus toolkit 4. In Proc. the 15th EUROMICRO International Conference on Parallel, Distributed and Network-Based Processing, Feb. 2007, pp.155-162. https://doi.org/10.1109/PDP.2007.49.

  32. Li H, Huang B, Lu J. Dynamical evolution analysis of the object-oriented software systems. In Proc. the 2008 IEEE Congress on Evolutionary Computation, June 2008, pp.3030-3035. https://doi.org/10.1109/CEC.2008.4631207.

  33. Previtali S C, Gross T R. Aspect-based dynamic software updating: A model and its empirical evaluation. In Proc. the 10th International Conference on Aspect-Oriented Software Development, March 2011, pp.105-116. https://doi.org/10.1145/1960275.1960289.

  34. Gu T, Zhao Z, Ma X, Xu C, Cao C, Lü J. Improving reliability of dynamic software updating using runtime recovery. In Proc. the 23rd Asia-Pacific Software Engineering Conference, Dec. 2016, pp.257-264. https://doi.org/10.1109/APSEC.2016.044.

  35. Würthinger T, Wimmer C, Stadler L. Dynamic code evolution for Java. In Proc. the 8th International Conference on the Principles and Practice of Programming in Java, Sept. 2010, pp.10-19. https://doi.org/10.1145/1852761.1852764.

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Xiao-Xing Ma.

Supplementary Information

ESM 1

(PDF 154 kb)

Rights and permissions

Reprints and permissions

About this article

Check for updates. Verify currency and authenticity via CrossMark

Cite this article

Zhao, ZL., Huang, D. & Ma, XX. TOAST: Automated Testing of Object Transformers in Dynamic Software Updates. J. Comput. Sci. Technol. 37, 50–66 (2022). https://doi.org/10.1007/s11390-021-1693-1

Download citation

  • Received:

  • Accepted:

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s11390-021-1693-1

Keywords

Navigation