{"id":3400,"date":"2018-01-23T09:30:11","date_gmt":"2018-01-23T11:30:11","guid":{"rendered":"https:\/\/blog.umbler.com\/?p=3400"},"modified":"2018-12-04T17:21:42","modified_gmt":"2018-12-04T19:21:42","slug":"qualidade-de-software-2-as-vantagens-da-automacao-de-testes","status":"publish","type":"post","link":"https:\/\/blog.umbler.com\/br\/qualidade-de-software-2-as-vantagens-da-automacao-de-testes\/","title":{"rendered":"Qualidade de Software #2: As vantagens da automa\u00e7\u00e3o de testes"},"content":{"rendered":"<p>Buenas, pessoal?! E a\u00ed, como foram as festas de final de ano?\u00a0Esperamos que, entre suas promessas para o ano de 2018, uma delas tenha sido: \u201cPelos poderes de Grayskull, farei mais testes!\u201d<\/p>\n<p>Ent\u00e3o, vamos para o segundo post da nossa s\u00e9rie sobre qualidade de software? Se voc\u00ea ainda n\u00e3o leu ou n\u00e3o lembra do primeiro post, d\u00e1 uma olhada l\u00e1:<a href=\"https:\/\/blog.umbler.com\/br\/qualidade-de-software-1-7-motivos-para-considerar-o-teste-de-software-indispensavel\/\"> 7 motivos para considerar o teste de software indispens\u00e1vel<\/a><\/p>\n<p><img fetchpriority=\"high\" decoding=\"async\" class=\"aligncenter size-medium\" src=\"https:\/\/blog.umbler.com\/wp-content\/uploads\/2018\/01\/5c06d3c84025e_giphy.gif\" width=\"282\" height=\"207\" \/><\/p>\n<p>Neste post falaremos um pouco mais sobre motiva\u00e7\u00e3o. Mas, agora que voc\u00ea j\u00e1 acredita que teste de software \u00e9 indispens\u00e1vel, vamos apresentar para voc\u00ea as vantagens da <a href=\"https:\/\/blog.umbler.com\/br\/metricas-de-atendimento-no-whatsapp-2026\/\">automa\u00e7\u00e3o<\/a> de testes.<\/p>\n<p>Veremos alguns dos principais benef\u00edcios que os testes automatizados trazem e o porqu\u00ea deles estarem ganhando terreno cada vez mais. Na verdade, se compararmos com alguns anos atr\u00e1s, observamos que hoje est\u00e1 se seguindo uma onda cultural: as pessoas est\u00e3o se dando conta que a automa\u00e7\u00e3o (n\u00e3o apenas de teste) \u00e9 o principal meio para escalar o desenvolvimento de software no mundo atual e futuro.<\/p>\n<p>Let\u2019s go!<\/p>\n<p><img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/blog.umbler.com\/wp-content\/uploads\/2018\/01\/hip-hop-dance-funny-gif.gif\" \/><\/p>\n<h2>Mas ent\u00e3o, quais os benef\u00edcios da automa\u00e7\u00e3o de testes?<\/h2>\n<p>Bom, j\u00e1 sabemos que fazer verifica\u00e7\u00f5es em nosso software \u00e9 algo indispens\u00e1vel. Testar passou de algo, que era feito quando sobrava tempo, para algo que surge desde a concep\u00e7\u00e3o dos projetos. Assim, passou a ser um fator decisivo na garantia de qualidade a possibilidade de sempre (a cada altera\u00e7\u00e3o) verificar que o nosso software est\u00e1 atendendo \u00e0s expectativas dos nossos usu\u00e1rios.<\/p>\n<p>Mas, a\u00ed aparece algu\u00e9m e fala: n\u00e3o tem como testar tudo sempre! Teste \u00e9 caro, trabalhoso e chato.<\/p>\n<p>Neste momento, eu reajo assim:<\/p>\n<p><img decoding=\"async\" class=\"aligncenter size-medium\" src=\"https:\/\/blog.umbler.com\/wp-content\/uploads\/2018\/01\/5c06d3cc0e884_giphy.gif\" width=\"400\" height=\"275\" \/><\/p>\n<p>Mas depois de alguns minutos meditando ao som de uma melodia celta, tenho que concordar que esse \u00e9 o cen\u00e1rio mais encontrado ainda hoje. Levando em considera\u00e7\u00e3o uma bateria completa de testes manuais, em um sistema complexo (ou nem tanto), torna-se invi\u00e1vel executar todos os testes a cada altera\u00e7\u00e3o do software.<\/p>\n<p>Esse cen\u00e1rio nos leva \u00e0 alguns fatos sobre testes manuais:<\/p>\n<ul>\n<li>Eles s\u00e3o naturalmente lentos, pois precisam de a\u00e7\u00e3o e supervis\u00e3o humanas. Quanto maior o n\u00famero de passos de verifica\u00e7\u00e3o, maior o tempo necess\u00e1rio para que uma pessoa prepare, execute e analise a su\u00edte de testes completa.<\/li>\n<li>Dependendo da forma como s\u00e3o executados, os testes manuais podem n\u00e3o ser confi\u00e1veis. Por exemplo, dependendo da complexidade dos passos de prepara\u00e7\u00e3o e verifica\u00e7\u00e3o, e de sua descri\u00e7\u00e3o, a pessoa que os executa talvez tenha que seguir seu feeling. Assim, algu\u00e9m sem a devida prepara\u00e7\u00e3o pode acabar executando o teste de forma inapropriada.<\/li>\n<li>Uma caracter\u00edstica comum dos testes manuais \u00e9 que eles s\u00e3o apegados ao ambiente. Dificilmente voc\u00ea consegue portar um desses testes para outros ambientes, ou precisa de algum esfor\u00e7o em configura\u00e7\u00f5es para fazer isso. Sabe aquela hist\u00f3ria de que \u201cfunciona no meu PC\/notebook\/celular\/tablet\/Hal 9000\/\u00e1baco\u201d? Pois \u00e9, os testes manuais adoram ouvir essa hist\u00f3ria antes de dormir.<\/li>\n<li>Testes manuais s\u00e3o inerentemente caros, se levarmos em considera\u00e7\u00e3o o custo em aloca\u00e7\u00e3o de pessoas e tempo gasto. Eles exigem uma s\u00e9rie de prepara\u00e7\u00f5es por parte de quem vai executar, a obten\u00e7\u00e3o de evid\u00eancias para montar os relat\u00f3rios de resultados, e assim por diante. No fim, tudo isso tem validade somente at\u00e9 a pr\u00f3xima altera\u00e7\u00e3o do software. \ud83d\ude41<\/li>\n<\/ul>\n<p>Em resumo, nosso desejo \u00e9 poder realizar nossas verifica\u00e7\u00f5es de uma forma escal\u00e1vel, confi\u00e1vel, barata e cont\u00ednua. Para que sempre possamos garantir que estamos atendendo os nossos usu\u00e1rios da melhor forma, sem falhas e com alinhamento de expectativas.<\/p>\n<p>Na verdade, n\u00f3s esperamos que as poss\u00edveis falhas sempre fiquem nos filtros dos testes, e n\u00e3o cheguem at\u00e9 os usu\u00e1rios.<\/p>\n<p>Queremos passar disso:<\/p>\n<p><a href=\"https:\/\/blog.umbler.com\/wp-content\/uploads\/2018\/01\/usuario_ve_falhas.jpg\"><img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/blog.umbler.com\/wp-content\/uploads\/2018\/01\/usuario_ve_falhas-300x154.jpg\" alt='' width=\"300\" height=\"154\" \/><\/a><\/p>\n<p>Para isso:<\/p>\n<p><a href=\"https:\/\/blog.umbler.com\/wp-content\/uploads\/2018\/01\/eu_vejo_falhas.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/blog.umbler.com\/wp-content\/uploads\/2018\/01\/eu_vejo_falhas-300x225.jpg\" alt='' width=\"300\" height=\"225\" \/><\/a><\/p>\n<p>Vamos explorar agora cada um dos benef\u00edcios em se ter e usar testes automatizados. E veremos que tudo se encaixa nas exig\u00eancias atuais para um processo eficiente de desenvolvimento de software.<\/p>\n<h3>Escalabilidade<\/h3>\n<p>Definitivamente, n\u00e3o \u00e9 poss\u00edvel escalar a execu\u00e7\u00e3o de testes manuais. Se considerarmos apenas o tempo que uma pessoa dispensa para realizar o setup e alcan\u00e7ar condi\u00e7\u00f5es minimamente aceit\u00e1veis para confiar no resultado do teste, j\u00e1 conclu\u00edmos que n\u00e3o ser\u00e1 poss\u00edvel fazer essas verifica\u00e7\u00f5es a cada altera\u00e7\u00e3o. Principalmente se forem altera\u00e7\u00f5es muito frequentes.<\/p>\n<p>Logo, com automa\u00e7\u00e3o de testes, n\u00f3s conseguimos manipular nossas verifica\u00e7\u00f5es para atender praticamente qualquer n\u00famero de altera\u00e7\u00f5es. Tamb\u00e9m podemos escalar a execu\u00e7\u00e3o dos testes em localiza\u00e7\u00e3o. Pois, com os devidos cuidados (automa\u00e7\u00f5es e ger\u00eancia de configura\u00e7\u00e3o e dados), os testes se tornam port\u00e1veis para praticamente qualquer ambiente.<\/p>\n<p>Tamb\u00e9m podemos contar com a possibilidade de paralelismo. Em muitos cen\u00e1rios, \u00e9 poss\u00edvel executar testes em paralelo, diminuindo consideravelmente o tempo dispensado para executar uma bateria completa de testes.<\/p>\n<h3>Confiabilidade<\/h3>\n<p>Uma das principais caracter\u00edsticas dos testes automatizados \u00e9 o determinismo. Com certeza, isso exige um cuidado por parte de quem automatiza. Pois, se os testes s\u00e3o aplicados em ambientes sem ger\u00eancia de estado, essa caracter\u00edstica se perde e as execu\u00e7\u00f5es podem se tornar inst\u00e1veis.<\/p>\n<p>Contudo, assumindo um ambiente devidamente controlado e uma ger\u00eancia de configura\u00e7\u00e3o e de dados adequada, podemos dizer que os testes sempre s\u00e3o executados da mesma maneira. E isso os torna naturalmente confi\u00e1veis, ainda mais se comparados a procedimentos manuais.<\/p>\n<p>Se com testes manuais n\u00f3s dependemos da aten\u00e7\u00e3o e conhecimento de uma pessoa, com testes automatizados n\u00f3s temos tudo isso codificado. Ent\u00e3o, qualquer pessoa, at\u00e9 mesmo com pouca experi\u00eancia, consegue executar um teste de forma confi\u00e1vel.<\/p>\n<p>Com o devido processo de revis\u00e3o do c\u00f3digo dos testes e a determina\u00e7\u00e3o adequada do procedimento de verifica\u00e7\u00e3o, podemos confiar que o software foi devidamente coberto e os resultados representam o certo ou errado absoluto.<\/p>\n<h3>Ciclos de feedback mais r\u00e1pidos<\/h3>\n<p>A automa\u00e7\u00e3o de testes, combinada com outras automa\u00e7\u00f5es no processo de desenvolvimento de software, promove ciclos de feedback mais r\u00e1pidos. Problemas de qualidade, configura\u00e7\u00e3o e implanta\u00e7\u00e3o podem ser detectados antecipadamente e tratados de modo a reduzir totalmente (ou quase todo) o impacto no usu\u00e1rio final.<\/p>\n<p>O <a href=\"https:\/\/puppet.com\/resources\/whitepaper\/state-of-devops-report\">State of DevOps Report<\/a> de 2017, oferecido por Puppet e DORA, fala sobre automa\u00e7\u00e3o como uma vantagem das organiza\u00e7\u00f5es de alto desempenho:<\/p>\n<blockquote><p>Automation is a huge boon to organizations.<\/p>\n<p>High performers automate significantly more of their configuration management, testing, deployments and change approval processes than other teams. The result is more time for innovation and a faster feedback cycle.<\/p><\/blockquote>\n<p>A automa\u00e7\u00e3o se tornou um fator competitivo das organiza\u00e7\u00f5es. Se o tempo \u00e9 otimizado com automa\u00e7\u00e3o de processos e tarefas, sobra tempo para atuar naquilo que realmente faz a diferen\u00e7a: <a href=\"https:\/\/blog.umbler.com\/br\/avancos-em-ia-generativa\/\">inova\u00e7\u00e3o<\/a>.<\/p>\n<h3>Redu\u00e7\u00e3o de custos<\/h3>\n<p>Muitas pessoas acham que a automa\u00e7\u00e3o de teste exige um grande esfor\u00e7o e acaba elevando os custos de desenvolvimento. Mas \u00e9 exatamente o contr\u00e1rio. \ud83d\ude42<\/p>\n<p>A automa\u00e7\u00e3o de teste exige um esfor\u00e7o inicial como qualquer outra atividade dentro do desenvolvimento de software. Mas, esse esfor\u00e7o \u00e9 logo compensando. As redu\u00e7\u00f5es de custo se apresentam na forma de:<\/p>\n<ul>\n<li>maior facilidade na obten\u00e7\u00e3o de feedback dos testes \u2192 promove uma execu\u00e7\u00e3o facilitada. Pois possibilita diversos meios de disparo (desde bot\u00f5es em interfaces de ferramentas at\u00e9 uma simples chamada de comando em um terminal). E tamb\u00e9m torna poss\u00edvel uma an\u00e1lise de resultados pr\u00f3-ativa, dado que muitas ferramentas oferecem relat\u00f3rios consolidados e m\u00e9todos de disparo para outras tarefas automatizadas.<\/li>\n<li>menor investimento financeiro em pessoas executando tarefas repetitivas \u2192 as pessoas deveriam ser pagas para realizar tarefas de alto valor, que exijam capacidades cognitivas e racioc\u00ednio que s\u00f3 humanos possuem (coisas que m\u00e1quinas n\u00e3o podem fazer). \u00c9 um grande desperd\u00edcio manter pessoas fazendo tarefas repetitivas e enfadonhas, que aumentam a chance de falhas decorrentes naturalmente de esfor\u00e7os repetidos.<\/li>\n<li>escalabilidade para execu\u00e7\u00e3o a cada altera\u00e7\u00e3o \u2192 escala, tanto em pessoas, quanto em tempo, pois possibilita um n\u00famero menor de pessoas envolvidas com o processo de execu\u00e7\u00e3o de testes e promove um tempo menor em etapa de setup. Isso permite executar os testes com uma frequ\u00eancia muito maior, se comparado com uma abordagem manual.<\/li>\n<li>diminui\u00e7\u00e3o do retrabalho \u2192 com verifica\u00e7\u00f5es podendo ser executadas continuamente, um menor n\u00famero de defeitos chegam at\u00e9 a entrega final do software, diminuindo consideravelmente o custo em retrabalhos.<\/li>\n<\/ul>\n<p>O paper <a href=\"https:\/\/www.infosys.com\/it-services\/validation-solutions\/white-papers\/documents\/end-test-automation.pdf\">End-to-end test automation &#8211; A behavior-driven and tool-agnostic approach<\/a>, publicado pela Infosys, traz uma abordagem que busca reduzir a complexidade da automa\u00e7\u00e3o de testes e torn\u00e1-la ainda mais \u00fatil na promo\u00e7\u00e3o de feedback cont\u00ednuo. Com essa abordagem, eles chegam a citar redu\u00e7\u00f5es entre 40% e 60% no custo de gera\u00e7\u00e3o de casos de teste automatizados, em compara\u00e7\u00e3o com testes manuais.<\/p>\n<h3>Ader\u00eancia \u00e0 cultura DevOps &#8211; CI e CD<\/h3>\n<p>Dentro do contexto das pr\u00e1ticas de desenvolvimento, conhecidas como Continuous Integration (CI) e Continuous Delivery (CD), parte da alma da cultura DevOps, existe a ideia de Continuous Testing. Testar continuamente \u00e9 uma necessidade porque as entregas precisam ser garantidas, o processo de desenvolvimento deve ser flu\u00eddo e falhas em produ\u00e7\u00e3o devem caracterizar rar\u00edssimas exce\u00e7\u00f5es.<\/p>\n<p>Mas ent\u00e3o, como testar continuamente? Automa\u00e7\u00e3o de testes \u00e9 a resposta.<\/p>\n<p>Se seu software est\u00e1 coberto com um conjunto consider\u00e1vel de testes automatizados, saiba que voc\u00ea j\u00e1 tem meio caminho andado para um pipeline de CD.<\/p>\n<p><a href=\"https:\/\/blog.umbler.com\/wp-content\/uploads\/2018\/01\/continuous_delivery_is_so_cool.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/blog.umbler.com\/wp-content\/uploads\/2018\/01\/continuous_delivery_is_so_cool-300x243.jpg\" alt='' width=\"300\" height=\"243\" \/><\/a><\/p>\n<p>Os pipelines de CD s\u00e3o conhecidos por terem etapas de testes automatizados organizados por velocidade de feedback. Isso significa que testes que fornecem resultados mais r\u00e1pidos e focados s\u00e3o alocados nas etapas iniciais do pipeline. J\u00e1 testes mais demorados e abrangentes s\u00e3o colocados nas etapas posteriores. Por exemplo, an\u00e1lise est\u00e1tica e testes de unidade normalmente s\u00e3o os primeiros do pipeline. Pois, fornecem uma resposta muito r\u00e1pida quanto a falhas e irregularidades inaceit\u00e1veis do software.<\/p>\n<p>No fim, apenas testes automatizados s\u00e3o capazes de escalar nesses cen\u00e1rios, tendo em vista que podem ser executados a cada altera\u00e7\u00e3o do software sem interven\u00e7\u00e3o humana e podem ter sua dura\u00e7\u00e3o gerenciada.<\/p>\n<p>Segundo o <a href=\"https:\/\/puppet.com\/resources\/whitepaper\/state-of-devops-report\">State of DevOps Report 2017<\/a>, a automa\u00e7\u00e3o de testes \u00e9 o fator com maior contribui\u00e7\u00e3o positiva no processo de CD:<\/p>\n<div>\n<dl id=\"attachment_3410\">\n<dt><a href=\"https:\/\/blog.umbler.com\/wp-content\/uploads\/2018\/01\/test_automation_devops_report.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/blog.umbler.com\/wp-content\/uploads\/2018\/01\/test_automation_devops_report.png\" alt='' width=\"445\" height=\"501\" \/><\/a><\/dt>\n<dd>2017 State of DevOps Report, p\u00e1gina 34.<\/dd>\n<\/dl>\n<\/div>\n<h2>Quando automatizar vale a pena?<\/h2>\n<p>\u00c9 claro que n\u00e3o podemos automatizar tudo. Embora a automa\u00e7\u00e3o de testes traga muitos benef\u00edcios, existem cen\u00e1rios e situa\u00e7\u00f5es onde isso se torna invi\u00e1vel. Por exemplo, alguns testes como usabilidade e aceita\u00e7\u00e3o do usu\u00e1rio s\u00e3o normalmente escolhidos para serem realizados de forma manual, dada a sua complexidade e din\u00e2mica de execu\u00e7\u00e3o. E de fato, no <a href=\"https:\/\/dzone.com\/guides\/automated-testing-improving-application-speed-and\">Dzone\u2019s Guide To Automated Testing: Improving Application Speed and Quality<\/a>, foram entrevistados 434 profissionais que trabalham com software. Entre esses profissionais, os testes manuais s\u00e3o preferidos para testes de aceita\u00e7\u00e3o (78%), testes de usabilidade (70%) e testes a n\u00edvel de hist\u00f3ria de usu\u00e1rio (63%). Por outro lado, os testes mais comumente automatizados s\u00e3o os testes de integra\u00e7\u00e3o (61%), de unidade (58%) e de desempenho (56%).<\/p>\n<p>Ent\u00e3o, como saber se vale a pena automatizar determinados testes? Abaixo escolhemos alguns fatores que podem ajudar a identificar quando automatizar \u00e9 vi\u00e1vel:<\/p>\n<ul>\n<li>Exist\u00eancia de um processo bem definido<\/li>\n<li>\n<ul>\n<li>Anote todos os pr\u00e9-requisitos, todas as condi\u00e7\u00f5es que precisam ser atendidas antes do in\u00edcio do teste. Depois registre cada passo que precisa ser executado. Por fim, descreva o que precisa ser feito para verificar o resultado.<\/li>\n<li>Fa\u00e7a uma execu\u00e7\u00e3o manual a partir do que voc\u00ea registrou. Verifique se o processo \u00e9 sempre o mesmo, se as fases de execu\u00e7\u00e3o s\u00e3o bem definidas e n\u00e3o precisam de interpreta\u00e7\u00e3o cognitiva. Em caso afirmativo, h\u00e1 grandes chances de que seja um teste automatiz\u00e1vel.<\/li>\n<\/ul>\n<\/li>\n<li>Tarefa repetitiva<\/li>\n<li>\n<ul>\n<li>Se existe uma tarefa que sempre \u00e9 executada do mesmo jeito, sendo totalmente repetitiva, certamente ela \u00e9 automatiz\u00e1vel.<\/li>\n<\/ul>\n<\/li>\n<li>Aus\u00eancia da necessidade de supervis\u00e3o humana (sensores automatizados)<\/li>\n<li>\n<ul>\n<li>Se voc\u00ea consegue iniciar e terminar um teste de forma t\u00e3o tranquila que voc\u00ea at\u00e9 dorme melhor \u00e0 noite, ent\u00e3o \u00e9 quase certo que voc\u00ea consegue automatizar.<\/li>\n<li>Preste aten\u00e7\u00e3o nos \u201csensores\u201d do teste. Eu posso come\u00e7ar o teste a qualquer momento? Eu consigo detectar claramente quando ele termina? Eu consigo detectar o certo ou o errado de modo objetivo?<\/li>\n<\/ul>\n<\/li>\n<li>Calcular o ROI<\/li>\n<li>\n<ul>\n<li>Calcular o retorno de investimento ajuda a identificar a viabilidade da automa\u00e7\u00e3o, verificando quanto, de fato, ser\u00e1 reduzido em custos.<\/li>\n<li>O artigo <a href=\"https:\/\/abstracta.us\/blog\/test-automation\/the-true-roi-of-test-automation\/\">The True ROI of Test Automation<\/a>, publicado no blog da Abstracta, fala de uma forma bem resumida sobre como calcular o retorno de investimento para a automa\u00e7\u00e3o de testes. Inclusive, nesse artigo, \u00e9 citado que os defeitos encontrados e corrigidos na fase de p\u00f3s-entrega chegam a custar cinco vezes mais do que quando encontrados durante a fase dos testes de unidade.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h2>Por onde come\u00e7ar?<\/h2>\n<p>D\u00ea prefer\u00eancia para come\u00e7ar pela parte mais f\u00e1cil e que exija a menor curva de aprendizagem. Em outras palavras, comece pelo tipo de teste automatizado que cause o menor impacto em seu cotidiano e de sua equipe, facilitando a ader\u00eancia dos profissionais.<\/p>\n<p>Normalmente, o teste de unidade \u00e9 o caso ideal para se come\u00e7ar. Al\u00e9m de mais barato, r\u00e1pido e f\u00e1cil de aprender, ele caracteriza o primeiro passo na qualidade agregada. Os testes de unidade est\u00e3o pr\u00f3ximos do c\u00f3digo, s\u00e3o focados e oferecem uma depura\u00e7\u00e3o facilitada.<\/p>\n<p>Se pensarmos bem, o teste de unidade \u00e9 a verifica\u00e7\u00e3o mais b\u00e1sica que poder\u00edamos ter: a verifica\u00e7\u00e3o da menor unidade de c\u00f3digo test\u00e1vel. Ent\u00e3o, com alguns passos b\u00e1sicos, n\u00f3s podemos come\u00e7ar praticando ele:<\/p>\n<ul>\n<li>Analise o que cada unidade (m\u00e9todo\/fun\u00e7\u00e3o) de seu c\u00f3digo est\u00e1 fazendo;<\/li>\n<li>Fa\u00e7a um levantamento do objetivo da unidade que voc\u00ea est\u00e1 desenvolvendo;<\/li>\n<li>Registre os casos de sucesso e de falha poss\u00edveis ao executar essa unidade. Busque todos os caminhos poss\u00edveis. #dica: leia sobre <a href=\"https:\/\/en.wikipedia.org\/wiki\/Cyclomatic_complexity\">complexidade ciclom\u00e1tica<\/a>;<\/li>\n<li>Escreva um teste que represente um caminho dentro da unidade e veja o teste falhar. Depois conserte o teste e veja ele passar. Por fim, melhore o c\u00f3digo do teste e, consequentemente, o da sua aplica\u00e7\u00e3o. #dica: leia mais a respeito de<a href=\"https:\/\/dzone.com\/articles\/pattern-of-the-month-red-green-refactor\"> Red-Green-Refactor<\/a>.<\/li>\n<\/ul>\n<p>E n\u00e3o esque\u00e7a, quando seu teste passar, para dar sorte, voc\u00ea deve fazer assim:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium\" src=\"https:\/\/blog.umbler.com\/wp-content\/uploads\/2018\/01\/5c06d3d1412d6_giphy.gif\" width=\"250\" height=\"303\" \/><\/p>\n<p>Outra abordagem para a escrita de testes de unidade \u00e9 o TDD (Test Driven Development). Vamos falar mais disso em outro post, mas voc\u00ea pode ler mais a respeito no livro Test Driven Development: By Example, do Kent Beck, ou TDD: Teste e Design no Mundo Real, do Maur\u00edcio Aniche.<\/p>\n<p>Os pr\u00f3ximos posts da s\u00e9rie ser\u00e3o mais t\u00e9cnicos. Come\u00e7aremos a colocar a m\u00e3o na massa. \ud83d\ude00<\/p>\n<p>At\u00e9 l\u00e1! E&#8230;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium\" src=\"https:\/\/blog.umbler.com\/wp-content\/uploads\/2018\/01\/5c06d3eba53a6_giphy.gif\" width=\"418\" height=\"360\" \/><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Buenas, pessoal?! E a\u00ed, como foram as festas de final de ano?\u00a0Esperamos que, entre suas promessas para o ano de 2018, uma delas tenha sido: \u201cPelos poderes de Grayskull, farei mais testes!\u201d Ent\u00e3o, vamos para o segundo post da nossa s\u00e9rie sobre qualidade de software? Se voc\u00ea ainda n\u00e3o leu ou n\u00e3o lembra do primeiro [&hellip;]<\/p>\n","protected":false},"author":27,"featured_media":5213,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[23],"tags":[288,289,281,282],"class_list":["post-3400","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dev","tag-automacao","tag-automacao-de-testes","tag-qualidade-de-software","tag-teste-de-software"],"_links":{"self":[{"href":"https:\/\/blog.umbler.com\/br\/wp-json\/wp\/v2\/posts\/3400"}],"collection":[{"href":"https:\/\/blog.umbler.com\/br\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.umbler.com\/br\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.umbler.com\/br\/wp-json\/wp\/v2\/users\/27"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.umbler.com\/br\/wp-json\/wp\/v2\/comments?post=3400"}],"version-history":[{"count":0,"href":"https:\/\/blog.umbler.com\/br\/wp-json\/wp\/v2\/posts\/3400\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.umbler.com\/br\/wp-json\/wp\/v2\/media\/5213"}],"wp:attachment":[{"href":"https:\/\/blog.umbler.com\/br\/wp-json\/wp\/v2\/media?parent=3400"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.umbler.com\/br\/wp-json\/wp\/v2\/categories?post=3400"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.umbler.com\/br\/wp-json\/wp\/v2\/tags?post=3400"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}