Pregunta

¿Existe tal cosa como generación de prueba unitaria? Si es así ...

... funciona bien?

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

... ¿hay ejemplos de cómo usar una tecnología como esta?

... ¿esto solo es bueno para ciertos tipos de aplicaciones, o podría usarse para reemplazar todas las pruebas unitarias escritas manualmente?

¿Fue útil?

Solución

Eche un vistazo a Pex . Es un proyecto de investigación de Microsoft. Desde el sitio web:

Pex genera Pruebas Unitarias a partir de Pruebas Unitarias Parametrizadas escritas a mano a través de Pruebas Exploratorias Automáticas basadas en la Ejecución Simbólica Dinámica.

Otros consejos

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

Solo realiza pruebas unitarias para que esté seguro de que usted (como desarrollador) está en el buen 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 sería sin sentido y vacía.

Las pruebas unitarias automatizadas también significan que su estrategia es la prueba posterior, lo cual es opuesto al principio de prueba anterior a TDD. Una vez más, TDD no se trata de pruebas.

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

Actualizado para 2017:

Generador de placas de prueba de unidad funciona para el VS 2015-2017 y se mantiene . Parece funcionar como se anuncia.

Creé 'ErrorUnit' y genera pruebas de unidad MSTest o NUnit desde Visual Studio en pausa, o desde sus registros de errores; Variables de clase de simulación, parámetros de método y acceso a datos EF hasta ahora. ( http://ErrorUnit.com )

Ningún generador de pruebas unitarias puede hacer todo; Las pruebas unitarias se dividen clásicamente en tres partes: organizar, actuar y hacer valer; la parte Organizar es la parte más grande de una prueba unitaria y establece todas las condiciones previas a una prueba, burlándose de todos los datos sobre los que se va a realizar la prueba, la parte Act de una prueba unitaria es generalmente una línea y se activa la parte del código que se está probando pasa esos datos y, finalmente, la parte Assert de la prueba toma los resultados de la parte Act y verifica que cumplió con las expectativas (puede haber cero líneas cuando solo se asegura de que no haya error).

Los generadores de pruebas unitarias generalmente solo pueden hacer las partes 'Organizar' y 'Actuar' en la creación de pruebas unitarias; sin embargo, los generadores de pruebas unitarias generalmente no escriben partes de 'Afirmación', ya que solo usted sabe qué es correcto y qué es incorrecto para sus propósitos. Por lo tanto, es necesario completar / ingresar manualmente las Pruebas Unitarias para completarlas.

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 prueba de unidad para lograr esto, esto no cumple los objetivos asociados con una buena cobertura de prueba de unidad.

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 las aserciones.

Es posible preparar un conjunto de pruebas de regresión generando escenarios automatizados (construyendo entradas y llamando al método probado) y creando aserciones basadas en el comportamiento actual de la base de código. Más tarde, una vez que la base de código en pruebas evoluciona, las afirmaciones indican regresiones o se pueden volver a registrar fácilmente.

He usado NStub para anular el examen de mis clases. Funciona bastante bien.

He usado herramientas para generar casos de prueba. Creo que funciona bien para pruebas de alto nivel orientadas al usuario final. Cosas que forman parte de las Pruebas de aceptación del usuario, más que las pruebas de unidad pura.

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

Consulte Herramientas para crear casos de prueba .

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

No sé de un .net equivalente (Agitar hizo que uno anunciara una versión de .net pero AFAIK nunca se materializó).

Sé que este hilo es antiguo, pero por el bien de todos los desarrolladores, hay una buena biblioteca llamada generador de pruebas unitarias:

https://visualstudiogallery.msdn.microsoft.com/45208924- e7b0-45df-8cff-165b505a38d7

Buen desarrollador

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

  • Genere pruebas unitarias para cada función en su clase
  • Calcula valores válidos generados aleatoriamente para las entradas de parámetros y la declaración de devoluciones.
  • Las interfaces simulables devuelven valores válidos generados aleatoriamente
  • Genere pruebas unitarias para cada función en su clase
  • Importa todos los espacios de nombres necesarios a tu clase de prueba

Ayuda a configurar tus pruebas unitarias, especialmente si tienes objetos de entrada con muchos parámetros.

La prueba de la unidad se verá así.

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top