Teste de mutação

O teste de mutação (ou análise de mutação ou mutação de programa) é um sistema usado para projetar novos testes de software e avaliar a qualidade dos testes de software existentes. O teste de mutação envolve a modificação de um programa em pequenas maneiras.[1] Cada versão mutada é chamada de mutante e os testes detectam e rejeitam mutantes, fazendo com que o comportamento da versão original seja diferente do mutante. Isso é chamado de matar o mutante. O objetivo é ajudar o testador a desenvolver testes eficazes ou localizar pontos fracos nos dados de teste usados para o programa ou em seções do código que raramente ou nunca são acessadas durante a execução. O teste de mutação é uma forma de teste de caixa-branca .

Introdução

O teste de mutação é definido como o uso de análise de mutação para projetar novos testes de software ou para avaliar os testes de software existentes. Assim, a análise e o teste de mutação podem ser aplicados a modelos de design, especificações, bancos de dados, testes, XML e outros tipos de artefatos de software, embora a mutação de programa seja a mais comum.

Visão geral

Testes podem ser criados para verificar a exatidão da implementação de um determinado sistema de software, mas a criação de testes ainda coloca a questão se os testes estão corretos e cobrem suficientemente os requisitos que originaram a implementação. (Quis custodiet ipsos custodes? A ideia é que se um mutante for introduzido sem ser detectado pelo conjunto de testes, isso indica que o código que foi mutado nunca foi executado (código morto) ou que o conjunto de testes foi incapaz de localizar as falhas representadas pelo mutante .

Pare funcionar, um grande número de mutantes são introduzidos, o que leva a execução de um número extremamente grande de cópias do programa, o que pode ser pesado. No entanto, o aumento do uso de linguagens de programação orientadas a objetos e estruturas de teste de unidade levou à criação de ferramentas de teste de mutação que testam partes individuais de um aplicativo.

Metas

Os objetivos do teste de mutação são múltiplos:

  • identificar fragmentos de código fracamente testados (aqueles para os quais os mutantes não são mortos) [1]
  • identificar testes fracos (aqueles que nunca matam mutantes)[2]
  • calcular uma pontuação de mutação [3]
  • aprender sobre propagação de erro e infecção de estado no programa [4]

História

O teste de mutação foi originalmente proposto por Richard Lipton como em 1971,[5] e primeiro desenvolvido e publicado por DeMillo, Lipton e Sayward.[1] A primeira implementação de uma ferramenta de teste de mutação foi feita por Timothy Budd como parte de seu trabalho de doutorado (intitulado Mutation Analysis) em 1980, na Universidade Yale.[6]

Recentemente, com o aumento da disponibilidade de grande poder de computação, houve um ressurgimento da análise de mutação dentro da comunidade da ciência da computação.

O fuzzing pode ser considerada um caso especial de teste de mutação. No fuzzing, as mensagens ou dados trocados dentro das interfaces de comunicação (tanto dentro quanto entre as instâncias do software) são transformados para detectar falhas ou diferenças no processamento dos dados. Codenomicon [7] (2001) e Mu Dynamics (2005) desenvolveram conceitos de fuzzing para uma plataforma de teste de mutação totalmente stateful, completa com monitores para exercitar completamente as implementações de protocolo.

Visão geral do teste de mutação

O teste de mutação é baseado em duas hipóteses. A primeira é a hipótese do programador competente . Esta hipótese afirma que a maioria das falhas de software introduzidas por programadores experientes são devidas a pequenos erros sintáticos.[1] A segunda hipótese é chamada de efeito de acoplamento . O efeito de acoplamento afirma que falhas simples podem formar uma cascata ou se acoplar para formar outras falhas emergentes.[8][9]

Falhas sutis e importantes também são reveladas por mutantes de ordem superior, que suportam ainda mais o efeito de acoplamento.[2][10][11][12][13] Mutantes de ordem superior são ativados pela criação de mutantes com mais de uma mutação.

O teste de mutação é feito selecionando um conjunto de operadores de mutação e aplicando-os ao programa de origem, um de cada vez, para cada parte aplicável do código-fonte. O resultado da aplicação de um operador de mutação ao programa é chamado de mutante . Se o conjunto de testes for capaz de detectar a mudança (ou seja, um dos testes falhar), o mutante é considerado morto .

Por exemplo, considere o seguinte fragmento de código C ++:

if (a && b) {
  c = 1;
} else {
  c = 0;
}

O operador de mutação de condição substituiria && por || e produzir o seguinte mutante:

if (a || b) {
  c = 1;
} else {
  c = 0;
}

Agora, para o teste matar esse mutante, as três condições a seguir devem ser atendidas:

  1. Um teste deve alcançar a declaração mutada.
  2. Os dados de entrada de teste devem infectar o estado do programa, causando diferentes estados do programa para o programa mutante e original. Por exemplo, um teste com a = 1 e b = 0 faria isso.
  3. O estado incorreto do programa (o valor de 'c') deve se propagar para a saída do programa e ser verificado pelo teste.

Essas condições são chamadas coletivamente de modelo RIP .[5]

O teste de mutação fraca (ou cobertura de mutação fraca ) requer que apenas a primeira e a segunda condições sejam satisfeitas. O teste de mutação forte requer que todas as três condições sejam satisfeitas. A mutação forte é mais poderosa, pois garante que o conjunto de testes possa realmente detectar os problemas. A mutação fraca está intimamente a cobertura de código.

No entanto, há casos em que não é possível encontrar um caso de teste que possa matar esse mutante. O programa resultante é comportamentalmente equivalente ao original. Esses mutantes são chamados de mutantes equivalentes .

A detecção de mutantes equivalentes é um dos maiores obstáculos para o uso prático de testes de mutação. O esforço necessário para verificar se os mutantes são equivalentes ou não pode ser muito alto, mesmo para programas pequenos.[14] Uma revisão sistemática da literatura de uma ampla gama de abordagens para superar o Problema Mutante Equivalente (apresentado por [15] ) identificou 17 técnicas relevantes (em 22 artigos) e três categorias de técnicas: detecção (DEM); sugerindo (SEM); e evitando a geração de mutantes equivalentes (AEMG). O experimento indicou que a mutação de ordem superior em geral e a estratégia JudyDiffOp em particular fornecem uma abordagem promissora para o problema mutante equivalente.

Operadores de mutação

Muitos operadores de mutação foram explorados por pesquisadores. Aqui estão alguns exemplos de operadores de mutação para linguagens imperativas:

  • Exclusão de extrato
  • Duplicação ou inserção de instrução, por exemplo, goto fail;[16]
  • Substituição de subexpressões booleanas por verdadeiro e falso
  • Substituição de algumas operações aritméticas por outras, por exemplo, + com *, - com /
  • Substituição de algumas relações booleanas por outras, por exemplo, > por >=, == e <=
  • Substituição de variáveis por outras do mesmo escopo (os tipos de variáveis devem ser compatíveis)

pontuação de mutação = número de mutantes mortos / número total de mutantes

Esses operadores de mutação também são chamados de operadores de mutação tradicionais. Existem também operadores de mutação para linguagens orientadas a objetos,[17] para construções concorrentes,[18] objetos complexos como contêineres,[19] etc. Os operadores de contêineres são chamados de operadores de mutação em nível de classe . Por exemplo, a ferramenta muJava oferece vários operadores de mutação em nível de classe, como Alteração do Modificador de Acesso, Inserção de Operador de Tipo e Exclusão de Operador de Tipo. Os operadores de mutação também foram desenvolvidos para realizar testes de vulnerabilidade de segurança de programas [20]

Ferramentas de teste de mutação

Ver também

Leitura adicional

Referências

  1. a b c d Richard A. DeMillo, Richard J. Lipton, and Fred G. Sayward. Hints on test data selection: Help for the practicing programmer. IEEE Computer, 11(4):34-41. April 1978.
  2. a b Smith B., "On Guiding Augmentation of an Automated Test Suite via Mutation Analysis," 2008
  3. Paul Ammann and Jeff Offutt. Introduction to Software Testing. Cambridge University Press, 2008.
  4. Musco, Vincenzo; Monperrus, Martin; Preux, Philippe (2016). «Mutation-Based Graph Inference for Fault Localization». doi:10.1109/SCAM.2016.24 
  5. a b Mutation 2000: Uniting the Orthogonal by A. Jefferson Offutt and Roland H. Untch.
  6. Tim A. Budd, Mutation Analysis of Program Test Data. PhD thesis, Yale University New Haven CT, 1980.
  7. Kaksonen, Rauli. A Functional Method for Assessing Protocol Implementation Security (Licentiate thesis). Espoo. 2001.
  8. A. Jefferson Offutt. 1992. Investigations of the software testing coupling effect. ACM Trans. Softw. Eng. Methodol. 1, 1 (January 1992), 5-20.
  9. A. T. Acree, T. A. Budd, R. A. DeMillo, R. J. Lipton, and F. G. Sayward, "Mutation Analysis," Georgia Institute of Technology, Atlanta, Georgia, Technique Report GIT-ICS-79/08, 1979.
  10. Yue Jia; Harman, M., "Constructing Subtle Faults Using Higher Order Mutation Testing," Source Code Analysis and Manipulation, 2008 Eighth IEEE International Working Conference on, vol., no., pp.249,258, 28-29 Sept. 2008
  11. Maryam Umar, "An Evaluation of Mutation Operators For Equivalent Mutants," MS Thesis, 2006
  12. Polo M. and Piattini M., "Mutation Testing: practical aspects and cost analysis," University of Castilla-La Mancha (Spain), Presentation, 2009
  13. Anderson S., "Mutation Testing", the University of Edinburgh, School of Informatics, Presentation, 2011
  14. P. G. Frankl, S. N. Weiss, and C. Hu. All-uses versus mutation testing: An experimental comparison of effectiveness. Journal of Systems and Software, 38:235–253, 1997.
  15. Overcoming the Equivalent Mutant Problem: A Systematic Literature Review and a Comparative Experiment of Second Order Mutation by L. Madeyski, W. Orzeszyna, R. Torkar, M. Józala. IEEE Transactions on Software Engineering
  16. Apple's SSL/TLS bug by Adam Langley.
  17. MuJava: An Automated Class Mutation System by Yu-Seung Ma, Jeff Offutt and Yong Rae Kwo.
  18. Mutation Operators for Concurrent Java (J2SE 5.0) by Jeremy S. Bradbury, James R. Cordy, Juergen Dingel.
  19. Mutation of Java Objects by Roger T. Alexander, James M. Bieman, Sudipto Ghosh, Bixia Ji.
  20. Mutation-based Testing of Buffer Overflows, SQL Injections, and Format String Bugs by H. Shahriar and M. Zulkernine.

Read other articles:

LG Cookie T300MerekLG Wink T300, LG Cookie Lite T300PembuatLG Electronics, Inc.Jaringan2G Network GSM 850 / 900 / 1800 / 1900Rilis pertama2010 September 01; 13 tahun lalu (01-09-2010)TipeCard Bar (Touchscreen)Dimensi96 mm (3,8 in) H51 mm (2,0 in) W12 mm (0,47 in) DBerat77 g (2,7 oz)MemoriPhonebook 1000 entries, PhotocallCall records 100 received, 100 dialed, 100 missed callsPenyimpanan20 MBKartu ExternalmicroSD, up to 4GBBateraiStandard battery, Li...

 

Indonesia Mencari BakatLogo Indonesia Mencari BakatNama alternatifIndonesia Mencari Bakat Bersama Supermi (musim 1–2)Indonesia Mencari Bakat Bersama Susu Zee (musim 3–4)GenreAjang pencarian bakatPembuatWishnutamaPresenter Ananda Omesh Rian Ibram Juri Sarah Sechan Addie MS Titi Rajo Bintang Rianti Cartwright Deddy Corbuzier Syahrini Ivan Gunawan Cinta Laura Raditya Dika Negara asalIndonesiaJmlh. musim5Jmlh. episodeDaftar episodeProduksiLokasi produksiStudio 1 Trans TV, JakartaDurasi120 me...

 

Nazi German Waffen-SS unit (1943–45) Latvian Legion of the Waffen-SSArm ShieldActiveJanuary 1943 – 1945Country LatviaAllegiance Nazi GermanyBranch Waffen SS VI SS Army Corps (Latvian) 15th Waffen Grenadier Division of the SS (1st Latvian) 19th Waffen Grenadier Division of the SS (2nd Latvian) TypeInfantrySize87,550 men as of July 1, 1944; with another 23,000 men as Wehrmacht auxiliariesMotto(s)Dievs, svētī Latviju! (God bless Latvia!)ColorsLatvian national colorsMarchZem mūsu...

John Stafford John Stafford (24 novembre 1427 – 8 maggio 1473) è stato un nobile inglese ed ebbe il titolo di conte di Wiltshire. Indice 1 Biografia 2 Note 3 Bibliografia 4 Voci correlate Biografia Era figlio di Humphrey Stafford, I duca di Buckingham e della consorte Anne Neville, figlia di Ralph Neville, I conte di Westmorland. Nel 1461 venne creato cavaliere dell'ordine del bagno. Combatté come Yorkista nella battaglia di Hexham nel 1464. Nel 1469 venne fatto Steward del ducato di Corn...

 

1978 United States Senate election in South Dakota ← 1972 November 7, 1978 1984 →   Nominee Larry Pressler Don Barnett Party Republican Democratic Popular vote 170,832 84,767 Percentage 66.84% 33.16% County results Pressler:      50-60%      60-70%      70-80%      80–90% Barnett:      50–60%      60–70% &#...

 

International nuclear fusion research and engineering megaproject For the type of medieval circuit court, see Eyre (legal term). For the computer science terminology, see Iterator. ITERParticipating members (partners not shown)Formation24 October 2007; 16 years ago (2007-10-24)HeadquartersSaint-Paul-lès-Durance,  FranceMembership  China European UnionMembers via EURATOM:[1]  Switzerland  United Kingdom  India  Japan  South Kor...

SNAPC1 المعرفات الأسماء المستعارة SNAPC1, PTFgamma, SNAP43, small nuclear RNA activating complex polypeptide 1 معرفات خارجية الوراثة المندلية البشرية عبر الإنترنت 600591 MGI: MGI:1922877 HomoloGene: 2317 GeneCards: 6617 علم الوجود الجيني الوظيفة الجزيئية • ربط دي إن إي• sequence-specific DNA binding المكونات الخلوية • snRNA-activating protein complex• نواة•...

 

Indian ceremony celebrating cinema of 1972 20th National Film Awards20th National Film AwardsAwarded forBest of Indian cinema in 1972Awarded byMinistry of Information and BroadcastingOfficial websitedff.nic.inHighlightsBest Feature FilmSwayamvaramDadasaheb Phalke AwardPankaj Kumar MullickMost awardsSwayamvaram (4) ← 19th National Film Awards 21st → The 20th National Film Awards, presented by Ministry of Information and Broadcasting, India to felicitate the best of Indian...

 

Federal United States law This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: Tenure of Office Act 1867 – news · newspapers · books · scholar · JSTOR (March 2010) (Learn how and when to remove this message) Tenure of Office Act (1867)Long titleAn act regulating the tenure of certain civil officesEnacted...

这是马来族人名,“阿都沙末”是父名,不是姓氏,提及此人时应以其自身的名“卡立”为主。 卡立·阿都沙末Khalid bin Abdul Samad2019年8月15日,卡立阿都沙末与美国驻马大使雷荷花(英语:Kamala Shirin Lakhdhir)会面 马来西亚联邦直辖区部长任期2018年5月21日—2020年2月24日君主最高元首端姑莫哈末五世最高元首苏丹阿都拉首相马哈迪·莫哈末副职沙鲁丁前任东姑安南继任安努...

 

Instruction set architecture developed by Digital Equipment Corporation PDP-11DesignerDigital Equipment CorporationBits16-bitIntroduced1970; 54 years ago (1970)DesignCISCTypeRegister–registerRegister–memoryMemory–memoryEncodingVariable (2 to 6 bytes)BranchingCondition codeEndiannessMixed (little-endian for 16-bit integers)ExtensionsEIS, FIS, FPP, CISOpenNoSuccessorVAXRegistersGeneral-purpose8 × 16-bitFloating point6 × 64-bit floating-point registers if FPP present Th...

 

2015 film by Francis Lawrence The Hunger Games: Mockingjay – Part 2Theatrical release posterDirected byFrancis LawrenceScreenplay by Peter Craig Danny Strong Adaptation bySuzanne Collins Based onMockingjayby Suzanne CollinsProduced by Nina Jacobson Jon Kilik Starring Jennifer Lawrence Josh Hutcherson Liam Hemsworth Woody Harrelson Elizabeth Banks Julianne Moore Philip Seymour Hoffman Jeffrey Wright Stanley Tucci Donald Sutherland CinematographyJo WillemsEdited by Alan Edward Bell Mark Yoshi...

Chief minister of Travancore-Cochin A. J. John3rd Chief Minister of Travancore-CochinIn office12 March 1952 – 16 March 1954Preceded byC. KesavanSucceeded byPattom A. Thanu PillaiConstituencyPoonjarGovernor of Madras StateIn office1956–1957Appointed byRajendra PrasadFirst MinisterK. KamarajSucceeded byBhishnuram MedhiPreceded bySri Prakasa Personal detailsBorn(1893-07-18)18 July 1893Thalayolaparambu, Travancore, British IndiaDied1 October 1957(1957-10-01) (aged 64)Madras, Mad...

 

American gender studies philosopher (born 1956) Judith ButlerButler in March 2012BornJudith Pamela Butler (1956-02-24) February 24, 1956 (age 68)Cleveland, Ohio, U.S.Education Bennington College Yale University (BA, MA, PhD) PartnerWendy BrownChildren1Era20th-/21st-century philosophyRegionWestern philosophySchoolContinental philosophythird-wave feminismcritical theoryqueer theoryperformative turnInstitutionsUniversity of California, Berkeley The European Graduate SchoolDoctoral advisorMa...

 

Study of computation For other uses, see Computer science (disambiguation). Fundamental areas of computer scienceProgramming language theoryComputational complexity theoryArtificial intelligenceComputer architecture Computer science History Outline Glossary Category vte Computer science is the study of computation, information, and automation.[1][2][3] Computer science spans theoretical disciplines (such as algorithms, theory of computation, and information theory) to ...

Book store in New York City Oscar Wilde BookshopExterior view on Christopher Street in 2007FormerlyOscar Wilde Memorial BookshopIndustryLGBT bookstoreFoundedNovember 24, 1967 (1967-11-24)FounderCraig RodwellDefunctMarch 29, 2009 (2009-03-29)FateClosedHeadquarters15 Christopher Street, New York, New York The Oscar Wilde Bookshop was a bookstore located in New York City's Greenwich Village neighborhood that focused on LGBT works. It was founded by Craig Rodwell on ...

 

2002 American film Not to be confused with Film adaptation. Adaptation.Theatrical release posterDirected bySpike JonzeScreenplay byCharlie Kaufman[a]Based onThe Orchid Thiefby Susan OrleanProduced by Jonathan Demme Vincent Landay Edward Saxon Starring Nicolas Cage Meryl Streep Chris Cooper CinematographyLance AcordEdited byEric ZumbrunnenMusic byCarter BurwellProductioncompanies Columbia Pictures Intermedia Films Magnet Productions Clinica Estetico Productions Distributed bySony Pictu...

 

Biografi ini tidak memiliki referensi atau sumber sehingga isinya tidak dapat dipastikan. Bantu memperbaiki artikel ini dengan menambahkan sumber tepercaya. Materi kontroversial atau trivial yang sumbernya tidak memadai atau tidak bisa dipercaya harus segera dihapus.Cari sumber: Sergio Claudio dos Santos – berita · surat kabar · buku · cendekiawan · JSTOR (Pelajari cara dan kapan saatnya untuk menghapus pesan templat ini) Untuk kegunaan lain, lihat Ser...

Эта статья — о военных формированиях в составе СС. О самой организации см. СС. О структуре СС, ответственной за охрану концлагерей и другие задачи, см. Общие СС Войска ССнем. Waffen-SS Служащие войск СС на Восточном фронте, операция «Барбаросса» (СССР, 1941) Годы суще...

 

State highway in southern Virginia, US For the former State Route 92, see State Route 92 (Virginia 1933-1940). State Route 92Route informationMaintained by VDOTLength28.97 mi[1][2][3] (46.62 km)Existed1940–presentMajor junctionsSouth end US 58 Bus. / SR 707 in BoydtonMajor intersections US 58 in Boydton SR 47 / SR 49 in Chase City US 15 in Barnes Junction North end US 360 / SR 720 near Cl...