testes unitários para um analisador csv

14

Quais testes devo usar para testar um analisador csv?

Eu tenho um simples analisador de csv em C #, e quero ter certeza de que tenho uma boa cobertura de teste de unidade de todos os recursos comuns (e incomum) casos de borda. Quais testes devo usar para identificar possíveis problemas e casos de limite?

    
por Joel Coehoorn 04.04.2011 / 21:39
fonte

5 respostas

6

Acabei de encontrar o link :

A bunch of different CSV files to serve as an acid test for CSV parsing libraries. There are also JSON versions of the CSVs for verification purposes.

The goal of this repository is to capture test cases to represent the entire CSV spectrum.

    
por 23.01.2014 / 19:27
fonte
16

Aqui estão alguns casos de limites pelos quais você deveria ter pensado e ter casos de teste.

  1. Campo básico. %código%
  2. Campo cotado básico. %código%
  3. Campo indicado com nova linha incorporada. %código%
  4. Campo entre aspas e vírgula incorporada. %código%
  5. Campo com citações incorporadas. %código%
  6. Distingue entre cadeias vazias e nulos? Se você fizer isso, ,foo, deve ser um nulo e ,"foo", deve fornecer uma string vazia.
  7. Você tenta detectar tipos de dados e fazer a coisa certa? O CSV é frequentemente usado para dados numéricos. Adicione os testes que achar apropriados para isso.
  8. Se você escrever dados, deve cobrir todos os casos acima.
  9. O que você faz com linhas com diferentes números de campos? (Teste).
  10. O que você faz com o rastreamento de linhas em branco? (Teste).
  11. Como é o desempenho em um arquivo grande? (Teste isso. Eu vi muitos analisadores CSV caseiros que usam strings ineficientemente e como resultado, levam tempo quadrático, fazendo com que coisas simples se tornem dolorosamente lentas.)
por 05.04.2011 / 00:53
fonte
10

Não há especificação formal para arquivos CSV. No entanto, dê uma olhada em RFC 4180 - Formatos comuns e tipos MIME para arquivos CSV , (em particular a Seção 2) que documenta a formato que parece ser seguido pela maioria das implementações.

Parece bastante simples começar a gerar alguns casos de teste na lista da seção 2, especificamente:

  1. Each record is located on a separate line, delimited by a line break (CRLF). For example:

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

  2. The last record in the file may or may not have an ending line break. For example:

    aaa,bbb,ccc CRLF zzz,yyy,xxx

  3. There maybe an optional header line appearing as the first line of the file with the same format as normal record lines. This header will contain names corresponding to the fields in the file and should contain the same number of fields as the records in the rest of the file (the presence or absence of the header line should be indicated via the optional "header" parameter of this MIME type). For example:

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

  4. Within the header and each record, there may be one or more fields, separated by commas. Each line should contain the same number of fields throughout the file. Spaces are considered part of a field and should not be ignored. The last field in the record must not be followed by a comma. For example:

    aaa,bbb,ccc

  5. Each field may or may not be enclosed in double quotes (however some programs, such as Microsoft Excel, do not use double quotes at all). If fields are not enclosed with double quotes, then double quotes may not appear inside the fields. For example:

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

  6. Fields containing line breaks (CRLF), double quotes, and commas should be enclosed in double-quotes. For example:

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

  7. If double-quotes are used to enclose fields, then a double-quote appearing inside a field must be escaped by preceding it with another double quote. For example:

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

    
por 05.04.2011 / 02:03
fonte
8

Os dados do censo dos EUA estão disponíveis em CSV

Eu tenho trabalhado nisso por um tempo. É certamente estranho o suficiente para ser um bom teste, e há toneladas e toneladas disso.

    
por 04.04.2011 / 21:54
fonte
4

Verifique este diretório e veja o código nos arquivos * .t:

link

(O número da versão -1.32 pode mudar eventualmente para que o link fique "morto". Incremente o número da versão você mesmo por tentativa e erro, ou vá para o diretório pai ou clique aqui

link

e clique através de "Browse" para o código-fonte da versão mais recente)

Text :: CSV_XS é um módulo perl maduro para analisar arquivos csv. Os arquivos * .t são escritos em Perl 5, eles contêm muitos testcassos para auto-teste do módulo, eles devem ser executados no momento da instalação do módulo.

    
por 22.09.2011 / 10:44
fonte