A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Jpf@fe.up.pt www.fe.up.pt/~jpf TQS - Teste e Qualidade de Software (Software Testing and Quality) Caso de estudo: Problema da procura duma string num.

Apresentações semelhantes


Apresentação em tema: "Jpf@fe.up.pt www.fe.up.pt/~jpf TQS - Teste e Qualidade de Software (Software Testing and Quality) Caso de estudo: Problema da procura duma string num."— Transcrição da apresentação:

1 jpf@fe.up.pt www.fe.up.pt/~jpf
TQS - Teste e Qualidade de Software (Software Testing and Quality) Caso de estudo: Problema da procura duma string num texto João Pascoal Faria

2 Versão 1 – Notepad (2004/05)

3 Enunciado Conceber casos de teste para testar a funcionalidade de procura de uma string no texto no Notepad

4 Especificação

5 Inputs e outputs Inputs: Acção: Outputs :
String a procurar (Find what) Parâmetros de configuração da procura: Direcção da procura (Direction Up / Down) Distinguir ou não maiúsculas de minúsculas (Match case) Texto onde procurar (texto na janela principal) Posição corrente do cursor (ponto de inserção) no texto (se estiver texto seleccionado, considerar que o cursor está no fim do texto seleccionado) Acção: Carregar em Find Next Outputs : Mensagem a dizer que não consegue encontrar a string, ou string pretendida seleccionada no texto

6 Casos de teste – Funcionalidades básicas
Input Output esperado Descrição texto e posição do cursor string a procurar direcção match case 1 Mário Rui Silva Rui down Não caso simples em que encontra 2 Raul Cannot find "Raul" caso simples em que não encontra 3 Cannot find "Rui" verificar que só procura na direcção indicada 4 up verificar que também funciona na direcção ascendente 5 RUI verificar que consegue encontrar apesar de diferenças de minúsculas/maiúsculas 6 Sim Cannot find "RUI" verificar que consegue distinguir minúsculas de maiúsculas

7 Casos de teste – Casos limite
Input Output esperado Descrição texto e posição do cursor string a procurar direcção match case 7 Mário Rui Silva Mário down Não Procurar no início 8 Silva up Procurar no fim 9 Cannot find “Mário" Texto vazio 10 Rui Silva Texto igual a string a procurar

8 Casos de teste – Casos especiais
Cursor no meio da string a procurar – o que acontece? Selecciona só se for a procurar em direcção ascendente Existe texto correntemente seleccionado – como se comporta? Notar que cursor pode estar no início ou no fim da selecção A procurar em direcção descendente – é sempre como se o cursor estivesse no fim da selecção A procurar em direcção ascendente – é sempre como se o cursor estivesse no início da selecção Quando procura e encontra, cursor fica sempre no fim da selecção Ocorrências sobrepostas ou justapostas da string a procurar – o que acontece? Em sentido descendente, só selecciona ocorrências justapostas Em sentido ascendente, selecciona sobrepostas

9 * Formalização das condições de teste em VDM++ (em preparação)
class Notepad types Direction = <Up> | <Down>; instance variables text: seq of char; cursor_position: nat; -- end_of_selection begin_of_selection: nat; inv cursor_position <= len text; inv begin_of_selection <= len text; operations FindNext(find_what: seq1 of char, direction: Direction, match_case: bool) found : bool == is not yet specified;

10 * Formalização das condições de teste (em preparação)
Condição de teste 1 begin_of_selection = cursor_position and direction = <Down> and match_case = false and exists_substr(text, cursor_position+1, len text, find_what, false) 2 begin_of_selection = cursor_position and direction = <Down> and match_case = false and not exists_substr(text, 1, len text, find_what, false) 3 begin_of_selection = cursor_position and direction = <Down> and match_case = false and exists_substr(text, 1, cursor_position, find_what, false) and not exists_substr(text, cursor_position+1, len text, find_what, false) 4 begin_of_selection = cursor_position and direction = <Up> and match_case = false and exists_substr(text, 1, cursor_position, find_what, false) 5 begin_of_selection = cursor_position and direction = <Down> and match_case = false and not exists_substr(text, 1, cursor_position, find_what, true) and exists_substr(text, cursor_position+1, len text, find_what, false) 6 begin_of_selection = cursor_position and direction = <Down> and match_case = true and not exists_substr(text, 1, cursor_position, find_what, true) and exists_substr(text, cursor_position+1, len text, find_what, false) (…)

11 Versão 2 – Com opção “whole word” (2005/06)

12 Enunciado Um editor de texto normalmente tem, no seu estado corrente, o conteúdo do texto em si, a posição corrente do cursor no texto, e a indicação do início e fim do texto eventualmente seleccionado. A funcionalidade de localizar uma string no texto (find) aceita normalmente como parâmetros: a string a procurar a direcção da procura (up/down) indicação se só deve fazer match com distinção de maiúsculas/minúsculas (matchCase) indicação se só deve match com palavras inteiras (wholeWorld). Escrever e testar esta funcionalidade numa classe TestEditor A classe deve ter campos para representar o estado do editor (texto, posição do cursor, coordenadas do texto seleccionado), métodos para alterar e consultar o estado do editor (set/get) e um método (find) para localizar uma string no texto, como explicado acima. Este método deve devolver um booleano indicando sucesso ou insucesso.

13 Classes de equivalência para cobertura de domínios e casos de teste respectivos
Nos outputs Encontra (3, 5) / não encontra (4) Encontra no início (5) / meio (3) / fim (falta!) Nos inputs String vazia (entrada inválida) (1) / não (3, 4, 5) String maiúsculas (5) / minúsculas (4) / mistura (3) String com parte de palavra (4), uma palavra completa (3), várias palavras (5) Direcção up (4)/down (3, 5) MatchCase true(4, 5)/false (3) WholeWord true(4, 5)/false (3) Texto vazio (entrada inválida) (2) / não (3, 4, 5) Texto maiúsculas (5) / minúsculas (4) / misto (3) Texto uma palavra (4) / várias palavras (3, 5) Cursor início (5) / meio (3) / fim (4) Texto seleccionado (4) / não (3, 5) Outros casos de teste adicionados (6 a 11) para cobrir adequadamente as funcionalidades

14 Casos de teste (TestFind.xls) Inputs Outputs esperados Estado Inicial
Parâmetros de Entrada Estado Final Parâmetros de Saída Descrição / Condição Texto, cursor, selecção String Direction Match Case Whole Word Encontrou Entradas não válidas 1 String vazia A| (vazia) Down F ERRO 2 Texto vazio (vazio) A Entradas válidas 3 Caso simples: encontra palavra inteira, opções por defeito, sem texto seleccionado, cursor no meio O| processo de Bolonha não anda nem desanda Bolonha O processo de Bolonha| não anda nem desanda T 4 O mais diferente possível do anterior bolonha| nh Up 5 Encontra várias palavras no início, maiúsculas |EM BOLONHA NÃO HÁ PIZA EM BOLONHA EM BOLONHA| NÃO HÁ PIZA 6 Não encontra para traz, só existe para a frente 7 Encontra para traz, cursor no limite para complicar 8 Não encontra para a frente por cursor a meio da palavra O processo de B|olonha não anda nem desanda 9 Encontra apesar de diferenças minúsculas/maiúsculas bolonha 10 Não encontra devido a diferença de minúsculas/maiúsculas 11 Não encontra por ser parte de palavra Bol


Carregar ppt "Jpf@fe.up.pt www.fe.up.pt/~jpf TQS - Teste e Qualidade de Software (Software Testing and Quality) Caso de estudo: Problema da procura duma string num."

Apresentações semelhantes


Anúncios Google