Pruebas automatizadas de Mozilla

  • Enlace amigable (slug) de la revisión: Pruebas_automatizadas_de_Mozilla
  • Título de la revisión: Pruebas automatizadas de Mozilla
  • Id de la revisión: 123927
  • Creada:
  • Creador: RickieesES
  • ¿Es la revisión actual? No
  • Comentario Añadida categoría NecesitaRevisiónTécnica

Contenido de la revisión

Una vez acabada, esta página proporcionará un compendio de opciones para pruebas automatizadas disponibles para los desarrolladores de Mozilla con enlaces a más documentación.

La mayoría de las pruebas automatizadas deberían ejecutarse sobre make check. Cómo añadir una prueba en el momento de compilar describe los pasos requeridos para añadir un programa de pruebas arbitrario al conjunto de tests. Dependiendo de lo que se necesite probar, puede usarse uno de los siguientes frameworks disponibles:

xpcshell: make check

Con las ayudas para pruebas de xpcshell escribes pruebas unitarias en JavaScript. El código se ejecutará más tarde en xpcshell, que es una consola JS con capacidad para XPConnect. Esto significa que tu código puede acceder a componentes XPCOM, pero no puede (fácilmente) abrir ventanas, probar el chrome de la aplicación, trabajar con el analizador HTML o usar DOM.

Hay disponible un servidor HTTP sencillo para su uso desde los tests xpcshell.

Mochitest

Mochitest es un framework basado en Mochikit para escribir pruebas. Las pruebas se ejecutan en el navegador, desde un servidor web local (proporcionado por Mochitest). Los scripts de inicio que lo acompañan conceden diversos privilegios a localhost (crea un nuevo perfil en cada ejecución). Como resultado, las pruebas unitarias son libres de solicitar privilegios UniversalXPConnect (acceso a componentes XPCOM), abrir ventanas emergentes, etc. Mochitest es una buena solución si realmente necesitas un navegador completo para probar un problema. Por ejemplo, un test reciente verifica que el envío de formularios funciona en iframes fijados a display:none. Hay una FAQ de Mochitest.

Reftest

{{template.Source("layout/tools/reftest/README.txt", "Tests visuales del motor de dibujado (reftest)")}}. Cada test consiste en dos documentos (p.e. HTML) - uno de ellos contiene un conjunto de etiquetas de prueba y el otro un conjunto de etiquetas de referencia. El sistema trabaja comparando el renderizado de los dos documentos.

reftest se compila e instala ahora automáticamente cuando ENABLE_TESTS está activado (valor predeterminado) y hay pruebas de ejemplo en {{template.Source("layout/reftests")}}.

Para poder ejecutar esos tests de ejemplo, necesitas referencias el directorio reftests desde el makefile padre ({{template.Source("layout/Makefile.in")}}) añadiendo DIRS += reftests en él encima de la línea rules.mk. Ahora (tras recompilar o simplemente ejecutar make en layout) podrás usar make lcheck en layout/tools/reftests para ejecutar el juego de pruebas.

[No, esto no parece que funcione. --Bzbarsky 20:39, 25 April 2007 (PDT)]

Los resultados se envían a la consola del sistema y no se procesan de ninguna manera por el momento.

  • Puede que necesites editar el archivo Makefile.in en reftests, ya que es una solución temporal a un fallo existente ({{template.Bug(366579)}}).
    • En particular, puede que quieras usar un perfil separado para ejecutar las pruebas (creando un perfil llamado "reftests" y añadiendo -P reftests a la línea que invoca la aplicación).
    • Usuarios de Windows: limitarse a ejecutar make lcheck puede no ser suficiente ya que se pasaría /cygdrive/.. a la aplicación. Puede que, por el momento, queráis escribir directamente la URL file:/// en el manifiesto.
  • Para más información, acude a {{template.Source("layout/tools/reftest/README.txt", "")}} y el tutorial sobre cómo crear un test basado en reftest.

jssh

No usado en la actualidad

jssh ejecuta código JavaScript como chrome.

  • Se ha oído a davel decir que es lento.
  • Requiere que se active una extensión en tiempo de compilación (mediante --enable-extensions=).
  • Sólo funciona en trunk. Necesita que ciertos cambios posteriores a la ramificación se apliquen a 1.8.
  • {{template.Bug(343199)}} tiene los parches para compilar jssh como una extensión real.
  • Funciona muy bien desde Ruby en win32; revisa firewatir.

