pruebas de unidad para un analizador csv

14

¿Qué pruebas debo usar para probar en unidad un analizador CSV?

Tengo un simple csv parser en C #, y quiero asegurarme de que tengo una buena prueba de unidad de todos los problemas comunes. (y casos poco frecuentes) de borde. ¿Qué pruebas debo usar para identificar problemas potenciales y casos de límites?

    
pregunta Joel Coehoorn 04.04.2011 - 21:39
fuente

5 respuestas

6

Acabo de encontrar enlace :

  

Un montón de diferentes archivos CSV para servir como una prueba de ácido para CSV   analizando bibliotecas. También hay versiones JSON de los CSV para   fines de verificación.

     

El objetivo de este repositorio es capturar casos de prueba para representar el   espectro CSV completo.

    
respondido por el Andreas Gohr 23.01.2014 - 19:27
fuente
16

Aquí hay algunos casos de límites en los que debería haber pensado y tener casos de prueba para.

  1. campo básico. %código%
  2. Campo de cotización básico. %código%
  3. Campo entre comillas con nueva línea incrustada. %código%
  4. campo entre comillas con coma incrustada. %código%
  5. campo entre comillas con comillas incrustadas. %código%
  6. ¿Distingue entre cadenas vacías y nulas? Si lo hace, entonces ,foo, debería ser nulo y ,"foo", debería proporcionar una cadena vacía.
  7. ¿Tratas de detectar tipos de datos y haces lo correcto? CSV se utiliza a menudo para datos numéricos. Agregue las pruebas que considere apropiadas para eso.
  8. Si escribe datos, debe cubrir todos los casos anteriores.
  9. ¿Qué haces con las líneas con diferentes números de campos? (Pruébalo).
  10. ¿Qué haces con las líneas en blanco al final? (Pruébalo).
  11. ¿Cómo es el rendimiento en un archivo grande? (Pruébelo. He visto demasiados analizadores CSV de cosecha propia que utilizan cadenas de manera ineficiente y, como resultado, toman un tiempo cuadrático, lo que hace que las cosas simples se vuelvan dolorosamente lentas).
respondido por el btilly 05.04.2011 - 00:53
fuente
10

No hay una especificación formal para los archivos CSV. Sin embargo, eche un vistazo a RFC 4180 - Formato común y tipos MIME para archivos CSV , (especialmente la Sección 2) que documenta la Formato que parece ser seguido por la mayoría de las implementaciones.

Parece bastante sencillo comenzar a generar algunos casos de prueba de la lista en la sección 2, específicamente:

  
  1. Cada registro se encuentra en una línea separada, delimitada por una línea      ruptura (CRLF). Por ejemplo:

         

    aaa, bbb, ccc CRLF      zzz, yyy, xxx CRLF

  2.   
  3. El último registro del archivo puede tener o no una línea final      descanso. Por ejemplo:

         

    aaa, bbb, ccc CRLF      zzz, yyy, xxx

  4.   
  5. Puede que haya una línea de encabezado opcional que aparezca como primera línea.      del archivo con el mismo formato que las líneas de grabación normales. Esta      encabezado contendrá nombres correspondientes a los campos en el   expediente      y debe contener el mismo número de campos que los registros en      El resto del archivo (la presencia o ausencia de la línea del encabezado).      Debe indicarse mediante el parámetro "encabezado" opcional de este      Tipo MIME). Por ejemplo:

         

    field_name, field_name, field_name CRLF      aaa, bbb, ccc CRLF      zzz, yyy, xxx CRLF

  6.   
  7. Dentro del encabezado y cada registro, puede haber uno o más      Campos, separados por comas. Cada línea debe contener el mismo      Número de campos a lo largo del archivo. Los espacios son considerados parte.      de un campo y no debe ser ignorado. El último campo en el      El registro no debe ir seguido de una coma. Por ejemplo:

         

    aaa, bbb, ccc

  8.   
  9. Cada campo puede o no incluirse entre comillas dobles (sin embargo,      Algunos programas, como Microsoft Excel, no usan doble   citas      en absoluto). Si los campos no están entre comillas dobles, entonces      Las comillas dobles pueden no aparecer dentro de los campos. Por ejemplo:

         

    "aaa", "bbb", "ccc" CRLF      zzz, yyy, xxx

  10.   
  11. Campos que contienen saltos de línea (CRLF), comillas dobles y comas      Debe estar encerrado entre comillas dobles. Por ejemplo:

         

    "aaa", "b CRLF      bb "," ccc "CRLF      zzz, yyy, xxx

  12.   
  13. Si se utilizan comillas dobles para encerrar los campos, entonces una comilla doble      aparecer dentro de un campo debe ser evitado precediéndolo de      Otra doble cita. Por ejemplo:

         

    "aaa", "b" "bb", "ccc"

  14.   
    
respondido por el Paddyslacker 05.04.2011 - 02:03
fuente
8

Los datos del censo de EE. UU. están disponibles en CSV

He estado trabajando en ello por un tiempo. Ciertamente es lo suficientemente extraño como para ser una buena prueba, y hay toneladas y toneladas de ella.

    
respondido por el Satanicpuppy 04.04.2011 - 21:54
fuente
4

Revise este directorio y observe el código en los archivos * .t .:

enlace

(El número de versión -1.32 podría cambiar eventualmente, por lo que el enlace podría quedar "muerto". Aumente el número de versión por prueba y error, o vaya al directorio principal o haga clic aquí

enlace

y haga clic a través de "Examinar" hasta el código fuente de la versión más reciente)

Text :: CSV_XS es un módulo de Perl maduro para analizar archivos csv. Los archivos * .t están escritos en Perl 5, contienen muchos estuches de prueba para autoprueba del módulo, se deben realizar en el momento de la instalación del módulo.

    
respondido por el knb 22.09.2011 - 10:44
fuente

Lea otras preguntas en las etiquetas