Behavior Driven Development: Best Practices for Software Quality
DOI:
https://doi.org/10.14482/inde.39.1.005.3Keywords:
Behavior, Development, Software quality, TestingAbstract
Ensuring the quality and functionality of a software product is to guarantee its correct structure, composition, execution, and integrity, but, in some cases, these characteristics are affected due to inefficient software management and development. The aim of this review was to identify good practices when using behavior-driven development. In its development, we investigated research articles categorized in indexed journals, in databases such as IEEE, ScienceDirect, Scielo, Scopus, and Redalyc, prepared between 2016 and 2020. The analysis and review allowed to identify good practices, such as the use of scenarios that are exclusively for tests of functionality; the organization of characteristics in folders, according to system scenarios; the contextualization of the operation in the same language as the clients, to facilitate communication; the use of labels to group scenarios; the organization of characteristics according to needs; and the generation of scenarios without dependency. We concluded that these good practices allow for adequate communication, structured software design, functional quality of each component of the code, and, above all, for an efficient product with a minimum risk of loss of resources and a high margin of success.
References
M. Kuhrmann, P. Diebold, J. Mu?nch, P. Tell, K. Trektere and F. McCaffery, V. Garousi, M. Felderer, O. Linssen, E. Hanser y C. R. Prause, “Hybrid software development approaches in practice: a European perspective”, IEEE Software, vol. 36, no. 4, pp. 20-31, en. 2018. Doi: 10.1109/MS.2018.110161245
H. Bünder y H. Kuchen, “A model-driven approach for behavior-driven GUI testing”, en Proceedings of the 34th ACM/SIGAPP Symposium on Applied Computing, 2019, pp. 1742-1751. https://doi.org/10.1145/3297280.3297450
M. Callejas-Cuervo, A. C. Alarcón-Aldana y A. M. Álvarez-Carreño, “Modelos de calidad del software, un estado del arte”, Entramado, vol. 13, no. 1, pp. 236-250, en.-jun. 2017. https://doi.org/10.18041/entramado.2017v13n1.25125
A. S. Dookhun y L. Nagowah, “Assessing the effectiveness of test-driven development and behavior-driven development in an industry setting”, en 2019 International Conference on Computational Intelligence and Knowledge Economy (ICCIKE), 2019, pp. 365-370. Doi: 10.1109/ICCIKE47802.2019.9004328
H. Schulz, D. Okanovi?, A. Van Hoorn, V. Ferme y K. S. P. A. Switzerland, “Behavior-driven load testing using contextual knowledge: approach and experiences”, en ICPE’19: Tenth ACM/SPEC International Conference on Performance Engineering, 2019, pp. 265-272. https://doi.org/10.1145/3297663.3309674
A. C. Barus, “The implementation of ATDD and BDD from Testing Perspectives”, J. Phys.: Conf. Ser., vol. 1175, no. 012112, pp. 1-7, 2019. Doi: 10.1088/1742-6596/1175/1/012112
T. R. Benala y R. Mall, “DABE: differential evolution in analogy-based software development effort estimation”, Swarm Evol. Comput., vol. 38, pp. 158-172, febr. 2018. https://doi.org/10.1016/j.swevo.2017.07.009
A. Dávila, C. García y S. Cóndor, “Análisis exploratorio en la adopción de prácticas de pruebas de software de la ISO/IEC 29119-2 en organizaciones de Lima, Perú”, RISTI - Rev. Iber. Sist. e Tecnol. Inf., no. 21, pp. 1-17, mzo. 2017. Doi: 10.17013/risti.21.1-17
El Peruano, “Impulso a exportación de servicios”, sept. 2019 [En línea]. Disponible en: https://www.datasur.com/impulso-a-exportacion-de-servicios/
Gestión, “Perú tiene potencial para desarrollo de software dedicado al sector empresarial”, abr. 2016 [En línea]. Disponible en: https://gestion.pe/tecnologia/peru-potencial-desarrollo-software-dedicado-sector-empresarial-117244-noticia/
Gestión, “Mercado de la informática en Perú crecerá 9.7 % este año”, mzo. 2019 [En línea]. Disponible en: https://gestion.pe/economia/empresas/mercado-informatica-peru-crecera-9-7-ano-260535-noticia/
D. E. Muñoz (2019), Programa Crea Software Perú [En línea]. Disponible en: https://www.academia.edu/8312872/PROGRAMA_CREA_SOFTWARE_PERU
M. Ángel Valenzuela, “¿Qué hay de nuevo en la metacognición? Revisión del concepto, sus componentes y términos afines”, Educ. e Pesqui., vol. 45, e187571, 2019. https://doi.org/10.1590/S1678-4634201945187571
F. Arias, “Efectividad y eficiencia de la investigación tecnológica en la universidad”, Rev. Electrónica Cienc. y Tecnol. del Inst. Univ. Tecnol. Maracaibo, vol. 3, no. 1, pp. 64-84, 2017 [En línea]. Disponible en: http://www.recitiutm.iutm.edu.ve/index.php/recitiutm
M. Schwarz-Díaz (febr. 2017), Guía de referencia para la elaboración de una investigación aplicada [En línea]. Disponible en: https://core.ac.uk/download/pdf/162614981.pdf
E. M., Sánchez, H. T. Bózzola, A. Soler y S. I. Mariño, “Metodología para el relevamiento y análisis de la información”, Cienc. Lat. Rev. Científica Multidiscip., vol. 4, no. 1, pp. 99-115, 2020. https://doi.org/10.37811/cl_rcm.v4i1.44
A. Rodrigues da Silva, C. R. Paiva y V. E. R. da Silva, “Towards a test specification language for information systems: focus on data entity and state machine tests”, en Proceedings of the 6th International Conference on Model-Driven Engineering and Software Development - MODELSWARD, 2018, pp. 213-224. Doi: 10.5220/0006608002130224
J. Mera Paz, “Análisis del proceso de pruebas de calidad de software”, Ing. Solidar., vol. 12, no. 20, pp. 163-176, oct. 2016. http://dx.doi.org/10.16925/in.v12i20.1482
D. Carrizo y A. Alfaro, “Método de aseguramiento de la calidad en una metodología de desarrollo de software: un enfoque práctico”, Ingeniare. Rev. chil. ing., vol. 26, no. 1, pp. 114-129, mzo. 2018. http://dx.doi.org/10.4067/S0718-33052018000100114
F. Sambinelli, E. L. Ursini, M. A. F. Borges y P. S. Martins, “Modeling and performance analysis of scrumban with test-driven development using discrete event and fuzzy logic”, en 2018 6th International Conference in Software Engineering Research and Innovation (CONISOFT), 2018, pp. 152-159. Doi: 10.1109/CONISOFT.2018.8645924
R. K. Lenka, S. Kumar y S. Mamgain, “Behavior driven development: tools and challenges”, en 2018 International Conference on Advances in Computing, Communication Control and Networking (ICACCCN), 2018, pp. 1032-1037. Doi: 10.1109/ICACCCN.2018.8748595
S. Ibarra y M. Muñoz, “Support tool for software quality assurance in software development”, en 2018 7th International Conference On Software Process Improvement (CIMPS), 2018, pp. 13-19. Doi: 10.1109/CIMPS.2018.8625617
T. Rocha, P. Borba y J. P. Santos, “Using acceptance tests to predict files changed by programming tasks”, J. Syst. Softw., vol. 154, pp. 176-195, ag. 2019. https://doi.org/10.1016/j.jss.2019.04.060
R. Kumar, N. Hasteer y J.-P. Van Belle, “Evaluating factors influencing contestant behavior in competitive software development”, en 2018 8th International Conference on Cloud Computing, Data Science & Engineering (Confluence), 2018, pp. 20-25. Doi: 10.1109/CONFLUENCE.2018.8442860
D. Lubke y T. van Lessen, “Modeling test cases in BPMN for behavior-driven development”, IEEE Softw., vol. 33, no. 5, pp. 15-21, 2016. Doi: 10.1109/MS.2016.117
M. G. Cavalcante y J. I. Sales, “The behavior driven development applied to the software quality test: a case study applied to the promotion of sports financing in Brazil”, en 2019 14th Iberian Conference on Information Systems and Technologies (CISTI), 2019, pp. 1-4. Doi: 10.23919/CISTI.2019.8760965
V. T. Sarinho, “‘BDD Assemble!’: A paper-based game proposal for behavior driven development design learning”, en Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics), vol. 11863 LNCS, pp. 431-435, 2019. https://doi.org/10.1007/978-3-030-34644-7_41
M. M. Moe, “Comparative Study of test-driven development (TDD), behavior-driven development (BDD) and acceptance test-driven development (ATDD)”, Int. J. Trend Sci. Res. Dev., vol. 3, no. 4, pp. 231-234, 2019 [En línea]. Disponible en: http://www.ipindexing.com/article/14720
M. O’Brien, “Toward leveraging gherkin controlled natural language and machine translation for global product information development”, en Proceedings of the 21st Annual Conference of the European Association for Machine Translation: 28-30 May 2018, J. A. Pérez-Ortiz, et al., Eds. Alacant: Universitat d’Alacant, 2018, pp. 293-296 [En línea].
Disponible en: http://hdl.handle.net/10045/76107
S. Staroletov, “Building a process of trustworthy software developing based on BDD and ontology approaches with further formal verification”, en 9th Workshop “Program Semantics, Specification and Verification: Theory and Applications” dedicated to the memory of B. A. Trakhtenbrot, M. I. Dekhtyar, and M. K. Valiev (Yaroslavl, Russia, June 21-22, 2018),
N. Shilov y V. Zakharov, Eds. Yaroslavl: Yaroslavl State University, 2018, pp. 92-97 [En línea]. Disponible en: http://www.lib.uniyar.ac.ru/edocs/iuni/20180406.pdf#page=92
C. Maldonado, I. Gastañaga, C. I. Inchaurrondo, P. A. Vaca, M. Bueno, M. S. Romero y J. P. Peretti, “Estudio de adopción de técnicas de desarrollo de software guiado por las pruebas”, en XVIII Work. Investig. en Ciencias la Comput., Red de Universidades con Carreras en Informática, Entre Ríos, Argentina, 2016 [En línea]. Disponible en: http:// sedici.unlp.edu.ar/handle/10915/53454
I. Herman y M. Plechawska-Wójcik, “Study on applying the Cucumber tool in testing applications”, J. Comput. Sci. Inst., vol. 11, pp. 91-95, 2019. https://doi.org/10.35784/jcsi.146
C. Wiecher, S. Japs, L. Kaiser, J. Greenyer, R. Dumitrescu y C. Wolff, “Scenarios in the loop: integrated requirements analysis and automotive system validation”, en MODELS ‘20: Proceedings of the 23rd ACM/IEEE International Conference on Model Driven Engineering Languages and Systems: Companion Proceedings, 2020, pp. 1-10. https://doi.
org/10.1145/3417990.3421264
A. Sheshasaayee y P. Banumathi, “Impacts of behavioral driven development in the improvement of quality software deliverables”, en 2018 3rd International Conference on Inventive Computation Technologies (ICICT), 2018, pp. 228-230. Doi: 10.1109/ICICT43934.2018.9034287
R. R. Dania Mailen, Z. Pérez Morales y M. D. Delgado Dapena, “Generador de valores interesantes para casos de pruebas unitarias”, Ing. Ind., vol. XL, no. 2, pp. 183-193, my.-ag. 2019 [En línea]. Disponible en: http://scielo.sld.cu/scielo.php?script=sci_arttext&pid=S1815-59362019000200183
G. Lucassen, F. Dalpiaz, J. M. E. M. van der Werf, S. Brinkkemper y Di. Zowghi, “Behavior-driven requirements traceability via automated acceptance tests”, en 2017 IEEE 25th International Requirements Engineering Conference Workshops (REW), 2017, pp. 431-434. Doi: 10.1109/REW.2017.84
A. Scandaroli, R. Leite, A. H. Kiosia y S. A. Coelho, “Behavior-driven development as an approach to improve software quality and communication across remote business stakeholders, developers and QA: two case studies”, en 2019 ACM/IEEE 14th International Conference on Global Software Engineering (ICGSE), 2019, pp. 105-110. Doi: 10.1109/
ICGSE.2019.00030
M. Härlin (2016), Testing and Gherkin in agile projects [En línea]. Disponible en: https://www.diva-portal.org/smash/record.jsf?pid=diva2 %3A908749&dswid=9136
B. Gonen y D. Sawant, “Significance of agile software development and SQA powered by automation”, en 2020 3rd International Conference on Information and Computer Technologies (ICICT), 2020, pp. 7-11. Doi: 10.1109/ICICT50521.2020.00009
M. Rahman y J. Gao, “A reusable automated acceptance testing architecture for microservices in behavior-driven development”, en 2015 IEEE Symposium on Service-Oriented System Engineering, 2015, vol. 30, pp. 321-325. Doi: 10.1109/SOSE.2015.55
F. Huang, Y. Wang, Y. Wang y P. Zong, “What software quality characteristics most concern safety-critical domains?”, en Proceedings - 2018 IEEE 18th International Conference on Software Quality, Reliability, and Security Companion, QRS-C 2018, 2018, pp. 635-636. Doi: 10.1109/QRS-C.2018.00111
A. Z. H. Yang, D. Alencar da Costa y Y. Zou, “Predicting co-changes between functionality specifications and source code in behavior driven development”, en 2019 IEEE/ACM 16th International Conference on Mining Software Repositories (MSR), 2019, pp. 534-544. Doi: 10.1109/MSR.2019.00080
N. Gao y Z. Li, “Generating testing codes for behavior-driven development from problem diagrams: a tool-based approach”, en 2016 IEEE 24th International Requirements Engineering Conference (RE), 2016, pp. 399-400. Doi: 10.1109/RE.2016.54
G. Oliveira y S. Marczak, “On the empirical evaluation of BDD scenarios quality: preliminary findings of an empirical study”, en 2017 IEEE 25th International Requirements Engineering Conference Workshops (REW), 2017, pp. 299-302. Doi: 10.1109/REW.2017.62
S. Bonfanti, A. Gargantini y A. Mashkoor, “Generation of behavior-driven development C++ tests from Abstract State Machine scenarios”, Commun. Comput. Inf. Sci., vol. 929, pp. 146-152, oct. 2018. https://doi.org/10.1007/978-3-030-02852-7_13
F. Zampetti, A. Di Sorbo, C. A. Visaggio, G. Canfora y M. Di Penta, “Demystifying the adoption of behavior-driven development in open source projects”, Inf. Softw. Technol., vol. 123, p. 106311, jul. 2020. https://doi.org/10.1016/j.infsof.2020.106311
Y. Wang y S. Wagner, “Combining STPA and BDD for safety analysis and verification in agile development: a controlled experiment”, en Agile Processes in Software Engineering and Extreme Programming. XP 2018. Lecture Notes in Business Information Processing, J. Garbajosa, X. Wang y A. Aguiar. Eds. Cham: Springer, 2018, pp. 37-53. https://doi.
org/10.1007/978-3-319-91602-6_3
Z. Ali, “Behavior-driven development as an error-reduction practice for mobile application testing”, IJCSI, vol. 16, no. 2, , pp. 1-10, mzo. 2019. https://doi.org/10.5281/zenodo.3234110 1