The Importance of Testing in the Early Stages of Smart Contract Development Life Cycle
Keywords:Blockchain, Smart contract, Model-based software development, Early testing
The use of smart contract augurs a world without intermediaries because the code and the agreements contained therein exist across a distributed, decentralized blockchain network. In software engineering, this collaboration is usually represented by using business process models and smart contracts can be used to implement business collaborations in general and inter-organizational business processes. The validation of this contract and the assurance of its quality are critical for its right application. Early testing in smart contract definition is the fact of this paper. The paper discusses the possibility to use transformation protocols to obtain derived artefacts like test case definitions and smart contract code scaffolds. Generation of derived artefacts significantly reduces the number of defects before deploying the smart contract code in the blockchain network. Transformations protocols are created using model-based software development and modelling techniques. This approach allows to simplify and improve the management and execution of collaborative business processes. This would allow, in addition, the application of systematic mechanisms to evaluate and validate the smart contract and, particularly, the application of early testing techniques which would help to reduce the number of defects and, ultimately, the cost of the final review.
Achour, C.B. (1998). Writing and Correcting Textual Smart Contract for System Design. Natural Language and Information Systems Workshop. Vienna, Austria.
Beizer, B. (1990). Software Testing Techniques. Van Nostrand Reinhold Company Limited.
Binder, R. V. (2000). Testing Object-Oriented Systems. Addison-Wesley. USA.
Boehm B. (1981). Software Engineering Economics. Prentice Hall, Englewood Cliffs, NJ.
Buterin, V. (2014). Ethereum: A next-generation Smart Contract and decentralized application platform. https://github.com/ethereum/wiki/wiki/White-Pape.
Choudhury, O. Rudolph, N., Sylla, I., Fairoza, N. (2018). Auto-Generation of Smart Contracts from Domain-Specific Ontologies and Semantic Rules. 10.1109/Cybermatics_2018.2018.00183.
Clack, C.D., Bakshi, V.A., Braine, L. (2016). Smart Contract Templates: essential requirements and design options. https://arxiv.org/pdf/1612.04496.pdf
Cockburn, A. (2000). Writing Effective Use Cases. Addison-Wesley 1st edition. USA.
Conrad, M., Fey, I., Sadeghipour, S. (2005). Systematic Model-Based Testing of Embedded Automotive Software. Electronic Notes in Theoretical Computer Smart Contract (Book).
Cutilla, C. R., García-García, J. A., Gutiérrez, J. J., Domínguez-Mayo, P., Cuaresma, M. J. E., Rodríguez-Catalán, L., & Mayo, F. J. D. (2012). Model-driven Test Engineering. A Practical Analysis in the AQUA-WS Project. In ICSOFT (pp. 111-119).
Dimitrijević, S., Jovanovic, J., Devedžić, V. (2015). A comparative study of software tools for user story management. Information and Software Technology, 57 (1), 352–368. https://doi.org/10.1016/j.infsof.2014.05.012
Liss, F. (2018). Blockchain and the EU ETS: An architecture and a prototype of a decentralized emission trading system based on smart contracts. https://doi.org/10.13140/RG.2.2.15751.65448
Enríquez, J. G., Domínguez-Mayo, F. J., Escalona, M. J., García, J. A., Lee, V., & Goto, M. (2015). Entity Identity Reconciliation based Big Data Federation-A MDE approach.
Escalona, M.J., Gutiérrez J.J., Villadiego. D., León. A., Torres A.H. (2006). Practical Experiences in Web Engineering. 15th International Conference on Information Systems Development. Budapest (Hungary).
Escalona, M. J., Urbieta, M., Rossi, G., Garcia-Garcia, J. A., & Luna, E. R. (2013). Detecting Web requirements conflicts and inconsistencies under a model-based perspective. Journal of Systems and Software, 86(12), 3024–3038.
Fielding, R. T., Taylor R.N. (2000). Architectural styles and the design of network-based software architectures. Doctoral Dissertation. Architectural styles and the design of network-based software architectures. University of California, Irvine © 2000. ISBN:0-599-87118-0
Fielding, R. T., Taylor R.N. (2002). Principled Design of the Modern Web Architecture. ACM Transactions on Internet Technology, Vol. 2,
Forward, A., Lethbridge, T. (2008). Problems and opportunities for model-centric versus code-centric software development: A survey of software professionals. International Workshop on Models in Software Engineering
García-García, J. A., Escalona, M. J., Ravel, E., Rossi, G., & Urbieta, M. (2012). NDT-merge: a future tool for conciliating software requirements in MDE environments. In Proceedings of the 14th International Conference on Information Integration and Web-based Applications & Services (pp. 177–186). ACM.
García-García, J. A., Enríquez, J. G., García-Borgoñón, L., Arévalo, C., & Morillo, E. (2017). An MDE-based framework to improve the process management: the EMPOWER project. In 2017 IEEE 15th International Conference on Industrial Informatics (INDIN) (pp. 553–558). IEEE.
García-García, J.A., Ortega, M.A., García-Borgoñón, L., Escalona, M.J. (2012). NDT-Suite: a model-based suite for the application of NDT. In International Conference on Web Engineering. Springer, Berlin, Heidelberg.
Chainlink (2019). Interoperability and Connectivity: Unlocking Smart Contracts 3.0. https://blog.chain.link/interoperability-and-connectivity-unlocking-smart-contracts-3-0-2
Pham, V.C. (2018). Model-Based Software Engineering: Methodologies for Model – Code Synchronization in Reactive System Development. Embedded Systems. Université Paris – Saclay.
Graham, D., Van Veenendaal, E., Evans, I., Black, R. (2015). Foundations of Software Testing: ISTQB Certification Cengage Learning Emea; Revised edition.
Grigg, I. (2004). The Ricardian Contract. In Proceedings of the First IEEE International Workshop on Electronic Contracting. http://iang.org/papers/ricardian_contract.html.
Grigg, I. (2015). The Sum of All Chains – Let’s Converge! Presentation for Coinscrum and Proof of Work. http://financialcryptography.com/mt/archives/001556.html.
Hackius, N.; Petersen, M. (2017). Blockchain in Logistics and Supply Chain: Trick or Treat? In Proceedings of the Hamburg International Conference of Logistics (HICL), Hamburg, Germany.
Kitchenham B., Brereton P. (2013). A systematic review of systematic review process research in software engineering. Information & Software Technology.
Kundu, D., Samanta, D., Mall, R. (2013). Automatic code generation from unified modelling language sequence diagrams. Software, IET. 7. 12-28. 10.1049/iet-sen.2011.0080.
Lu, Q, Weber, I, Staples, M. (2018). Why Model-Driven Engineering Fits the Needs for Blockchain Application Development. IEEE Blockchain Technical Briefs, September 2018
Marchesi, M., Marchesi, L., Tonelli, R. (2018). An Agile Software Engineering Method to Design Blockchain Applications. Software Engineering Conference Russia (SECR 2018). Moscow (Russia).
Nakamoto, S. (2009). Bitcoin: A Peer-to-Peer Electronic Cash System.
Nofer, M., Gomber, P., Hinz, O., Schiereck, D. (2017). Blockchain. Business & Information Systems Engineering. June 2017, Volume 59, Issue 3, pp. 183-187.
OMG. (2017). An OMG ®Unified Modeling Language ®Publication OMG ®Unified Modeling Language ®(OMG UML ®) OMG Document Number: Date. (December), 796. https://www.omg.org/spec/UML/20161101/PrimitiveTypes.xmi
Omohundro, S. (2014). Cryptocurrencies, Smart Contracts, and artificial intelligence. Published in AI Matters.
PivotPoint TechnologyTM. (2019). Digital Engineering Solutions? for Wicked Problems (https://Pivotpt.com)
Pretschner, A., Prenninger, W., Wagner, S., Kuhnel, C., Baumgartner, M., Sostawa, B., Z ĺolch, R., Stauner, T. (2005). One evaluation of model-based testing and its automation. ICSE’05.
Rayskiy, A. (2017). Why Should Testing Start Early in Software Project Development? https://xbsoftware.com/blog/why-should-testing-start-early-software-project-development/
Sandoval, K. (2018). The Role of APIs In Blockchain. https://nordicapis.com/the-role-of-apis-in-Blockchain/. Bloc Nordic APIs.
Satoh, A., Ban, S., Harayama, Y., Yamamoto, K. (2019). Designing fulfilling test cases with test aspect model. Proceedings - 2019 IEEE 12th International Conference on Software Testing, Verification and Validation Workshops, ICSTW2019, 153-158. https://doi.org/10.1109/ICSTW2019.00044
Seebacher, S., Maleshkova, M. (2018). Model-driven Approach for the Description of Blockchain Business Networks. Proceedings of the 51st Hawaii International Conference on System Smart Contract.
Sillitti, A., Succi, G. (2005). Requirements Engineering for Agile Methods. In: Aurum A., Wohlin C. (eds) Engineering and Managing Software Requirements. Springer, Berlin, Heidelberg. DOI: https://doi.org/10.1007/3-540-28244-0_14
Sillitti, A., Ceschi, M., Russo, B., Succi, G. (2005) Managing Uncertainty in Requirements: A Survey in Documentation-driven and Agile Companies, in: 11th IEEE International Software Metrics Symposium (METRICS ’05). DOI: 10.1109/METRICS.2005.29
Staples, M., Chen, S., Falamaki, S., Ponomarev, A., Rimba, P. Tran, A. B., Weber, I. Xu, X., Zhu, L. (2017). Risks and opportunities for systems using Blockchain and Smart Contracts. Technical Report. Data61 (CSIRO), Sydney.
Sultan, K., Ruhi, U., Lakhani, R. (2018). Conceptualizing Blockchains: Characteristics & Applications. 11th IADIS International Conference Information Systems.
Uzun, B., Tekinerdogan, B. (2018). Model-driven architecture-based testing: A systematic literature review. Information and Software Technology, 102 (May), 30–48. https://doi.org/10.1016/j.infsof.2018.05.004
The Modex Team (2019). The life cycle of Smart Contract development https://blog.modex.tech/the-life-cycle-of-smart-contract-development-58b04f65de09
Tran, A.B., Lu, Q., Weber, I. (2018). Lorikeet: A model-driven engineering tool for Blockchain-based business process execution and asset management. In: BPM Demos. CEUR-WS.
Walport, M. (2016). Distributed Ledger Technology: Beyond Blockchain. A report by the UK Government Chief Smart Scientific Adviser. https://www.gov.uk/government/uploads/system/uploads/attachment_data/file/492972/gs-16-1-distributed-ledger-technology.pdf
Wiegers, K. E. (2001). Inspecting Requirements. StickyMinds.com Weekly Column.
Szabo, N. (1997). Formalizing and Securing Relationships on Public Networks. First Monday, 2, No. 9. http://firstmonday.org/ojs/index.php/fm/article/view/548/469
Schön E-M., Winter, D., Escalona, M.J., Thomaschewski, J. (2017). Key Challenges in Agile Requirements Engineering. 18th International Conference on Agile Software Development (XP2017), At Cologne.
Bialy, M., Pantelic, V., Jaskolka, J., Schaap, A., Patcas, L., Lawford, M. Wassyng, A. (2017). Software Engineering for Model-Based Development by Domain Experts. Handbook of System Safety and Security. https://doi.org/10.1016/B978-0-12-803773-7.00003-6
Marchesi, M., Marchesi, L., Tonelli, R. (2018). An Agile Software Engineering Method to Design Blockchain Applications. Software Engineering Conference Russia (SECR 2018). Moscow, Russia.
Uddin, A.; Anand, A. (2019). Importance of Software Testing in the Process of Software Development. IJSRD – International Journal for Scientific Research & Development. Vol. 6, Issue 12, 201.