{"id":14510,"date":"2018-10-30T08:00:31","date_gmt":"2018-10-30T07:00:31","guid":{"rendered":"http:\/\/192.168.20.3\/?p=14510"},"modified":"2024-12-12T12:06:10","modified_gmt":"2024-12-12T11:06:10","slug":"introduccion-testeo-unitario-abap-unit-testing","status":"publish","type":"post","link":"https:\/\/orekait.com\/es\/introduccion-testeo-unitario-abap-unit-testing\/","title":{"rendered":"Introducci\u00f3n al testeo unitario ABAP \u2013<br><span class=\"font-300\">ABAP UNIT TESTING<\/span>"},"content":{"rendered":"<p>[et_pb_section fb_built=&#8221;1&#8243; admin_label=&#8221;section&#8221; _builder_version=&#8221;4.25.2&#8243; global_colors_info=&#8221;{}&#8221;][et_pb_row admin_label=&#8221;Imagen principal&#8221; _builder_version=&#8221;4.16&#8243; background_size=&#8221;initial&#8221; background_position=&#8221;top_left&#8221; background_repeat=&#8221;repeat&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.16&#8243; custom_padding=&#8221;|||&#8221; global_colors_info=&#8221;{}&#8221; custom_padding__hover=&#8221;|||&#8221;][et_pb_image src=&#8221;https:\/\/orekait.com\/wp-content\/uploads\/2018\/10\/SAP-ABAP-unit-testing-introduccion.png&#8221; alt=&#8221;cloud-public&#8221; title_text=&#8221;SAP-ABAP-unit-testing-introducci\u00f3n&#8221; admin_label=&#8221;Imagen principal&#8221; module_class=&#8221;post-img&#8221; _builder_version=&#8221;4.25.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_image][\/et_pb_column][\/et_pb_row][et_pb_row admin_label=&#8221;Cuerpo&#8221; _builder_version=&#8221;4.25.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.25.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text content_last_edited=&#8221;off|desktop&#8221; admin_label=&#8221;Texto&#8221; _builder_version=&#8221;4.25.2&#8243; header_2_font_size=&#8221;24px&#8221; header_3_font_size=&#8221;20px&#8221; header_4_font_size=&#8221;17px&#8221; background_size=&#8221;initial&#8221; background_position=&#8221;top_left&#8221; background_repeat=&#8221;repeat&#8221; width=&#8221;%22671%22&#8243; height=&#8221;%22251%22&#8243; hover_enabled=&#8221;0&#8243; global_colors_info=&#8221;{}&#8221; content__hover_enabled=&#8221;off|hover&#8221; sticky_enabled=&#8221;0&#8243;]<\/p>\n<p>Con este art\u00edculo ponemos en relieve la importancia que tiene realizar pruebas sobre cualquier nuevo elemento desarrollado en\u00a0<strong>ABAP<\/strong>\u00a0y tambi\u00e9n, sobre cualquier modificaci\u00f3n que realicemos en c\u00f3digo existente. El\u00a0<strong>testeo unitario<\/strong>\u00a0nos proporciona tanto el<strong>\u00a0entorno de pruebas<\/strong>\u00a0como las\u00a0<strong>herramientas de an\u00e1lisis necesarias<\/strong>\u00a0para poder verificar el correcto funcionamiento de una unidad de desarrollo.<\/p>\n<p>Y es que est\u00e1 claro que a estas alturas, muy pocos dudar\u00e1n de la necesidad de realizar pruebas integradas pero\u2026 \u00bfc\u00f3mo vamos a ser capaces de encontrar errores en un sistema complejo si previamente no se han probado de manera suficiente todas las piezas que lo componen?\u00a0<strong>El testeo unitario se centra en esto<\/strong>:\u00a0<strong>pruebas sobre cualquier peque\u00f1a nueva pieza que se pretenda integrar en un sistema.<\/strong><\/p>\n<p>Vamos a empezar resaltando las ventajas e inconvenientes de los dos tipos de pruebas.<u><\/u><\/p>\n<h2><u>Tests Integrados<\/u><\/h2>\n<h3><strong>Ventajas<\/strong>:<\/h3>\n<ul>\n<li>Se realizan en un entorno real<\/li>\n<\/ul>\n<h3><strong>Desventajas<\/strong>:<\/h3>\n<ul>\n<li>Configuraci\u00f3n compleja del entorno<\/li>\n<li>S\u00f3lo se pueden realizar al finalizar el desarrollo<\/li>\n<li>Son lentos<\/li>\n<li>An\u00e1lisis de errores complejo<\/li>\n<li>Son fr\u00e1giles<\/li>\n<li>Necesitan un alto mantenimiento<\/li>\n<\/ul>\n<h2><u>Tests unitarios<\/u><\/h2>\n<h3><strong>Desventajas<\/strong>:<\/h3>\n<ul>\n<li>Se realizan en un entorno simulado<\/li>\n<\/ul>\n<h3><strong>Ventajas<\/strong>:<\/h3>\n<ul>\n<li>Est\u00e1n aislados del entorno<\/li>\n<li>Se pueden realizar paralelamente al desarrollo<\/li>\n<li>Son r\u00e1pidos<\/li>\n<li>Los errores son f\u00e1ciles de analizar<\/li>\n<li>Son estables<\/li>\n<li>Necesitan poco mantenimiento<\/li>\n<\/ul>\n<p>Como se puede ver, ambos tipos de pruebas\u00a0<strong>son necesarios y complementarios<\/strong>. Y lo que es m\u00e1s importante, la\u00a0<strong>aplicaci\u00f3n de ambos<\/strong>\u00a0nos permite aislar m\u00e1s f\u00e1cilmente los errores y solucionarlos usando una\u00a0<strong>cantidad de tiempo considerablemente menor<\/strong>.<\/p>\n<p>Vamos a comentar m\u00e1s en detalle cada uno de los aspectos mencionados.<\/p>\n<p>Los<strong>\u00a0tests unitarios<\/strong>\u00a0<strong>se realizan en un entorno simulado<\/strong>, es decir, no est\u00e1n influidos por las variables globales del entorno ni del sistema, entendiendo como tales a resultados de consultas a base de datos, todas las variables recogidas por la estructura SY (SY-DDATUM, SY-UNAME\u2026), autorizaciones asociadas a roles, etc. Tampoco van a estar influidos por la relaci\u00f3n con otros objetos, transacciones, programas o funciones externas a nuestro c\u00f3digo. Esto no quiere decir que el objeto de los tests no los tenga en cuenta, sino que si alg\u00fan tipo de estas situaciones tiene influencia en el objeto de an\u00e1lisis, pasar\u00e1n a ser\u00a0<strong>par\u00e1metros de configuraci\u00f3n del entorno de test, sin necesidad de cambiar el c\u00f3digo<\/strong>.\u00a0 Por lo tanto, el comportamiento del objeto en un entorno real no se va a conocer al 100%, pero si los tests est\u00e1n bien planteados, no supondr\u00e1 mayor problema. Sabremos de antemano el comportamiento del objeto en cualquier situaci\u00f3n. Esta desconexi\u00f3n del entorno nos permitir\u00eda, por ejemplo, hacer pruebas en un sistema en el que ciertas partes est\u00e1n rotas, en desarrollo o no funcionan de manera correcta. Toda relaci\u00f3n externa est\u00e1 simulada y obedece a nuestra configuraci\u00f3n. La filosof\u00eda es\u00a0<strong>aislar el objeto a analizar para ver si funciona como se espera<\/strong>, sin interferencias del entorno. Y por ello, esta\u00a0<strong>desventaja<\/strong>\u00a0es a la vez una ventaja:\u00a0<strong>aislamiento del entorno<\/strong>.<\/p>\n<p>Como consecuencia, las pruebas se pueden hacer\u00a0<strong>en paralelo al desarrollo<\/strong>, ya que no se necesita nada externo a nuestro objeto. Esto s\u00f3lo va a tener consecuencias positivas, ya que los errores se detectan en una fase temprana y se corrigen. Adem\u00e1s, el equipo de desarrollo se convierte a la vez en usuario durante las pruebas y se genera un c\u00f3digo m\u00e1s limpio y legible, facilitando su uso e integraci\u00f3n en el sistema.<\/p>\n<p><strong>Son r\u00e1pidos<\/strong>\u00a0porque durante las pruebas s\u00f3lo se ejecuta el c\u00f3digo que se quiere analizar y nada m\u00e1s. No es necesaria ni deseable la intervenci\u00f3n de otros procesos y por eso las pruebas son muy \u00e1giles.<\/p>\n<p>Los\u00a0<strong>errores son f\u00e1ciles de analizar<\/strong>\u00a0porque s\u00f3lo hay que centrarse en el funcionamiento de un \u00fanico elemento cuyo comportamiento es bastante predecible de antemano.\u00a0 Si la respuesta no es la esperada, las herramientas de an\u00e1lisis nos dir\u00e1n el valor\/es que se ha\/n obtenido, el que se esperaba y todos los pasos que ha dado la ejecuci\u00f3n para llegar e ese resultado.<\/p>\n<p><strong>Son estables<\/strong>\u00a0porque est\u00e1n eliminadas todas las interferencias externas. Si una bater\u00eda de tests tiene un resultado positivo, volver\u00e1 a tenerlo en el futuro, siempre que no se cambie el c\u00f3digo. Y si alg\u00fan cambio introduce errores, tendremos informaci\u00f3n al instante. Esto supone una gran diferencia con los test integrados.<\/p>\n<p><strong>Necesitan poco mantenimiento<\/strong>. S\u00f3lo necesitan una inversi\u00f3n extra en tiempo durante la fase de desarrollo, ya que hay que dise\u00f1arlos y programarlos en paralelo. Pero una vez terminados, no es necesario volver a revisarlos, a no ser que\u00a0<strong>se dote al objeto de nuevas funcionalidades<\/strong>. Adem\u00e1s, existen t\u00e9cnicas de desarrollo (el desarrollo orientado a testeo o\u00a0<strong>test driven development<\/strong>) que facilitan la labor y no son complicadas de asumir. El tiempo extra invertido se ve notablemente recompensado durante fases posteriores del proyecto, ya que se va a partir siempre de un c\u00f3digo revisado, probado y robusto.<\/p>\n<p>Por ahora esto es todo. Esperamos haber despertado vuestra curiosidad e inter\u00e9s. Los\u00a0<strong>pr\u00f3ximos art\u00edculos relacionados con el tema ser\u00e1n m\u00e1s t\u00e9cnicos y enfocados a desarrolladores ABAP<\/strong>. Pero creemos que hay que insistir y poner de relevancia este tema sin demasiados tecnicismos para\u00a0<strong>concienciar a clientes y responsables de proyectos que es mejor y m\u00e1s deseable invertir tiempo en calidad que en correcci\u00f3n de errores<\/strong>. El debugging no suele ser simple y siempre es m\u00e1s costoso que el partir de una base de desarrollo firme y s\u00f3lida.<\/p>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row admin_label=&#8221;M\u00e1s informaci\u00f3n&#8221; _builder_version=&#8221;4.25.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.25.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text _builder_version=&#8221;4.25.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p class=\"morado\">M\u00e1s informaci\u00f3n:<\/p>\n<p>[\/et_pb_text][et_pb_button button_url=&#8221;https:\/\/orekait.com\/es\/area-personalizacion&#8221; button_text=&#8221;M\u00e1s informaci\u00f3n&#8221; module_class=&#8221;entrada-btn&#8221; _builder_version=&#8221;4.25.2&#8243; _module_preset=&#8221;default&#8221; custom_button=&#8221;on&#8221; button_text_color=&#8221;#8156EA&#8221; button_bg_color=&#8221;RGBA(255,255,255,0)&#8221; button_border_color=&#8221;#8156EA&#8221; button_border_radius=&#8221;30px&#8221; button_font=&#8221;Plus Jakarta Sans|600|||||||&#8221; button_icon=&#8221;&#x24;||divi||400&#8243; button_icon_color=&#8221;#8156EA&#8221; button_on_hover=&#8221;off&#8221; hover_enabled=&#8221;0&#8243; global_colors_info=&#8221;{}&#8221; button_text_color__hover_enabled=&#8221;on|desktop&#8221; button_text_color__hover=&#8221;#8156EA&#8221; button_bg_color__hover_enabled=&#8221;on|hover&#8221; button_bg_color__hover=&#8221;#8156EA&#8221; button_bg_enable_color__hover=&#8221;on&#8221; button_icon_color__hover_enabled=&#8221;on|hover&#8221; button_icon_color__hover=&#8221;#ffffff&#8221; url_new_window=&#8221;on&#8221; sticky_enabled=&#8221;0&#8243;][\/et_pb_button][et_pb_divider show_divider=&#8221;off&#8221; _builder_version=&#8221;4.25.2&#8243; _module_preset=&#8221;default&#8221; custom_margin=&#8221;||40px||false|false&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_divider][\/et_pb_column][\/et_pb_row][et_pb_row use_custom_gutter=&#8221;on&#8221; admin_label=&#8221;Noticias relacionadas titulo&#8221; module_id=&#8221;fondo-articulos&#8221; _builder_version=&#8221;4.25.2&#8243; _module_preset=&#8221;default&#8221; background_color=&#8221;#f7f7f7&#8243; width=&#8221;100%&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.25.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_divider show_divider=&#8221;off&#8221; _builder_version=&#8221;4.25.2&#8243; _module_preset=&#8221;default&#8221; background_color=&#8221;RGBA(255,255,255,0)&#8221; custom_margin=&#8221;||40px||false|false&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_divider][et_pb_heading title=&#8221;Quizas te pueda interesar&#8221; _builder_version=&#8221;4.25.2&#8243; _module_preset=&#8221;default&#8221; title_level=&#8221;h2&#8243; title_text_align=&#8221;center&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_heading][et_pb_divider show_divider=&#8221;off&#8221; _builder_version=&#8221;4.25.2&#8243; _module_preset=&#8221;default&#8221; custom_margin=&#8221;||30px||false|false&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_divider][\/et_pb_column][\/et_pb_row][et_pb_row admin_label=&#8221;Noticias relacionadas&#8221; _builder_version=&#8221;4.25.2&#8243; _module_preset=&#8221;default&#8221; width=&#8221;100%&#8221; custom_margin=&#8221;-150px||||false|false&#8221; custom_margin_tablet=&#8221;0px||||false|false&#8221; custom_margin_phone=&#8221;0px||||false|false&#8221; custom_margin_last_edited=&#8221;on|desktop&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.25.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_blog fullwidth=&#8221;off&#8221; posts_number=&#8221;3&#8243; include_categories=&#8221;current&#8221; show_author=&#8221;off&#8221; show_date=&#8221;off&#8221; show_pagination=&#8221;off&#8221; _builder_version=&#8221;4.25.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_blog][\/et_pb_column][\/et_pb_row][\/et_pb_section]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Con este art\u00edculo ponemos en relieve la importancia que tiene realizar pruebas sobre cualquier nuevo elemento desarrollado en\u00a0ABAP\u00a0y tambi\u00e9n, sobre cualquier modificaci\u00f3n que realicemos en c\u00f3digo existente. El\u00a0testeo unitario\u00a0nos proporciona tanto el\u00a0entorno de pruebas\u00a0como las\u00a0herramientas de an\u00e1lisis necesarias\u00a0para poder verificar el correcto funcionamiento de una unidad de desarrollo. Y es que est\u00e1 claro que a [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":14512,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_et_pb_use_builder":"on","_et_pb_old_content":"Lorem ipsum dolor sit amet consectetur adipiscing elit congue montes, imperdiet taciti erat elementum fermentum sem ante ultrices ridiculus, sagittis sociis egestas quisque ac semper quis odio. Aenean hendrerit ac metus dis nascetur aliquet mollis integer, rutrum vel laoreet posuere proin sagittis luctus est, tempus duis nisl ultrices parturient tempor praesent. Dignissim curabitur nascetur pellentesque augue fringilla pulvinar eros, tempus fames vehicula maecenas cubilia id, rutrum euismod integer ut scelerisque mus.\r\n\r\nVivamus auctor odio aenean rhoncus natoque dictum purus, volutpat pellentesque laoreet ridiculus consequat nisi varius euismod, augue platea convallis curae magnis taciti. Imperdiet nibh curabitur quisque orci consequat aenean pellentesque, cubilia duis senectus felis sed posuere tortor, magnis enim diam a odio sociis. Enim tellus nisl nec molestie augue luctus tempor habitant, nunc dictumst phasellus volutpat sem facilisis taciti, habitasse laoreet at turpis vel fermentum vulputate.","_et_gb_content_width":"","footnotes":""},"categories":[51],"tags":[],"class_list":["post-14510","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-user-experience-integracion"],"_links":{"self":[{"href":"https:\/\/orekait.com\/es\/wp-json\/wp\/v2\/posts\/14510","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/orekait.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/orekait.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/orekait.com\/es\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/orekait.com\/es\/wp-json\/wp\/v2\/comments?post=14510"}],"version-history":[{"count":4,"href":"https:\/\/orekait.com\/es\/wp-json\/wp\/v2\/posts\/14510\/revisions"}],"predecessor-version":[{"id":22274,"href":"https:\/\/orekait.com\/es\/wp-json\/wp\/v2\/posts\/14510\/revisions\/22274"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/orekait.com\/es\/wp-json\/wp\/v2\/media\/14512"}],"wp:attachment":[{"href":"https:\/\/orekait.com\/es\/wp-json\/wp\/v2\/media?parent=14510"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/orekait.com\/es\/wp-json\/wp\/v2\/categories?post=14510"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/orekait.com\/es\/wp-json\/wp\/v2\/tags?post=14510"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}