Otra documentación de referencia

Por favor, ignora la página {{mediawiki.interwiki('wikimo', 'SoftwareTesting:Scratchpad', 'wikimo:SoftwareTesting:Scratchpad')}}, y mira únicamente {{mediawiki.interwiki('wikimo', 'SoftwareTesting', 'wikimo:SoftwareTesting')}}. La pizarra (Scratchpad) es para trabajos en curso, y casi con toda seguridad estará obsoleta o tendrá documentación errónea.

También está {{mediawiki.interwiki('wikimo', 'SoftwareTesting', 'wikimo:SoftwareTesting')}} y Consejos y trucos para pruebas automatizadas si estás buscando algo que leer.

Estos otros esfuerzos están en curso:

  • Puedes escribir programas de prueba independientes en C/C++. Esta opción puede usarse para probar funcionalidades no expuestas a través de XPCOM.
    • {{template.Bug(343673)}} registra el trabajo de una persona, y parece que ha habido ciertos progresos.
    • {{template.Bug(346703)}} contiene un ejemplo de cómo puede hacerse esto.
  • JSUnit puede usarse para escribir pruebas que se ejecutan como contenido en el navegador. Es especialmente útil para tests DOM y del analizador sintáctico, pero no puede hacer nada que requiera privilegios chrome.
    • JsUnit probablemente no pueda usarse como un objetivo de compilación para make check de momento, ya que necesita una instancia completa de un navegador.
    • {{mediawiki.interwiki('wikimo', 'SoftwareTesting#Ideas to Collect', 'wikimo:SoftwareTesting#Ideas_to_Collect')}} lista algunos ejemplos de jsunit.
    • Remítete a la documentación en {{mediawiki.interwiki('wikimo', 'SoftwareTesting:Tools:jsUnit', 'wikimo:SoftwareTesting:Tools:jsUnit')}} para más información.
    • Algunos tests de XForms usan JsUnit, a modo de ejemplo.

Utilidades y frameworks existentes para pruebas

(originalmente de {{mediawiki.interwiki('wikimo', 'SoftwareTesting:Catalog_of_Automated_Tests', 'wikimo:SoftwareTesting:Catalog_of_Automated_Tests')}})

{{ wiki.languages( { "en": "en/Mozilla_automated_testing" } ) }}

Fuente de la revisión

