2008-09-26 34 views
27

¿Existe la generación de pruebas unitarias? Si es así ...Generación automática de pruebas de unidades .NET

... ¿funciona bien?

... ¿Cuáles son las soluciones de generación automática que están disponibles para .NET?

... ¿hay ejemplos de uso de una tecnología como esta?

... es esto sólo es bueno para ciertos tipos de aplicaciones, o podría ser usado para reemplazar toda la unidad de pruebas por escrito de forma manual?

Respuesta

25

Tome un vistazo a Pex. Es un proyecto de Microsoft Research. Desde el sitio web:

Pex genera pruebas unitarias a partir de pruebas unitarias parametrizadas manuscritas a través de pruebas exploratorias automáticas basadas en la ejecución dinámica simbólica.

14

Creo que no tiene sentido en la generación de pruebas unitarias, en lo que respecta a TDD.

Solo realizas pruebas unitarias para que estés seguro de que (como desarrollador) estás en el camino con respecto al diseño y las especificaciones. Una vez que comienzas a generar pruebas automáticamente, pierde ese propósito. Claro que probablemente significaría una cobertura de código del 100%, pero esa cobertura no tendría sentido y estaría vacía.

Las pruebas unitarias automáticas también significan que su estrategia es la prueba, que es opuesta a la prueba de TDD antes del principio. De nuevo, TDD no se trata de pruebas.

Dicho esto, creo que MSTest tiene una herramienta de generación automática de pruebas unitarias. Pude usar una con VS2005.

+12

Super antiguo comentario, pero nadie respondió y me pareció que vale la pena decir: Estoy totalmente de acuerdo, pero muchas personas no están en TDD. Queremos un avance rápido en las pruebas de código ya escrito por varias razones. En mi caso, tengo una base de código que no tiene pruebas. Quiero hacerme pruebas antes de agregar más funcionalidad y solo quiero una buena ventaja.Entonces hay razones para hacer esto, pero comenzar un proyecto, desde cero, y terminarlo, y ENTONCES poner en pruebas unitarias es una idea terrible, tienes razón. – vbullinger

+3

@vbullinger esto es especialmente cierto para los desarrolladores que heredan aplicaciones heredadas. Sí, podrían (simplemente) funcionar, pero sería útil trazar una línea debajo del código con un conjunto de pruebas y luego avanzar, las correcciones introducidas se pueden agregar a las pruebas ya generadas. –

+1

"¿Pex reemplaza por completo las Pruebas unitarias escritas a mano? La respuesta corta es No." http://buff.ly/1oy1vyn – lifebalance

1

He usado NStub a apagar prueba para mis clases. Funciona bastante bien.

+0

última actualización en 2007. No se pudo cargar mi ensamblado .net 4. – Alex

+0

Hay un repositorio más nuevo en GitHub @ https://github.com/Jedzia/NStub que puede ser más útil ... o no. –

1

Estoy de acuerdo con Jon. Ciertos tipos de pruebas, como las pruebas de fuzz automatizadas, definitivamente se benefician de la generación automatizada. Si bien puede utilizar las instalaciones de un marco de pruebas unitarias para lograr esto, esto no logra los objetivos asociados con una buena cobertura de pruebas unitarias.

0

He utilizado herramientas para generar casos de prueba. Creo que funciona bien para pruebas orientadas al usuario final de nivel superior. Cosas que son parte de las Pruebas de aceptación del usuario, más que las pruebas de unidades puras.

Utilizo las herramientas de prueba de la unidad para esta prueba de aceptación. Funciona bien.

Ver Tooling to Build Test Cases.

0

Hay un producto comercial llamado AgitarOne (www.agitar.com) que genera automáticamente las clases de prueba JUnit.
No lo he usado, así que no puedo comentar lo útil que es, pero si estuviera haciendo un proyecto Java en este momento lo estaría buscando.

No conozco un equivalente de .net (Agitar hizo una versión .NET pero AFAIK nunca se materializó).

-1

Selenium genera pruebas unitarias desde los comandos del usuario en una página web, bastante ingenioso.

+2

Selenium genera pruebas funcionales en lugar de pruebas unitarias. Las pruebas funcionales acceden a la aplicación como lo haría un usuario. Las pruebas unitarias acceden bajo el capó. – Keith

1

Parasoft .TEST tiene una funcionalidad de generación de pruebas. Utiliza el marco NUnit para la descripción de las pruebas y la evaluación de aserciones.

Es posible preparar un conjunto de pruebas de regresión mediante escenarios de generación automatizados (construir entradas y llamar al método probado) y crear aserciones que se basan en el comportamiento actual de la base de código. Más tarde, después de que la base de código bajo pruebas evolucione, las aserciones indican regresiones o pueden volver a registrarse fácilmente.

0

GennyMcGenFace crea una unidad de prueba para cada Funciona en su clase y genera objetos con palabras/valores aleatorios en cada parámetro.

  • generar pruebas unitarias para cada función en su clase
  • se da cuenta de valores generados aleatoriamente válidos para las entradas Paramater y el estado de las devoluciones.
  • interfaces de mockable devuelven valores generados aleatoriamente válidos
  • Generar pruebas unitarias para cada función de su clase
  • Importa todos los espacios de nombres necesarios en su clase de prueba

que ayuda en la creación de pruebas unitarias, especialmente si tiene objetos de entrada con muchos parámetros.

La prueba de la unidad se verá algo como esto

2

creé 'ErrorUnit' y genera pruebas unitarias NUnit MSTest o de su pausa de Visual Studio, o de sus registros de errores; Variables de clase burlona, ​​Parámetros de método y Acceso a datos EF hasta el momento. (http://ErrorUnit.com)

No Unit Test generator puede hacer de todo; Las Pruebas Unitarias están clasificadas clásicamente en tres partes: Arreglar, Actuar y Afirmar; la parte Arrange es la parte más grande de una prueba unitaria y establece todas las condiciones previas para una prueba, burlándose de todos los datos sobre los que se va a actuar en la prueba, la parte Act de una Prueba Unitaria suele ser una línea y activa la parte del código que se está probando que pasa en esos datos, y finalmente la parte de Assert de la prueba toma los resultados de la porción de Act y verifica que cumplió con las expectativas (pueden ser cero líneas cuando se asegura de que no haya ningún error).

Los generadores de prueba unitaria generalmente solo pueden hacer las porciones 'Organizar' y 'Actuar' en la creación de la prueba unitaria; sin embargo, los generadores de pruebas unitarias en general no escriben las partes 'Asertar' ya que solo usted sabe qué es correcto y qué es incorrecto para sus propósitos. Por lo tanto, es necesaria cierta entrada/ampliación manual de las Pruebas Unitarias para que esté completo.

+0

Si bien este enlace puede responder la pregunta, es mejor incluir las partes esenciales de la respuesta aquí y proporcionar el enlace de referencia. Las respuestas de solo enlace pueden dejar de ser válidas si la página vinculada cambia. - [De la crítica] (/ reseña/mensajes de baja calidad/14272134) – Danh

+0

Oh y Pex, ahora es Intellitest [enlace] (https://msdn.microsoft.com/en-us/library/dn823749.aspx) – johng

Cuestiones relacionadas