Journal of Computer Science and Technology ›› 2022, Vol. 37 ›› Issue (1): 50-66.doi: 10.1007/s11390-021-1693-1

Special Issue: Software Systems

• Special Section on Software Systems 2021 • Previous Articles     Next Articles

TOAST: Automated Testing of Object Transformers in Dynamic Software Updates

Ze-Lin Zhao (赵泽林), Student Member, CCF, ACM, Di Huang (黄頔), and Xiao-Xing Ma* (马晓星), Member, CCF, ACM        

  1. State Key Laboratory for Novel Software Technology, Nanjing University, Nanjing 210023, China
  • Received:2021-06-08 Revised:2022-01-03 Accepted:2022-01-10 Online:2022-01-28 Published:2022-01-28
  • Contact: Xiao-Xing Ma
  • About author:Xiao-Xing Ma received his Ph.D. degree in computer science and technology from Nanjing University, Nanjing, in 2003. He is currently a professor in State Key Laboratory for Novel Software Technology, Nanjing University, Nanjing. He is a member of CCF and ACM. His research topics include adaptive software systems, software architectures, and middleware systems and assurance of non-functional software qualities.
  • Supported by:
    This work was supported by the National Natural Science Foundation of China under Grant Nos.62025202 and 61690204.

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.

Key words: object state transformer; inconsistency detection; dynamic software update (DSU); fuzzing testing;

[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. DOI: 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. DOI: 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.
[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. DOI: 10.1002/smr.406.
[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. DOI: 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. DOI: 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. DOI: 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. DOI: 10.1002/cpe.1663.
[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. DOI: 10.1109/32.485222.
[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. DOI: 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. DOI: 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. DOI: 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. DOI: 10.1109/TSE.2018.2876843.
[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. DOI: 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 ution synthesis. In Proc. the 32nd European Conference on Object-Oriented Programming, July 2018, Article No.19. DOI: 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. DOI: 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. DOI: 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. DOI: 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. DOI: 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. DOI: 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. DOI: 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. DOI: 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. DOI: 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. DOI: 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., 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. DOI: 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. DOI: 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. DOI: 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. DOI: 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. DOI: 10.1145/1852761.1852764.
No related articles found!
Full text



[1] Li Wanxue;. Almost Optimal Dynamic 2-3 Trees[J]. , 1986, 1(2): 60 -71 .
[2] Cai Zixing;. An Expert System for Robot Transfer Planning[J]. , 1988, 3(2): 153 -160 .
[3] Feng Yin; Wang Kaizhu; Chang Yadong; Li Zhongrong;. CQAES,a Chinese Question Answer Experimental System[J]. , 1988, 3(4): 317 -319 .
[4] Sun Yudong; Xie Zhiliang;. Macro-Dataflow Computational Model and Its Simulation[J]. , 1990, 5(3): 289 -295 .
[5] Zhuang Nan;. Design of Quaternary ECL Q Gate[J]. , 1991, 6(1): 32 -36 .
[6] Lu Ruzhan; Zhang Zheng; Sun Yongqiang;. Construction of the Model of the Lambda Calculus System with Algebraic Operators[J]. , 1991, 6(1): 108 -112 .
[7] Liu Xiaohui;. Processing Expertise Systematically[J]. , 1991, 6(2): 121 -134 .
[8] Wang Haiying; Liu Shenquan;. A Domain Knowledge Driven Approach for User Interface Software Development[J]. , 1991, 6(2): 145 -152 .
[9] Lin Shan;. Using a Student Model to Improve Explanation in an ITS[J]. , 1992, 7(1): 92 -96 .
[10] Fan Zhongchun; Xing Hancheng;. DKLFRS:A Default Knowledge Logical Framework Representation System[J]. , 1992, 7(2): 136 -142 .

ISSN 1000-9000(Print)

CN 11-2296/TP

Editorial Board
Author Guidelines
Journal of Computer Science and Technology
Institute of Computing Technology, Chinese Academy of Sciences
P.O. Box 2704, Beijing 100190 P.R. China
  Copyright ©2015 JCST, All Rights Reserved