mutação orientada a objeto para assegurar a qualidade de testes baseado no artigo: object-oriented...
TRANSCRIPT
![Page 1: Mutação Orientada a Objeto para Assegurar a Qualidade de Testes Baseado no Artigo: Object-Oriented Mutation to Asses the Quality of Tests Anna Derezinska](https://reader035.vdocuments.mx/reader035/viewer/2022081518/552fc105497959413d8c07a5/html5/thumbnails/1.jpg)
Mutação Orientada a Objeto para Assegurar a Qualidade de Testes
Baseado no Artigo: Object-Oriented Mutation to Asses the Quality of Tests
Anna Derezinska
Junho de 2004
![Page 2: Mutação Orientada a Objeto para Assegurar a Qualidade de Testes Baseado no Artigo: Object-Oriented Mutation to Asses the Quality of Tests Anna Derezinska](https://reader035.vdocuments.mx/reader035/viewer/2022081518/552fc105497959413d8c07a5/html5/thumbnails/2.jpg)
Roteiro
• Introdução
• Mutações Orientada a Objetos– Estudo de caso: exemplos de mutantes
• Conclusões
![Page 3: Mutação Orientada a Objeto para Assegurar a Qualidade de Testes Baseado no Artigo: Object-Oriented Mutation to Asses the Quality of Tests Anna Derezinska](https://reader035.vdocuments.mx/reader035/viewer/2022081518/552fc105497959413d8c07a5/html5/thumbnails/3.jpg)
3
Introdução
• No teste de mutação pequenas modificações sintáticas são introduzidas em um programa P.
• Objetivo: investigar resultados de operadores de mutação OO aplicados às especificações de classe UML e ao código fonte.
![Page 4: Mutação Orientada a Objeto para Assegurar a Qualidade de Testes Baseado no Artigo: Object-Oriented Mutation to Asses the Quality of Tests Anna Derezinska](https://reader035.vdocuments.mx/reader035/viewer/2022081518/552fc105497959413d8c07a5/html5/thumbnails/4.jpg)
4
Mutações Orientada a Objetos• Grupos de operadores de mutação OO:
– Inherit (Inh) – Muda a classe base ou omite a relação de herança;
– Associate (Ass) – Muda a associação entre classes;– Object (Obj) – Acessa um membro em outro objeto da
mesma classe ou membro em outra classe da mesma hierarquia de herança;
– Member (Mem) – Acessa dado ou função diferente do objeto;
– Access (Acc) – Muda o especificador de acesso relacionados ao dado, às funções, ou às classes em um relacionamento de herança.
![Page 5: Mutação Orientada a Objeto para Assegurar a Qualidade de Testes Baseado no Artigo: Object-Oriented Mutation to Asses the Quality of Tests Anna Derezinska](https://reader035.vdocuments.mx/reader035/viewer/2022081518/552fc105497959413d8c07a5/html5/thumbnails/5.jpg)
5
Accelerator_pedal
<<virtual>> Press_in()<<virtual>> Release()
Engine
Current_revolution : intLoad_status : int
Link
Steering_wheel
Turn_left()Turn_right()
Head_axle
Turn_round()<<virtual>> Control()
1
1
1
1
Steering_system
Pedal
Gear-box
Gear_down()Gear_up()Set_load()Set_revolution()
1
1
1
1Gear_transmission
Brake_pedal
<<virtual>> Press_in()<<virtual>> Release)()
1 11 1
Head_braking_system
Rear_axle
<<virtual>> Control()
1..*
1
1..*
1
Drive_shaft
1..*
1
1..*
1Rear_braking_system
Chassis
11
11
1
1
1
1
1
1
1
1
11 11
1
1
1
1
1
1
1
1
1
1..*
1
1..*Axle
Current_revolution : intDrive_shaft : int
Set_revolution()
Estudo de Caso: diagrama principal para o exemplo do carro
![Page 6: Mutação Orientada a Objeto para Assegurar a Qualidade de Testes Baseado no Artigo: Object-Oriented Mutation to Asses the Quality of Tests Anna Derezinska](https://reader035.vdocuments.mx/reader035/viewer/2022081518/552fc105497959413d8c07a5/html5/thumbnails/6.jpg)
6
Light
<<virtual>> Switch_off()<<virtual>> Switch_on()
Car_unit
Head_lightIndicator_light
<<virtual>> Switch_on()<<virtual>> Switch_off()
Brake_pedal
Stop_light
1..*
1
1..*
1
Chassis1
1..*
1
1..*
1
2
1
2
Left_indicator 1
2
1
2
Right_indicator
1
1..*
1
1..*
Estudo de Caso: classes para o sistema de iluminação do carro
![Page 7: Mutação Orientada a Objeto para Assegurar a Qualidade de Testes Baseado no Artigo: Object-Oriented Mutation to Asses the Quality of Tests Anna Derezinska](https://reader035.vdocuments.mx/reader035/viewer/2022081518/552fc105497959413d8c07a5/html5/thumbnails/7.jpg)
7
Inherit: adiciona herança
![Page 8: Mutação Orientada a Objeto para Assegurar a Qualidade de Testes Baseado no Artigo: Object-Oriented Mutation to Asses the Quality of Tests Anna Derezinska](https://reader035.vdocuments.mx/reader035/viewer/2022081518/552fc105497959413d8c07a5/html5/thumbnails/8.jpg)
8
Inherit: omite relação de herança
![Page 9: Mutação Orientada a Objeto para Assegurar a Qualidade de Testes Baseado no Artigo: Object-Oriented Mutation to Asses the Quality of Tests Anna Derezinska](https://reader035.vdocuments.mx/reader035/viewer/2022081518/552fc105497959413d8c07a5/html5/thumbnails/9.jpg)
9
Inherit: muda a direção de um relacionamento de herança
![Page 10: Mutação Orientada a Objeto para Assegurar a Qualidade de Testes Baseado no Artigo: Object-Oriented Mutation to Asses the Quality of Tests Anna Derezinska](https://reader035.vdocuments.mx/reader035/viewer/2022081518/552fc105497959413d8c07a5/html5/thumbnails/10.jpg)
10
Associate: muda a direção de uma associação
![Page 11: Mutação Orientada a Objeto para Assegurar a Qualidade de Testes Baseado no Artigo: Object-Oriented Mutation to Asses the Quality of Tests Anna Derezinska](https://reader035.vdocuments.mx/reader035/viewer/2022081518/552fc105497959413d8c07a5/html5/thumbnails/11.jpg)
11
Associate: muda agregação para associação
![Page 12: Mutação Orientada a Objeto para Assegurar a Qualidade de Testes Baseado no Artigo: Object-Oriented Mutation to Asses the Quality of Tests Anna Derezinska](https://reader035.vdocuments.mx/reader035/viewer/2022081518/552fc105497959413d8c07a5/html5/thumbnails/12.jpg)
12
Associate: muda classes ligadas por associação
![Page 13: Mutação Orientada a Objeto para Assegurar a Qualidade de Testes Baseado no Artigo: Object-Oriented Mutation to Asses the Quality of Tests Anna Derezinska](https://reader035.vdocuments.mx/reader035/viewer/2022081518/552fc105497959413d8c07a5/html5/thumbnails/13.jpg)
13
Associate: duas associações por uma associação
![Page 14: Mutação Orientada a Objeto para Assegurar a Qualidade de Testes Baseado no Artigo: Object-Oriented Mutation to Asses the Quality of Tests Anna Derezinska](https://reader035.vdocuments.mx/reader035/viewer/2022081518/552fc105497959413d8c07a5/html5/thumbnails/14.jpg)
14
Associate: aponta associação para classe base
![Page 15: Mutação Orientada a Objeto para Assegurar a Qualidade de Testes Baseado no Artigo: Object-Oriented Mutation to Asses the Quality of Tests Anna Derezinska](https://reader035.vdocuments.mx/reader035/viewer/2022081518/552fc105497959413d8c07a5/html5/thumbnails/15.jpg)
15
Associate: substitui agregação para a classe base
![Page 16: Mutação Orientada a Objeto para Assegurar a Qualidade de Testes Baseado no Artigo: Object-Oriented Mutation to Asses the Quality of Tests Anna Derezinska](https://reader035.vdocuments.mx/reader035/viewer/2022081518/552fc105497959413d8c07a5/html5/thumbnails/16.jpg)
16
Object: chama função de um outro objeto associado com classe
![Page 17: Mutação Orientada a Objeto para Assegurar a Qualidade de Testes Baseado no Artigo: Object-Oriented Mutation to Asses the Quality of Tests Anna Derezinska](https://reader035.vdocuments.mx/reader035/viewer/2022081518/552fc105497959413d8c07a5/html5/thumbnails/17.jpg)
17
Object: controle do pedal é chamado por Brake_pedal
![Page 18: Mutação Orientada a Objeto para Assegurar a Qualidade de Testes Baseado no Artigo: Object-Oriented Mutation to Asses the Quality of Tests Anna Derezinska](https://reader035.vdocuments.mx/reader035/viewer/2022081518/552fc105497959413d8c07a5/html5/thumbnails/18.jpg)
18
Object: chama função de classe derivada
![Page 19: Mutação Orientada a Objeto para Assegurar a Qualidade de Testes Baseado no Artigo: Object-Oriented Mutation to Asses the Quality of Tests Anna Derezinska](https://reader035.vdocuments.mx/reader035/viewer/2022081518/552fc105497959413d8c07a5/html5/thumbnails/19.jpg)
19
Member: chama função complementar
![Page 20: Mutação Orientada a Objeto para Assegurar a Qualidade de Testes Baseado no Artigo: Object-Oriented Mutation to Asses the Quality of Tests Anna Derezinska](https://reader035.vdocuments.mx/reader035/viewer/2022081518/552fc105497959413d8c07a5/html5/thumbnails/20.jpg)
20
Member: chama função herdada da classe base
![Page 21: Mutação Orientada a Objeto para Assegurar a Qualidade de Testes Baseado no Artigo: Object-Oriented Mutation to Asses the Quality of Tests Anna Derezinska](https://reader035.vdocuments.mx/reader035/viewer/2022081518/552fc105497959413d8c07a5/html5/thumbnails/21.jpg)
21
Member: troca chamada de funções da mesma classe
![Page 22: Mutação Orientada a Objeto para Assegurar a Qualidade de Testes Baseado no Artigo: Object-Oriented Mutation to Asses the Quality of Tests Anna Derezinska](https://reader035.vdocuments.mx/reader035/viewer/2022081518/552fc105497959413d8c07a5/html5/thumbnails/22.jpg)
22
Member: troca chamada de funções herdadas
![Page 23: Mutação Orientada a Objeto para Assegurar a Qualidade de Testes Baseado no Artigo: Object-Oriented Mutation to Asses the Quality of Tests Anna Derezinska](https://reader035.vdocuments.mx/reader035/viewer/2022081518/552fc105497959413d8c07a5/html5/thumbnails/23.jpg)
23
Member: acessa dado diferente no mesmo objeto
![Page 24: Mutação Orientada a Objeto para Assegurar a Qualidade de Testes Baseado no Artigo: Object-Oriented Mutation to Asses the Quality of Tests Anna Derezinska](https://reader035.vdocuments.mx/reader035/viewer/2022081518/552fc105497959413d8c07a5/html5/thumbnails/24.jpg)
24
Access: substitui função public por protected
![Page 25: Mutação Orientada a Objeto para Assegurar a Qualidade de Testes Baseado no Artigo: Object-Oriented Mutation to Asses the Quality of Tests Anna Derezinska](https://reader035.vdocuments.mx/reader035/viewer/2022081518/552fc105497959413d8c07a5/html5/thumbnails/25.jpg)
25
Access: substitui herança public por private
![Page 26: Mutação Orientada a Objeto para Assegurar a Qualidade de Testes Baseado no Artigo: Object-Oriented Mutation to Asses the Quality of Tests Anna Derezinska](https://reader035.vdocuments.mx/reader035/viewer/2022081518/552fc105497959413d8c07a5/html5/thumbnails/26.jpg)
26
Mutações OO• Grupos Inherit, Associate e Access foram aplicados para
especificações UML.• Grupos Object e Member foram aplicados diretamente
no código.• Alguns mutantes UML invalidados (compilador)• Mutante equivalente.• Casos de teste: conjunto básico de testes funcionais +
teste adicional.• Cobertura:
– 83% : funções;– 85%: linhas de código.
![Page 27: Mutação Orientada a Objeto para Assegurar a Qualidade de Testes Baseado no Artigo: Object-Oriented Mutation to Asses the Quality of Tests Anna Derezinska](https://reader035.vdocuments.mx/reader035/viewer/2022081518/552fc105497959413d8c07a5/html5/thumbnails/27.jpg)
27
Conclusões
• Operadores melhores: grupos Object e Member.
• Mutantes que mudam relação de herança (Inherit) ou tipo de relacionamento de associações são mais adequados na especificação.