qc

Software captura de pantalla:
qc
Detalles de software:
Versión: 0.1
Fecha de carga: 14 Apr 15
Promotor: Peter Scott
Licencia: Libre
Popularidad: 23

Rating: 4.0/5 (Total Votes: 2)

qc es una herramienta de prueba que le permite escribir las propiedades que usted espera ser verdad, y dejar que la computadora genere casos de prueba al azar para comprobar que estas propiedades realmente tienen. & Nbsp; Por ejemplo, si usted ha escrito comprimir y descomprimir funciones para un programa de compresión de datos, una propiedad obvio para la prueba es que la compresión y descompresión de una cadena devuelve la cadena original. He aquí cómo usted podría expresar que:
unittest importación
qc importación
TestCompression clase (unittest.TestCase):
& Nbsp; @ qc.property
& Nbsp; def test_compress_decompress (self):
& Nbsp; "" ". Prueba de que la compresión y descompresión vuelve los datos originales" ""
& Nbsp; de datos = qc.str () # Una cadena arbitraria. Los valores se asignaron al azar.
& Nbsp; self.assertEqual (datos, descomprimir (comprimir (datos)), repr (datos))
Eso es una prueba ordinaria con marco unittest integrada de Python (por eso hay tanto repetitivo). Alternativamente, se puede hacer exactamente lo mismo con un marco de pruebas diferentes, como la nariz mínimamente detallado, bastante agradable. El decorador @ qc.property ejecuta la función decorada varias veces, y cada vez que los valores devueltos por las funciones como qc.string () son diferentes. En otras palabras, QuickCheck es compatible con casi todos los marcos de prueba de unidad por ahí; No es particularmente exigente.
Funciones como qc.str (), qc.int (), y así sucesivamente, generan valores arbitrarios de un cierto tipo. En el ejemplo anterior, estamos afirmando que la propiedad es válido para todas las cadenas. Al ejecutar las pruebas, QuickCheck generará cadenas aleatorios para las pruebas.
Se dará cuenta de que te dije: "aleatorio", no "al azar". Esto es intencional. La distribución de los valores está ajustado para incluir valores interesantes, como cadenas vacías o cadenas con caracteres NUL en el medio, o cadenas que contienen texto Inglés. En general, QuickCheck trata de dar una buena mezcla de valores difíciles inteligentes y aleatoriedad. Esto es esencialmente lo que haría, si tuviera que escribir casos de prueba realmente exhaustivas a mano, excepto que usted no tiene que hacerlo. En la práctica, el equipo tiene menos prejuicios sobre lo que constituye datos cuerdos, por lo que a menudo encontrar errores que nunca habría ocurrido a usted para escribir casos de prueba para. No sabe cómo evitar inconscientemente los bichos.
Usted no está limitado a las funciones de valor arbitrarios incorporadas. Usted puede utilizarlos como bloques de construcción para generar su propia. Por ejemplo:
clase Point (objeto):
& Nbsp; def __init __ (self, x, y):
& Nbsp; self.x, self.y = float (x), float (y)
punto def ():
& Nbsp; "" "Obtener un punto arbitrario." ""
& Nbsp; x = qc.int (-20, 20)
& Nbsp; y = qc.int (-34, 50)
& Nbsp; volver Point (x, y)
A continuación, puede usar esto para generar valores de puntos arbitrarios en propiedades. Aquí está una prueba de estilo nariz:
@ Qc.property
test_triangle_inequality def ():
& Nbsp; pt = punto ()
& Nbsp; valer abs (pt.x) + abs (pt.y)> = math.sqrt (pt.x ** 2 + pt.y ** 2), (pt.x, pt.y)
Al ejecutar esto, algo mágico sucede: QuickCheck tratará de generar valores difíciles tanto para la x e y variables de la clase Point, juntos, por lo que verá como puntos (0, 0), (1, 1), ( 0, 1), (385 904, 0), así como las totalmente al azar como (584, -35809648). En otras palabras, en lugar de dibujar valores x e y de una serie de números aleatorios con algunos valores difíciles en el mismo, QuickCheck realmente tratar de generar combinaciones complicadas de coordenadas X e Y.
Funciones para obtener datos arbitrarios
- Int (baja, alta) da enteros, entre los límites opcionales de alta y baja.
- Largo (baja, alta) da largos, entre los límites opcionales de alta y baja.
- Flotador (baja, alta) da carrozas, entre los límites opcionales de alta y baja. No hay Infinities o NaN valores.
& Nbsp; str (longitud = Ninguno, maxlen = None) da cuerdas, de tipo str. La codificación es UTF-8. Si se da la longitud, las cadenas serán exactamente tanto tiempo. Si se da maxlen, la longitud de la cadena será caracteres como máximo maxlen.
- Unicode (longitud = Ninguno, maxlen = None) da cadenas Unicode, de tipo Unicode. Si se da la longitud, las cadenas serán exactamente tanto tiempo. Si se da maxlen, la longitud de la cadena será caracteres como máximo maxlen.
- Nombre () da nombres, en Unicode. Estos van desde lo prosaico, como "John Smith", a los exóticos - nombres que contengan espacios de no separación, o direcciones de correo electrónico, o caracteres Unicode fuera del plano multilingüe básico. Se trata, en todo caso, menos perverso que los nombres que se verá en un suficientemente amplio conjunto de datos de Internet.
- NameUtf8 () es el mismo que el nombre () codificar ('utf8')..
- Fromlist (artículos) devuelve los elementos al azar de una lista. Esto es sobre todo útil para la creación de sus propias funciones de generador de datos arbitrarios.
- Randstr (longitud = Ninguno, maxlen = sys.maxint) da cadenas de bytes aleatorios. Si se da la longitud, las cadenas serán exactamente tanto tiempo. Si se da maxlen, la longitud de cadena será como máximo maxlen bytes.
Las cadenas producidas por str y Unicode son aleatorios, pero un poco de esfuerzo se ha puesto en haciéndolos suficientemente perverso como para revelar errores en una gran cantidad de código de procesamiento de cadenas. La lista de nombres se basa libremente en recuerdos horribles de ver caída código de procesamiento nombre en datos del mundo real, una y otra y otra vez, ya que se hizo cada vez más claro que el mundo está loco, y estamos realmente condenados. (Este sentimiento pasa una vez que llegue la cobertura de pruebas suficientes y las cosas finalmente dejar de estrellarse. Hay esperanza!)
Los datos de nombres y ejemplo de cadena en qc.arbitrary pueden ser interesantes como fuente de datos de casos de prueba más deteministic. No dude en pedir prestado nada de eso. Los interiores son mágicos, pero de las partes internas mágicos, los más interesantes son en qc.arbitrary y qc

Requisitos :.

  • Python

Programas parecidos

lava-fastmodels
lava-fastmodels

14 Apr 15

bug-repo-syncer
bug-repo-syncer

14 Apr 15

SLAMD
SLAMD

3 Jun 15

ContiPerf
ContiPerf

20 Feb 15

Comentarios a la qc

Comentarios que no se encuentran
Añadir comentario
A su vez en las imágenes!