<p>
</p><p>Una vez acabada, esta página proporcionará un compendio de opciones para pruebas automatizadas disponibles para los desarrolladores de Mozilla con enlaces a más documentación.
</p><p>La mayoría de las pruebas automatizadas deberían ejecutarse sobre <code>make check</code>. <a href="es/C%c3%b3mo_a%c3%b1adir_una_prueba_en_el_momento_de_compilar">Cómo añadir una prueba en el momento de compilar</a> describe los pasos requeridos para añadir un programa de pruebas arbitrario al conjunto de tests. Dependiendo de lo que se necesite probar, puede usarse uno de los siguientes <i>frameworks</i> disponibles:
</p>
<h3 name="xpcshell:_make_check"> xpcshell: make check </h3>
<p>Con <a href="es/Escribir_pruebas_unitarias_basadas_en_xpcshell">las ayudas para pruebas de xpcshell</a> escribes pruebas unitarias en JavaScript. El código se ejecutará más tarde en <a href="es/Xpcshell">xpcshell</a>, que es una consola JS con capacidad para <a href="es/XPConnect">XPConnect</a>. Esto significa que tu código puede acceder a componentes XPCOM, pero no puede (fácilmente) abrir ventanas, probar el chrome de la aplicación, trabajar con el analizador HTML o usar DOM.
</p><p>Hay disponible un <a href="es/Servidor_HTTP_para_pruebas_unitarias">servidor HTTP</a> sencillo para su uso desde los tests xpcshell.
</p>
<h3 name="Mochitest"> Mochitest </h3>
<p><a href="es/Mochitest">Mochitest</a> es un <i>framework</i> basado en <a class="external" href="http://mochikit.com/">Mochikit</a> para escribir pruebas. Las pruebas se ejecutan en el navegador, desde un servidor web local (proporcionado por Mochitest). Los <i>scripts</i> de inicio que lo acompañan conceden diversos privilegios a localhost (crea un nuevo perfil en cada ejecución). Como resultado, las pruebas unitarias son libres de solicitar privilegios UniversalXPConnect (acceso a componentes XPCOM), abrir ventanas emergentes, etc. Mochitest es una buena solución si realmente necesitas un navegador completo para probar un problema. Por ejemplo, un test reciente verifica que el envío de formularios funciona en iframes fijados a <code>display:none</code>. Hay una <a href="es/Mochitest#FAQ">FAQ de Mochitest</a>.
</p>
<h3 name="Reftest"> Reftest </h3>
<p>{{template.Source("layout/tools/reftest/README.txt", "Tests visuales del motor de dibujado (reftest)")}}. Cada test consiste en dos documentos (p.e. HTML) - uno de ellos contiene un conjunto de etiquetas de prueba y el otro un conjunto de etiquetas de referencia. El sistema trabaja comparando el renderizado de los dos documentos.
</p><p>reftest se compila e instala ahora automáticamente cuando <code>ENABLE_TESTS</code> está activado (valor predeterminado) y hay pruebas de ejemplo en {{template.Source("layout/reftests")}}.
</p><p>Para poder ejecutar esos tests de ejemplo, necesitas referencias el directorio <code>reftests</code> desde el makefile padre ({{template.Source("layout/Makefile.in")}}) añadiendo <code>DIRS += reftests</code> en él encima de la línea rules.mk. Ahora (tras recompilar o simplemente ejecutar <code>make</code> en <code>layout</code>) podrás usar <code>make lcheck</code> en <code>layout/tools/reftests</code> para ejecutar el juego de pruebas.
</p><p>[No, esto no parece que funcione.  --<a href="User:Bzbarsky">Bzbarsky</a> 20:39, 25 April 2007 (PDT)]
</p><p>Los resultados se envían a la consola del sistema y no se procesan de ninguna manera por el momento.
</p>
<ul><li> Puede que necesites editar el archivo <code>Makefile.in</code> en <code>reftests</code>, ya que es una solución temporal a un fallo existente ({{template.Bug(366579)}}).
<ul><li> En particular, puede que quieras usar un perfil separado para ejecutar las pruebas (creando un perfil llamado "reftests" y añadiendo <code>-P reftests</code> a la línea que invoca la aplicación).
</li><li> Usuarios de Windows: limitarse a ejecutar <code>make lcheck</code> puede no ser suficiente ya que se pasaría <code>/cygdrive/..</code> a la aplicación. Puede que, por el momento, queráis escribir directamente la URL file:/// en el manifiesto.
</li></ul>
</li><li> Para más información, acude a {{template.Source("layout/tools/reftest/README.txt", "")}} y <a href="es/Crear_pruebas_unitarias_basadas_en_reftest">el tutorial sobre cómo crear un test basado en reftest</a>.
</li></ul>
<h3 name="jssh"> jssh </h3>
<p><b>No usado en la actualidad</b>
</p><p><a class="external" href="http://croczilla.com/jssh">jssh</a> ejecuta código JavaScript como chrome.
</p>
<ul><li> Se ha oído a davel decir que es lento.
</li><li> Requiere que se active una extensión en tiempo de compilación (mediante <code>--enable-extensions=</code>).
</li><li> Sólo funciona en trunk. Necesita que ciertos cambios posteriores a la ramificación se apliquen a 1.8.
</li><li> {{template.Bug(343199)}} tiene los parches para compilar jssh como una extensión real.
</li><li> Funciona muy bien desde Ruby en win32; revisa <a class="external" href="http://code.google.com/p/firewatir/">firewatir</a>.
</li></ul>
<h3 name="Otra_documentaci.C3.B3n_de_referencia"> Otra documentación de referencia </h3>
<p>Por favor, ignora la página {{mediawiki.interwiki('wikimo', 'SoftwareTesting:Scratchpad', 'wikimo:SoftwareTesting:Scratchpad')}}, y mira únicamente {{mediawiki.interwiki('wikimo', 'SoftwareTesting', 'wikimo:SoftwareTesting')}}. La pizarra (<i>Scratchpad</i>) es para trabajos en curso, y casi con toda seguridad estará obsoleta o tendrá documentación errónea.
</p><p>También está {{mediawiki.interwiki('wikimo', 'SoftwareTesting', 'wikimo:SoftwareTesting')}} y <a href="es/Consejos_y_trucos_para_pruebas_automatizadas">Consejos y trucos para pruebas automatizadas</a> si estás buscando algo que leer.
</p><p>Estos otros esfuerzos están en curso:
</p>
<ul><li> Puedes escribir programas de prueba independientes en C/C++. Esta opción puede usarse para probar funcionalidades no expuestas a través de XPCOM. 
<ul><li> <i>{{template.Bug(343673)}} registra el trabajo de una persona, y parece que ha habido ciertos progresos</i>.
</li><li> <i>{{template.Bug(346703)}} contiene un ejemplo de cómo puede hacerse esto</i>.
</li></ul>
</li><li> <a class="external" href="http://www.jsunit.net/">JSUnit</a> puede usarse para escribir pruebas que se ejecutan como contenido en el navegador. Es especialmente útil para tests DOM y del analizador sintáctico, pero no puede hacer nada que requiera privilegios chrome.
<ul><li> JsUnit probablemente no pueda usarse como un objetivo de compilación para make check de momento, ya que necesita una instancia completa de un navegador.
</li><li> {{mediawiki.interwiki('wikimo', 'SoftwareTesting#Ideas to Collect', 'wikimo:SoftwareTesting#Ideas_to_Collect')}} lista algunos ejemplos de jsunit.
</li><li> Remítete a la documentación en {{mediawiki.interwiki('wikimo', 'SoftwareTesting:Tools:jsUnit', 'wikimo:SoftwareTesting:Tools:jsUnit')}} para más información.
</li><li> Algunos <a class="external" href="http://beaufour.dk/xftst/">tests de XForms</a> usan JsUnit, a modo de ejemplo.
</li></ul>
</li></ul>
<h3 name="Utilidades_y_frameworks_existentes_para_pruebas"> Utilidades y <i>frameworks</i> existentes para pruebas </h3>
<p>(originalmente de {{mediawiki.interwiki('wikimo', 'SoftwareTesting:Catalog_of_Automated_Tests', 'wikimo:SoftwareTesting:Catalog_of_Automated_Tests')}})
</p>
<ul><li> <a class="external" href="http://wiki.mozilla.org/Performance:Tinderbox_Tests">Pruebas de rendimiento de Tinderbox</a>
</li><li> <a class="external" href="http://lxr.mozilla.org/mozilla/source/browser/components/places/tests/">Scripts de pruebas de Places</a>
</li><li> <a class="external" href="http://lxr.mozilla.org/mozilla/source/netwerk/test/unit/">Pruebas unitarias de Netwerk</a>
</li><li> <a class="external" href="http://lxr.mozilla.org/mozilla/source/js/tests/">Pruebas de javascript</a>
</li><li> <a class="external" href="http://lxr.mozilla.org/mozilla/source/security/nss/tests/">Pruebas de nss</a>
</li><li> <a class="external" href="http://landfill.mozilla.org/mxr-test/mozilla/source/nsprpub/pr/tests/">Pruebas de nspr</a>
</li><li> <a class="external" href="http://www.mozilla.org/newlayout/doc/regression_tests.html">Pruebas de posicionamiento (<i>layout</i>) - diferencias entre la salida de una versión de prueba y otra de referencia considerada correcta (<i>golden master</i>)</a>
</li><li> <a class="external" href="https://bugzilla.mozilla.org/show_bug.cgi?id=301260">copia en bz de los tests de netwerk para xmlserializer</a>
</li><li> <a class="external" href="http://www.w3.org/DOM/Test/">Los tests de W3C DOM</a> usan <a class="external" href="http://www.edwardh.com/jsunit/">jsunit</a>
</li><li> <a class="external" href="http://wiki.mozilla.org/XSLT_Tests">Tests de XSLT</a>
</li><li> http://hixie.ch/tests/MANIFEST todos los tests de hixie
</li><li> http://hixie.ch/tests/MANIFEST-visual subconjunto de tests de hixie que no es interactivo
</li><li> <a class="external" href="http://www.allpeers.com/blog/2005/09/28/foxunit-unit-test-framework-for-firefox/">FoxUnit</a> - utilidad al estilo jUnit para firefox, por la gente de AllPeers
</li></ul>
{{ wiki.languages( { "en": "en/Mozilla_automated_testing" } ) }}
Revertir a esta revisión