├── .gitignore
├── LICENSE
├── README.md
├── SOFTWARE_REQUIREMENTS.txt
├── img
└── scared-bug-clipart-1.jpg
├── provas
├── 2014-1-EE.docx
├── 2014-1-final.docx
├── 2015-1-EE-testes.txt
├── 2015-1-final.txt
├── 2016-2-EE.txt
├── 2016-2-FINAL.txt
├── 2017-2-1EE.txt
├── 2017-2-FINAL.txt
├── 2018-2-EE.txt
├── 2019-2-EE.txt
├── 2019-2-FINAL.txt
├── IF1009-2018-2-FINAL.txt
├── IF1009-2018-2-GABARITO.txt
└── If1009-20172-1EE.docx
└── testing-minicourse.pptx
/.gitignore:
--------------------------------------------------------------------------------
1 | */build
2 | build
3 | *~
4 | .gradle
5 | .project
6 | .classpath
7 | .settings
8 | bin
9 | .vscode
10 | tutorials.txt
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License
2 |
3 | Copyright (c) 2015 Marcelo d'Amorim
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining
6 | a copy of this software and associated documentation files (the
7 | "Software"), to deal in the Software without restriction, including
8 | without limitation the rights to use, copy, modify, merge, publish,
9 | distribute, sublicense, and/or sell copies of the Software, and to
10 | permit persons to whom the Software is furnished to do so, subject to
11 | the following conditions:
12 |
13 | The above copyright notice and this permission notice shall be
14 | included in all copies or substantial portions of the Software.
15 |
16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Teste de Software
[Centro de Informática](http://www.cin.ufpe.br), [UFPE](http://www.ufpe.br)
2 | ### Professor: [Marcelo d'Amorim](http://www.cin.ufpe.br/~damorim/)
3 |
4 |
5 | 
6 |
7 |
8 |
9 | ### Horário e Local das Aulas
10 | * Terças (8-10h) e Quintas (10-12h)
11 |
12 | ### Recursos
13 | - Nosso Livro Online: [The Practical Testing Book](https://damorimrg.github.io/practical_testing_book/intro.html)
14 | - [Google Classroom](https://classroom.google.com/u/0/c/MTQ4MjEyNzA1OTY2), Código dbfyjpe
15 | - [Demos](https://github.com/damorimRG/practical_testing_book/tree/master/demos)
16 | - [Playlist Youtube](https://www.youtube.com/playlist?list=PLFBNFAddO-xtGVJjiZACr-H3dpPn8zam7)
17 | - [Slides](https://github.com/damorimRG/testing-cin/blob/master/testing-minicourse.pptx)
18 | - [Provas](https://github.com/damorimRG/testing-cin/tree/master/provas)
19 |
20 |
21 | ### Objetivos
22 |
23 | O objetivo da disciplina é apresentar conceitos básicos sobre Testes de Software. A disciplina tem um enfoque prático--o instrutor apresentará os conceitos usando ferramentas populares na indústria.
24 |
25 |
31 |
32 | ### Ementa
33 |
34 | A ementa da parte téorica inclui os seguintes tópicos:
35 |
36 | * conceitos básicos sobre teste e depuração de software
37 | * como escrever um bug report
38 | * o caso de teste
39 | * entrada, asserção, test harness (setup, teardown)
40 | * demosntração com JUnit
41 | * controle de versão e testes
42 | * demonstração git bisect
43 | * demonstração integração contínua com Travis
44 | * critérios de adequação
45 | * estrutural, lógico, baseado em fluxo de dados, e baseado em erros
46 | * teste funcional
47 | * particionamento de domínio
48 | * análise de fronteira
49 | * seleção de amostras (teste combinatorial)
50 |
51 |
52 | ### Bibliografia
53 | - [Generating Software Tests: Breaking Software for Fun and Profit](https://www.fuzzingbook.org/). Andreas Zeller, Rahul Gopinath, Marcel Böhme, Gordon Fraser, and Christian Holler (online)
54 | - Software Testing and Analysis. Mauro Pezze and Michal Young, Wiley, 2008
55 | - Why Programs Fail?. Andreas Zeller, Morgan Kaufmann 2009 (2nd edition)
56 | - Software Testing. Glenford Myers, Wiley, 2004 (2nd edition)
57 |
58 |
59 |
81 |
82 |
86 |
--------------------------------------------------------------------------------
/SOFTWARE_REQUIREMENTS.txt:
--------------------------------------------------------------------------------
1 | - Java 1.8 or higher
2 | - Python 3
3 | - ruby 2.5 or higher
4 | - gcc or llvm # for fuzzing
5 | ## hard dependencies for ruby
6 | - sudo gem install bundler ## bundler
7 | - sudo apt-get install ruby-dev ## provides header file to build some gems
8 | - sudo apt-get install libxslt-dev libxml2-dev # required by nokogiri
9 | - sudo gem install nokogiri -v '1.10.7' --source 'https://rubygems.org/'
10 |
--------------------------------------------------------------------------------
/img/scared-bug-clipart-1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/STAR-RG/testing-cin/dc0b678b842fb7c5a681081fdbeeae9acaaa0d0d/img/scared-bug-clipart-1.jpg
--------------------------------------------------------------------------------
/provas/2014-1-EE.docx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/STAR-RG/testing-cin/dc0b678b842fb7c5a681081fdbeeae9acaaa0d0d/provas/2014-1-EE.docx
--------------------------------------------------------------------------------
/provas/2014-1-final.docx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/STAR-RG/testing-cin/dc0b678b842fb7c5a681081fdbeeae9acaaa0d0d/provas/2014-1-final.docx
--------------------------------------------------------------------------------
/provas/2015-1-EE-testes.txt:
--------------------------------------------------------------------------------
1 | 1EE Testes - IF1009 - 3 de Junho de 2015
2 | Prof. Marcelo d'Amorim
3 |
4 |
5 | 1. Qual a diferença entre teste e depuração?
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 | 2. Explique o que é teste de regressão.
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 | 3. Para que se faz o teste de carga?
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 | 4. Cite vantagens e desvantagens do teste de GUI (interface gráfica).
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 | 5. Cobertura de código e teste de mutação tem o mesmo propósito. Que propósito é este? Explique como estas técnicas ajudam a alcançar tal propósito.
43 |
44 |
45 |
46 |
--------------------------------------------------------------------------------
/provas/2015-1-final.txt:
--------------------------------------------------------------------------------
1 | Prova Final de Testes - IF1009 - 26 de Junho de 2015
2 | Prof. Marcelo d'Amorim
3 |
4 |
5 | 1. Qual o propósito do teste de mutação? Explique seu funcionamento, aspectos positivos e negativos.
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 | 2. Qual o propósito do teste de integração contínua? Explique seu funcionamento, aspectos positivos e negativos.
28 |
29 |
30 |
--------------------------------------------------------------------------------
/provas/2016-2-EE.txt:
--------------------------------------------------------------------------------
1 | Primeiro Exercício Escolar, 10 de Outubro de 2016
2 | Teste e Validação de Software - IF1009
3 | Prof. Marcelo d'Amorim
4 |
5 | 1. Cite elementos importantes a se documentar em um "bug report" e
6 | indique boas e más práticas no seu preparo.
7 |
8 | Elementos importantes a se documentar:
9 | - Ambiente (versão do software, bibliotecas, SO, etc.)
10 | - Passos para reproduzir o problema
11 | - Resultado obtido versus resultado esperado
12 | - Telas da interface gráfica ajudando a explicar o problema
13 | Adicionados por um gerente:
14 | - Prioridade
15 | - Responsável
16 |
17 | Boas práticas:
18 | - Escrever de forma breve
19 | > Focar em informações relevantes
20 | > Minimizar passos (remover passos desnecessários)
21 | - Reportar um problema por bug report
22 | - Foco no problema e não na solução
23 |
24 | 2. Na prática de desenvolvimento de sistemas, em que situações bug
25 | reports são mais usados e em que situações bug reports são menos
26 | usados. Explique.
27 |
28 | Bug reports são mais comumente usados em situações onde usuários da
29 | aplicações tem interesse em melhorar a qualidade do sistemas. Nestes
30 | casos, reportam problemas utilizando linguagem natural através de um
31 | sistema de rastreamente de bug como o "Bugzilla".
32 |
33 | Bug reports são menos usados em ambientes onde a maioria dos usuários
34 | tem um perfil técnico. Nestes casos, ao encontrar erros, o
35 | desenvolvedor criar um caso de teste e o adiciona a uma suíte de
36 | regressão que irá apontar o erro até que o mesmo seja corrigido.
37 |
38 | 3. Para que serve o teste de integração contínua *e* como funciona?
39 |
40 | O teste de integração contínua serve para otimizar o teste de
41 | regressão, que serve para detectar a presença de regressões. Uma
42 | regressão é uma situação onde uma determinada "feature" do sistemas
43 | deixou de funcionar. Durante o desenvolvimento erros de integração só
44 | são percebido após commit+push de atualizações. O teste de integração
45 | serve para acelerar a detecção destas falhas de integração na medida
46 | que os teste são reexecutadas continuamente diante de cada atualização
47 | de um repositório de código compartilhado.
48 |
49 | Um servidor de integração contínua "escuta" um servidor git. No
50 | momento de um push, o servidor avisa ao servidor de integração sobre a
51 | atualização. Neste instante, o servidor de integração dá um pull no
52 | servidor git, como se fosse um usuário comum.
53 |
54 | 4. Explique a utilidade de ambientes virtuais de operação para apoiar
55 | o teste de software. Considere o que foi visto na aula passada, na
56 | demonstração da ferramenta Vagrant.
57 |
58 | A principal utilidade está no apoio a reprodução de problemas. Por
59 | exemplo, um usuário que observa o problema poderia construir uma
60 | máquina virtual que ilustra o problema e um segundo usuário poderia
61 | instalar a máquina virtual em seu ambiente para reproduzir o problema.
62 |
63 | 5. Um desenvolvedor precisa testar uma aplicação que depende dos
64 | seguintes parâmetros de configuração:
65 |
66 | Sistema Operacional: Linux, Windows, MacOs
67 | Browser: Chrome, Firefox, Opera
68 | Lingua: Inglês, Português
69 |
70 | Um exemplo de configuração para testar o sistema seria "Linux,
71 | Firefox, Português". Existe um total de 18 (= 3*3*2) configurações a
72 | serem testadas neste caso. Infelizmente, tal teste exaustivo é
73 | custoso. Mostre um conjunto de configurações que satisfaz o critério
74 | de adequação "todos os pares", também conhecido como "pairwise" ou
75 | "t-wise" com t=2.
76 |
77 | S={L,W,M}
78 | B={C,F,O}
79 | L={I,P}
80 |
81 | f(S s, B b, L l) { .... }
82 |
83 | S B L - Pares cobertos - Pares novos
84 | 1. L C I - (L,C) (L,I) (C,I) - 3
85 | 2. L F P - (L,F) (L,P) (F,P) - 3
86 | 3. W C P - (W,C) (W,P) (C,P) - 3
87 | 4. M O P - (M,O) (M,P) (O,P) - 3
88 | 5. W F I - (W,F) (W,I) (F,I) - 3
89 | 6. L O I - (L,O) (L,I) (O,I) - 2
90 | 7. W O I - (W,O) (W,I) (O,I) - 1
91 | 8. M C I - (M,C) (M,I) (C,I) - 2
92 | 9. M F I - (M,F) (M,I) (F,I) - 1
93 |
--------------------------------------------------------------------------------
/provas/2016-2-FINAL.txt:
--------------------------------------------------------------------------------
1 | IF1009 - Teste e Validação de Software (PROVA FINAL)
2 | Sistemas de Informação
3 | Universidade Federal de Pernambuco, Julho de 2014
4 | Prof. Marcelo d'Amorim
5 |
6 | 1. Qual a diferença entre teste e depuração?
7 |
8 |
9 |
10 | 2. Explique a importância da simplificação do teste no processo de
11 | depuração.
12 |
13 |
14 |
15 | 3. O que é o teste de integração contínua e qual sua relação com teste
16 | de regressão?
17 |
18 |
19 |
20 | 4. Explique como o uso das tecnologias de virtualização (como Vagrant e
21 | Docker) podem ajudar no teste de software.
22 |
23 |
24 |
25 | 5. O que é MC/DC?
26 |
--------------------------------------------------------------------------------
/provas/2017-2-1EE.txt:
--------------------------------------------------------------------------------
1 | IF1009 1EE, 20 de Setembro de 2017
2 | Prof. Marcelo d'Amorim
3 | [[ Cada questão vale 2,5 pontos ]]
4 |
5 | 1. Considerando o teste de mutação, explique o que é um mutante e como
6 | matá-lo.
7 |
8 | Mutante é um variação do programa que se quer testar. A variação está
9 | associada a um defeito, introduzido intencionalmente de maneira a se
10 | avaliar se a suíte de teste será capaz de detectá-lo.
11 |
12 | No teste de mutação, dizemos que um mutante é "morto" quando a
13 | execução da suíte de teste detecta sua presença. Isto ocorre quando
14 | algum teste da suíte falha quando executado na versão mutante do
15 | código.
16 |
17 | 2. O se chefe lhe deu a atividade de testar um equipamento eletrônico
18 | que é crítico para construção de um sistema. Explique como vc. faria
19 | para testar este equipamento.
20 |
21 | Eu, primeiramente, iria analisar o documento de especificação do
22 | equipamento para identificar seus requisitos funcionais. Isto é,
23 | relação entre entrada e saída do equipamento. A partir disto, usaria
24 | alguma técnica de teste funcional, como particionamento de domínio e
25 | teste de fronteira para checar se o equipamente satisfaz os
26 | requisitos. Testes não funcionais poderiam ser testados também.
27 |
28 | 3. Escreva uma suíte de testes adequada a MCDC considerando o
29 | fragmento de código abaixo.
30 |
31 | if (a && (b || c)) { ... }
32 |
33 | a b c R
34 | ---------
35 | 0 1 0 0
36 | 1 1 0 1
37 | --------- duas linhas acima, a variavel "a" eh pivo
38 | 1 0 0 0
39 | 1 1 0 1
40 | --------- duas linhas acima, a variavel "b" eh pivo
41 | 1 0 0 0
42 | 1 0 1 1
43 | --------- duas linhas acima, a variavel "c" eh pivo
44 |
45 | 4. Considere que uma função possui dois parâmetros do mesmo tipo que
46 | admitem valores LO, MED, e HI, e possui um parâmetro de um tipo que
47 | admite valores T e F. Monte uma suíte de testes para tal função
48 | adequada ao critério "Todos os Pares", também conhecida como Pairwise.
49 |
50 | X Y Z pares cobertos
51 | L_ L T L_L, L_T, LT
52 | L_ M F L_M, L_F, MF
53 | L_ H T L_H, HT
54 | M_ L F M_L, M_F, LF
55 | M_ M T M_M, M_T, MT
56 | M_ H F M_H, HF
57 | H_ L T H_L, H_T
58 | H_ M F H_M, H_F
59 | H_ H T H_H
60 |
61 | 21 pares = 3 * 3 + 3 * 2 + 3 * 2
62 |
--------------------------------------------------------------------------------
/provas/2017-2-FINAL.txt:
--------------------------------------------------------------------------------
1 | IF1009 - Teste e Validação de Software (PROVA FINAL)
2 | Sistemas de Informação
3 | Universidade Federal de Pernambuco, Dezembro de 2017.
4 | Prof. Marcelo d'Amorim
5 |
6 | 1 [2 pontos]. O que é teste de regressão.
7 |
8 |
9 | 2 [2 pontos]. Qual a relação entre o teste de regressão e o teste de
10 | integração contínua?
11 |
12 |
13 | 3 [2 pontos]. Explique o teste de mutação.
14 |
15 |
16 | 4 [2 pontos]. Construa uma suíte de teste que satisfaça o critério de
17 | cobertura "Todos os Pares" para a função abaixo.
18 |
19 |
20 | void foo(boolean b1, int i1, bool b2);
21 |
22 | Considere que o parâmetro inteiro admite apenas 3 possíveis valores:
23 | A, B, e C.
24 |
25 | 5 [2 pontos]. O número total de pares (isto é, requisitos de teste) no
26 | exemplo acima é 16. Explique este número e explique como
27 | vc. calcularia o número de pares caso um novo parâmetro, admitindo 3
28 | valores, fosse adicionado a função.
29 |
30 |
--------------------------------------------------------------------------------
/provas/2018-2-EE.txt:
--------------------------------------------------------------------------------
1 | IF1009 - Teste e Validação de Software
2 | Sistemas de Informação, Universidade Federal de Pernambuco
3 | Prof. Marcelo d'Amorim
4 |
5 | 1 [1 pontos]. Qual a vantagem e desvantagem de se usar teste
6 | caixa-preta versus teste caixa-branca?
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 | 2 [1 pontos]. Para que serve o teste de integração contínua?
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 | 3 [1 pontos]. Explique o teste de mutação.
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 | 4 [2 pontos]. Construa uma suíte de teste adequada a MCDC considerand
31 | o trecho de código abaixo.
32 |
33 | if (a && (b || c) && d) ...
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 | 5 [3 pontos]. Construa uma suíte de teste adequada a "Pairwise"
45 | ("2-wise") para a função abaixo, considerando os seguintes domínios
46 | A={1_A, 2_A}, B={1_B, 2_B, 3_B}, e C={1_C, 2C}.
47 |
48 | bar(A a, B b, C c)
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 | 6 [2 pontos]. Como contratos (p. ex., especificações JML) podem ajudar
60 | a detectar bugs prematuramente no processo de desenvolvimento?
61 |
62 |
--------------------------------------------------------------------------------
/provas/2019-2-EE.txt:
--------------------------------------------------------------------------------
1 | Prova Final de Testes IF1009
2 | Recife, 11 de Novembro de 2019
3 |
4 | 1. [6 pontos] Defina brevemente:
5 |
6 | - Cobertura de código
7 | - Teste de caixa preta
8 | - Teste de caixa branca
9 | - Teste de mutação
10 | - Teste de regressão
11 | - Teste de integração contínua
12 | - Teste de fronteira
13 | - Teste de carga
14 | - Teste de aceitação
15 | - "Test-Driven Development" (TDD)
16 |
17 | 2. [4 pontos] Explique >através de um exemplo<
18 |
19 | - Teste de "Pairwise"
20 | - MCDC
21 |
--------------------------------------------------------------------------------
/provas/2019-2-FINAL.txt:
--------------------------------------------------------------------------------
1 | Prova Final de Testes IF1009
2 | Prof. Marcelo d'Amorim
3 | Recife, 9 de Dezembro de 2019
4 |
5 | 1. [2 pontos] Qual a diferença entre:
6 |
7 | - Teste e depuração?
8 | - BDD e TDD
9 |
10 |
11 | 2. [2 pontos] Explique como funciona teste de integração contínua.
12 |
13 |
14 | 3. [2 pontos] Em que situação vc. poderia aplicar pairwise testing?
15 | Explique como funciona.
16 |
17 |
18 | 4. [2 pontos] Vc. trabalha em uma empresa que está desenvolvendo
19 | software para suportar um volume de acesso de 5 mil usuários
20 | simultâneos. O que vc. usaria para simular acesso de usuários, dentro
21 | do ambiente de desenvolvimento e antes de colocar o sistema em
22 | produção?
23 |
24 |
25 | 5. [2 pontos] Vc. trabalha em uma empresa de desenvolvimento de
26 | software que está recebendo reclamações dos clientes que observaram
27 | que certa funcionalidade do sistema está executando de forma muito
28 | lenta.
29 |
30 | 5.1 O que vc. deve fazer para tentar descobrir a causa do problema?
31 |
32 | 5.2 Como este tipo de problema poderia ter sido evitado durante o
33 | desenvolvimento?
34 |
--------------------------------------------------------------------------------
/provas/IF1009-2018-2-FINAL.txt:
--------------------------------------------------------------------------------
1 | Prova Final de Testes IF1009
2 | Prof. Marcelo d'Amorim
3 | Recife, 10 de Dezembro de 2019
4 |
5 | 1. [2 pontos] Qual a diferença entre
6 |
7 | - Falta e falha?
8 | - Teste e depuração?
9 |
10 |
11 | 2. [2.5 pontos] O que é teste de mutação? Demonstre através de exemplo.
12 |
13 |
14 |
15 | 3. [2.5 pontos] Explique pairwise testing.
16 |
17 |
18 |
19 | 4. [3 pontos] Explique o que é JML e como pode ser usado para encontrar bugs.
20 |
--------------------------------------------------------------------------------
/provas/IF1009-2018-2-GABARITO.txt:
--------------------------------------------------------------------------------
1 | Prova Final de Testes IF1009
2 | Prof. Marcelo d'Amorim
3 | Recife, 10 de Dezembro de 2019
4 |
5 | 1. [2 pontos] Qual a diferença entre
6 |
7 | - Falta e falha?
8 |
9 | A falta é a manifestação de um bug, que está presente no código, no
10 | estado de um programa em execução. A execução do program exercitou um
11 | comando defeituoso e construiu este estado incorreto. Importante é
12 | compreender que a execução do programa não é necessariamente
13 | interrompida por conta de uma falta.
14 |
15 | A falha é a observação de um estado defeituoso. Por exemplo, a
16 | observação de um exceção, que interrompe a execução normal de um
17 | teste.
18 |
19 | - Teste e depuração?
20 |
21 | Teste é a atividade que identica a presença de bugs em código. Mais
22 | precisamente, a atividade de Teste tem como resposabilidade construir
23 | cenários de execução que revelam falhas, que denunciam a presença de
24 | bugs no código. Teste não diz onde os bugs estão.
25 |
26 | Depuração é a atividade de descobrir, a partir de uma execução que
27 | falha, as possíveis causas da falha no código.
28 |
29 | 2. [2.5 pontos] O que é teste de mutação? Demonstre através de exemplo.
30 |
31 | ** objetivo **
32 | Teste de mutação é uma técnica que tem como objetivo avaliar a
33 | qualidade de uma suíte de testes. A técnica vai dar uma nota---o score
34 | de mutação---dando um valor estimado para a qualidade de uma
35 | determinada suíte de teste. Assume-se que uma suíte de teste com uma
36 | nota alta é uma suíte mais capacitada para detectar erros reais, que
37 | seriam introduzidos durante o desenvolvimento.
38 |
39 | ** funcionamento **
40 | O teste de mutação introduz erros artificialmente no código e avalia
41 | se a suíte é capaz de capturar aqueles erros. Ou seja, se a suíte vai
42 | sinalizar a presença ou não daqueles problemas. Estes erros são
43 | caracterizados a partir de pequenas mudanças no código, chamadas de
44 | mutantes.
45 |
46 | Exemplo de funcionamento:
47 |
48 | int foo(int i, int j)
49 | if (i > j)
50 | return i + j
51 | else
52 | return i
53 |
54 | @Test
55 | void testUm()
56 | assertEquals(10, foo(10,10))
57 |
58 | Mutante 1: Troca > por >=
59 | Mutante 2: Troca + por -
60 |
61 | Neste cenário, há apenas um caso de teste na suíte. Os testes
62 | conseguem matar o mutante 1, mas não conseguem matar o mutante
63 | 2. Ciente que a suíte de testes está deficiente, o desenvolvedor
64 | constrói mais o teste abaixo para matar o mutante 2.
65 |
66 | @Test
67 | void testDois()
68 | assertEquals(30, foo(20,10))
69 |
70 |
71 | 3. [2.5 pontos] Explique pairwise testing.
72 |
73 | É uma técnica de teste combinatorial (teste funcional) que tem como
74 | objetivo evitar explosão combinatorial ao se considerar todas as
75 | combinações de todos os parâmetros de uma função. Uma suíte de testes
76 | adequada a critério de cobertura pairwise deve cobrir todas as
77 | combinações entre pares de parâmetros.
78 |
79 | Exemplo:
80 |
81 | Parametros da Função a ser testada:
82 | Firefox(URL url, LIN lin, SO so, AFL adobeFlash)
83 |
84 | Domínios dos parâmetros da função:
85 | URL={lh, rh, na}
86 | LIN={po, in}
87 | SO={win, linux, mac}
88 | AFL={sim, nao}
89 |
90 | Pares de parâmetros e requisitos de teste:
91 | URL-LIN
92 | lh-po OK
93 | lh-in OK
94 | rh-po
95 | rh-in
96 | na-po
97 | na-in
98 | URL-SO
99 | lh-win OK
100 | lh-linux OK
101 | lh-mac
102 | rh-win
103 | rh-linux
104 | rh-mac
105 | na-win
106 | na-linux
107 | na-mac
108 | URL-AFL
109 | lh-sim OK
110 | lh-nao OK
111 | rh-sim
112 | rh-nao
113 | na-sim
114 | na-nao
115 | LIN-SO
116 | po-win OK
117 | po-linux
118 | po-mac
119 | in-win
120 | in-linux OK
121 | in-mac
122 | LIN-AFL
123 | po-sim OK
124 | po-nao
125 | in-sim
126 | in-nao OK
127 | SO-AFL
128 | win-sim OK
129 | win-nao
130 | linux-sim
131 | linux-nao OK
132 | mac-sim
133 | mac-nao
134 |
135 | Firefox(URL url, LIN lin, SO so, AFL adobeFlash)
136 | URL, LIN, SO, AFL
137 | lh, po, win, sim
138 | lh, in, linux, nao
139 |
140 | 4. [3 pontos] Explique o que é JML e como pode ser usado para
141 | encontrar bugs.
142 |
143 | JML é uma linguage de especificação de APIs para Java.
144 |
--------------------------------------------------------------------------------
/provas/If1009-20172-1EE.docx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/STAR-RG/testing-cin/dc0b678b842fb7c5a681081fdbeeae9acaaa0d0d/provas/If1009-20172-1EE.docx
--------------------------------------------------------------------------------
/testing-minicourse.pptx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/STAR-RG/testing-cin/dc0b678b842fb7c5a681081fdbeeae9acaaa0d0d/testing-minicourse.pptx
--------------------------------------------------------------------------------