Testes de Software - Módulo 3

download Testes de Software - Módulo 3

If you can't read please download the document

description

Módulo 3 da disciplina de testes de software

Transcript of Testes de Software - Módulo 3

2. Testes aleatrios [email protected] 2 3. Como funciona? o Basicamente um teste que utiliza algum tipo de gerador de nmeros (pseudo) aleatrios para gerar os casos de teste [email protected] 3 Gerador de nmeros pseudo aleatrios Gerador de casos de teste aleatrios seed Conhecimento do domnio Software sob teste Orculo 4. Read L nbytes e coloca em buf Retorna a quantidade de bytes lida -1 caso algo d errado 0 end of file Pode retornar um nmero menor que nbytes, nesse caso, significa: tente de novo, mas no significa que deu erro [email protected] 4 5. read_all o Vamos mudar o comportamento padro do read para evitar esse retorno que pode ou no retornar o tamanho todo o A gente vai construir um read_all que usa o read e sempre retorna a quantidade de bytes lida o Ou seja, se o read retornar um nmero menor, a gente tenta de novo at que ele retorne tudo [email protected] 5 6. read_all ssize_t read_all(int file_desc, void *buff, size_t nbytes) { assert(file_desc >=0); assert(buff); assert(nbytes>=0); size_t left = nbytes; while (1) { int res = read(file_desc,buff,nbytes); printf("%dn",res); if (res < 1) { return res; } buff+=res; //desloca o ponteiro de "res" bytes left -= res; assert (left >=0); if (left == 0) { return nbytes; } printf(Precisando ler de novo!); } } [email protected] 6 7. read_all :: comentrios o Inicialmente, considera que a quantidade de bytes que faltam ser lidos o nmero de bytes que voc pediu para ele ler o size_t left = nbytes; o A cada chamada ao read, como ele retorna o nmero de bytes lidos, a gente subtrai da quantidade de bytes que faltam oint res = read(file_desc,buff,nbytes); ... left -= res; [email protected] 7 8. main () :: ideias o Para testar, vamos fazer o seguinte: oUtilizaremos outra funo para ler arquivo, da biblioteca stdio oIremos ler o arquivo atravs dela e depois comparar com a nossa leitura do arquivo oE vamos fazer isso vrias vezes, para tentar fazer com que o read do read_all de fato no retorne a quantidade de bytes total oSe ele toda vez retornar a quantidade total de bytes lidos e se o contedo retornado pelo read_all for igual ao retornado pelo fread do stdio, tudo ok! [email protected] 8 9. main() int main() { srand( time(NULL)); // abre o arquivo e obtem um file descriptor int fd = open("arquivo.txt",O_RDONLY); assert (fd>=0); struct stat buf; // recupera informacoes sobre o arquivo int res = fstat(fd, &buf); assert (res==0); // dentre elas, o tamanho off_t len = buf.st_size; // aloca espao para guardar o conteudo char *definitive = (char *) malloc(len); assert(definitive); // l e armazena o contedo em definitive FILE *file = fopen("arquivo.txt", "rt"); res = fread(definitive, sizeof(char), len / sizeof(char), file); assert (res == len); int i; // cria outra variavel para guardar o conteudo char *test = (char *) malloc (len); for (i=0 ; i