{"id":3187,"date":"2017-12-01T15:07:57","date_gmt":"2017-12-01T17:07:57","guid":{"rendered":"https:\/\/blog.umbler.com\/?p=3187"},"modified":"2018-12-05T09:51:33","modified_gmt":"2018-12-05T11:51:33","slug":"qualidade-de-software-1-7-motivos-para-considerar-o-teste-de-software-indispensavel","status":"publish","type":"post","link":"https:\/\/blog.umbler.com\/br\/qualidade-de-software-1-7-motivos-para-considerar-o-teste-de-software-indispensavel\/","title":{"rendered":"Qualidade de Software #1: 7 motivos para considerar o teste de software indispens\u00e1vel"},"content":{"rendered":"<p>Este \u00e9 o primeiro de uma s\u00e9rie de posts que ir\u00e1 falar sobre qualidade de software. Antes que voc\u00ea saia correndo ao achar que vamos falar sobre teorias intermin\u00e1veis e processos enfadonhos, segura a\u00ed. Preparamos uma forma especial para falar com voc\u00ea sobre esse assunto.<\/p>\n<p>Vamos imaginar uma casa. Ela \u00e9 composta basicamente de alicerce, paredes e telhado. Ent\u00e3o, vamos usar essa analogia para compor a nossa abordagem:<\/p>\n<ol>\n<li><strong>Motiva\u00e7\u00e3o:<\/strong> nosso alicerce ser\u00e1 acreditar no processo de garantia da qualidade atrav\u00e9s do teste de software.<\/li>\n<li><strong>Conhecimento:<\/strong> nossas paredes ser\u00e3o o conhecimento das t\u00e9cnicas, processos e premissas da qualidade de software.<\/li>\n<li><strong>Pr\u00e1tica:<\/strong> nosso telhado ser\u00e1 a propriedade sobre o porqu\u00ea e o como, levando-nos naturalmente a executar o que, agora, conhecemos.<\/li>\n<\/ol>\n<p>Vamos come\u00e7ar? No nosso primeiro post iremos apresentar a motiva\u00e7\u00e3o.<\/p>\n<h2>O que \u00e9 qualidade?<\/h2>\n<p>Vamos come\u00e7ar pelo conceito de qualidade. Voc\u00ea j\u00e1 deve ter pensado nesse conceito v\u00e1rias vezes. E isso provavelmente ocorreu antes de adquirir um produto ou um servi\u00e7o, certo?<\/p>\n<p>Pois \u00e9, se pensarmos a respeito, veremos que nem sempre os nossos crit\u00e9rios de qualidade s\u00e3o claros. Assim, quando pensamos em qualidade, acabamos por nos expressar de diversas maneiras diante das situa\u00e7\u00f5es que nos s\u00e3o impostas. Por exemplo:<\/p>\n<ul>\n<li>\u201cEste produto \u00e9 de qualidade. \u00c9 vis\u00edvel que ele foi bem feito.\u201d<\/li>\n<li>\u201cUau! Que servi\u00e7o de qualidade, muito bem executado!\u201d<\/li>\n<li>\u201cIsso \u00e9 de muito bom gosto, de excelente qualidade.\u201d<\/li>\n<li>\u201cRecomendo esse servi\u00e7o para todos que conhe\u00e7o! \u00c9 um servi\u00e7o de \u00f3tima qualidade e me atende perfeitamente.\u201d<\/li>\n<\/ul>\n<p>As frases acima exp\u00f5em diferentes express\u00f5es relacionadas a aspectos de produtos e servi\u00e7os. As pessoas que falam exp\u00f5em percep\u00e7\u00f5es sobre o processo de fabrica\u00e7\u00e3o, a apar\u00eancia do produto, o <a href=\"https:\/\/blog.umbler.com\/br\/crm-whatsapp-vendas-atendimento\/\">atendimento<\/a> de uma necessidade. No fim, voc\u00ea observou que todas as situa\u00e7\u00f5es expressam, de uma forma ou de outra, o <strong>sentimento de satisfa\u00e7\u00e3o<\/strong>? Pois \u00e9, isso n\u00e3o \u00e9 coincid\u00eancia. \ud83d\ude42<\/p>\n<p>Qualidade, de modo geral, est\u00e1 diretamente relacionada \u00e0s <strong>expectativas dos clientes<\/strong>. Assim, quanto mais um produto ou um servi\u00e7o atende \u00e0s expectativas, maior \u00e9 o <strong>grau de satisfa\u00e7\u00e3o dos seus clientes<\/strong>. Por isso, normalmente existe uma consider\u00e1vel preocupa\u00e7\u00e3o com a experi\u00eancia dos usu\u00e1rios e consumidores. A percep\u00e7\u00e3o do cliente quanto ao atendimento de suas necessidades e de seus desejos \u00e9 equivalente a sua percep\u00e7\u00e3o de qualidade. E isso \u00e9 fundamental para o <strong>sucesso do neg\u00f3cio<\/strong>.<\/p>\n<p style=\"text-align: center;\"><strong>Qualidade \u2192 Satisfa\u00e7\u00e3o<\/strong><br \/>\n<strong>Satisfa\u00e7\u00e3o \u2192 Expectativas atendidas ou superadas<\/strong><\/p>\n<p>A premissa b\u00e1sica de qualquer produto sempre \u00e9 que ele tenha qualidade. Isso porque quando adquirimos um produto ou um servi\u00e7o n\u00f3s esperamos que ele atenda nossas expectativas, sejam elas expl\u00edcitas ou impl\u00edcitas.<\/p>\n<p>Uma defini\u00e7\u00e3o muito interessante \u00e9 citada por Andrii Dzynia, que trabalha como Engineering Coach na Spotify, em sua apresenta\u00e7\u00e3o intitulada <a href=\"https:\/\/pt.slideshare.net\/AndrewDzynia\/quality-built-in\">Quality Built In<\/a>:<\/p>\n<blockquote><p>Quality is a \u2018state\u2019&#8230; when expectations match the reality.<\/p><\/blockquote>\n<h2>Ent\u00e3o, por que qualidade \u00e9 importante?<\/h2>\n<p>Vamos analisar um exemplo da vida real: uma pessoa vai at\u00e9 o mercado e adquire um pote de mostarda para colocar naquela pizza de sardinha que vai preparar em casa. Ela sempre compra a mostarda da mesma marca, porque sabe que suas expectativas s\u00e3o atendidas quanto ao sabor, aroma, consist\u00eancia, embalagem e conte\u00fado (o que tem dentro do pote \u00e9 realmente mostarda).<\/p>\n<p>A partir desse exemplo, somos levados a pelo menos tr\u00eas conclus\u00f5es:<\/p>\n<ul>\n<li><strong>Qualidade leva \u00e0 confian\u00e7a.<\/strong> Se o cliente acredita na qualidade, isso faz com que ele confie no produto e volte a adquiri-lo.<\/li>\n<li><strong>Confian\u00e7a leva \u00e0 popularidade.<\/strong> Aposta quanto que o cliente do exemplo acima j\u00e1 n\u00e3o comentou com a fam\u00edlia ou com os amigos sobre a marca da mostarda que ele tanto gosta? \ud83d\ude42<\/li>\n<li><strong>Capacidade de produzir com qualidade leva \u00e0 confian\u00e7a na marca.<\/strong> O cliente confia que as pessoas que est\u00e3o envolvidas na produ\u00e7\u00e3o do produto ou na execu\u00e7\u00e3o do servi\u00e7o s\u00e3o capazes, respons\u00e1veis e seguidoras das melhores pr\u00e1ticas. \u00c9 a confian\u00e7a no produto sendo levada para a marca.<\/li>\n<\/ul>\n<p>Logo, a percep\u00e7\u00e3o de qualidade de seu produto est\u00e1 relacionada ao <strong>n\u00famero de novos clientes<\/strong> que voc\u00ea ganha, ao <strong>n\u00famero de clientes que permanecem<\/strong> consumindo seu produto (ou contratando seu servi\u00e7o), e ao <strong>n\u00famero de clientes que falam bem de sua marca<\/strong>. E novamente, tudo est\u00e1 relacionado ao atendimento das expectativas de quem est\u00e1 do outro lado do balc\u00e3o. \ud83d\ude09<\/p>\n<p>Com software n\u00e3o \u00e9 diferente. Podemos fazer v\u00e1rios paralelos com produtos e servi\u00e7os de software. No fim, chegaremos nas mesmas conclus\u00f5es. Qualidade \u00e9 um dos fatores decisivos n\u00e3o apenas para a sobreviv\u00eancia, mas tamb\u00e9m para o total sucesso do seu neg\u00f3cio. Por isso, qualidade \u00e9 importante! \ud83d\ude42<\/p>\n<h2>E o teste? Por que ele \u00e9 importante?<\/h2>\n<p>Qualidade \u00e9 um <strong>conceito subjetivo<\/strong>. De fato, mesmo no mundo do software, qualidade est\u00e1 relacionada \u00e0s pessoas, sejam elas usu\u00e1rios, stakeholders, testadores, ou desenvolvedores. E se est\u00e1 relacionado \u00e0s pessoas, sempre teremos margem para ambiguidades, conceitos relativos, aspectos culturais e opini\u00f5es divergentes. Ent\u00e3o, com toda essa subjetividade, como saber que seu software atende aos padr\u00f5es de qualidade esperados?<\/p>\n<p>Basicamente, o <strong>teste de software visa garantir a qualidade, minimizando as incertezas e sistematizando os crit\u00e9rios de aceita\u00e7\u00e3o<\/strong>. Ele ajuda a validar se: as expectativas de todas as pessoas envolvidas est\u00e3o sendo atendidas (e est\u00e3o alinhadas); o software apresenta um bom funcionamento (parte disso est\u00e1 relacionada \u00e0s expectativas impl\u00edcitas &#8211; aquilo que \u00e9 inerente ao produto). Al\u00e9m disso, o teste tamb\u00e9m possibilita realizar verifica\u00e7\u00f5es complexas que um ser humano n\u00e3o conseguiria executar (pelo menos, n\u00e3o facilmente).<\/p>\n<p>Contudo, <strong>teste n\u00e3o \u00e9 um puro sin\u00f4nimo de qualidade<\/strong>. Simplesmente executar testes n\u00e3o significa que o software atende a todos os crit\u00e9rios de qualidade. Os testes tamb\u00e9m precisam de um ciclo de planejamento, desenvolvimento, execu\u00e7\u00e3o e manuten\u00e7\u00e3o. E se essas fases n\u00e3o forem executadas com o m\u00ednimo de cuidado, a consequ\u00eancia pode ser resultados n\u00e3o confi\u00e1veis, verifica\u00e7\u00f5es equivocadas e o abandono da pr\u00e1tica do teste. Por isso, <strong>estude, explore e questione seus testes assim como voc\u00ea faz com seu sistema<\/strong>. Isso levar\u00e1 voc\u00ea a aprimorar o entendimento dos requisitos e a forma escolhida para atend\u00ea-los. Acreditamos que um dos mais importantes benef\u00edcios do teste de software \u00e9 fazer voc\u00ea pensar diferente, suscitando perguntas que voc\u00ea n\u00e3o teria feito em outros momentos. E isso enriquece o seu projeto.<\/p>\n<p>A garantia de qualidade deve acompanhar o software desde a sua concep\u00e7\u00e3o at\u00e9 sua manuten\u00e7\u00e3o. E durante todo o ciclo de vida dele, <strong>todos os envolvidos tornam-se respons\u00e1veis pela qualidade<\/strong>. Ent\u00e3o, o teste nos ajuda a sistematizar a garantia dessa qualidade.<\/p>\n<p>Se voc\u00ea ainda n\u00e3o est\u00e1 convencido que possuir um processo que inclua teste de software \u00e9 indispens\u00e1vel, calma a\u00ed. Agora, vamos apresentar a voc\u00ea sete \u00f3timos motivos para isso, os quais representam benef\u00edcios que s\u00e3o trazidos para o seu projeto a partir dessa pr\u00e1tica:<\/p>\n<h3>1. Alinhar as expectativas<\/h3>\n<p><strong>A pergunta que o teste ajuda a responder aqui \u00e9: Funciona como o cliente espera?<\/strong><\/p>\n<p>Quando testamos, precisamos nos perguntar sobre o que nosso software deveria fazer, isso porque precisamos <strong>saber o que testar<\/strong>. Assim, principalmente os testes focados em aspectos funcionais e comportamentais, evidenciam desalinhamentos entre o que os usu\u00e1rios esperam e o que est\u00e1 sendo produzido. Se o usu\u00e1rio quer um sistema que permita a ele cadastrar fotos e descri\u00e7\u00f5es da sua cole\u00e7\u00e3o de bonsais, o sistema n\u00e3o deveria oferecer um gerador de memes?<\/p>\n<p>Olhar para as especifica\u00e7\u00f5es em frente ao resultado final, somente de modo arbitr\u00e1rio, raramente \u00e9 o suficiente para percebermos expectativas n\u00e3o atendidas ou mal interpretadas. Ao planejar, escrever e executar os testes, somos impelidos a <strong>questionar e a reinterpretar aquilo que foi descrito como requisito do sistema<\/strong>. Assim, esse exerc\u00edcio frequentemente revela problemas na escrita e na interpreta\u00e7\u00e3o da especifica\u00e7\u00e3o, al\u00e9m de problemas no pr\u00f3prio entendimento das pessoas envolvidas no projeto.<\/p>\n<p>Vale lembrar que no centro de todos os prop\u00f3sitos est\u00e1 a satisfa\u00e7\u00e3o do cliente. Logo, \u00e9 a expectativa dele que precisa ser atendida. Por isso, quando planejamos e escrevemos um teste, e tamb\u00e9m quando interpretamos o resultado dele, a pergunta que sempre dever\u00edamos fazer \u00e9: <em>essa situa\u00e7\u00e3o est\u00e1 de acordo com o que o <strong>usu\u00e1rio do meu sistema espera<\/strong>?<\/em><\/p>\n<p>\u201cEu tinha certeza que o usu\u00e1rio queria assim, mas agora n\u00e3o sei mais.\u201d \ud83d\ude41<\/p>\n<p>Provavelmente isso far\u00e1 com que voc\u00ea revisite a especifica\u00e7\u00e3o, consulte novamente os stakeholders, fa\u00e7a um novo teste com um usu\u00e1rio. E no fim, voc\u00ea ter\u00e1 realizado um <strong>incr\u00edvel exerc\u00edcio de amadurecimento de seu projeto<\/strong>.<\/p>\n<h3>2. Pegar o defeito antes do cliente<\/h3>\n<p><strong>A pergunta que o teste ajuda a responder aqui \u00e9: Funciona como o desenvolvedor espera?<\/strong><\/p>\n<p>O que acontece normalmente \u00e9 que voc\u00ea, no papel da pessoa que desenvolve, assume sempre que desenvolveu certo :). Mas voc\u00ea deve concordar que \u00e9 humanamente imposs\u00edvel testar todas as possibilidades existentes durante o funcionamento de um sistema complexo. Ainda mais, sem uma t\u00e9cnica clara e bem definida. Em outras palavras, se j\u00e1 \u00e9 dif\u00edcil imposs\u00edvel detectar todos os defeitos com testes adequados, imagina sem! \ud83d\ude2e<\/p>\n<p>Mas antes que voc\u00ea fique bravo comigo, n\u00e3o estou dizendo que voc\u00ea n\u00e3o sabe programar! Defeitos sempre ir\u00e3o existir, e podem se manifestar em situa\u00e7\u00f5es que nunca haviam sido previstas. Ent\u00e3o, podemos usar as caracter\u00edsticas sistem\u00e1ticas dos testes a nosso favor para minimizar esses problemas! Diferentes n\u00edveis de teste levam a diferentes n\u00edveis de captura de defeitos. E testes automatizados, mais do que qualquer outra instrumenta\u00e7\u00e3o, s\u00e3o uma forma muito confi\u00e1vel de verifica\u00e7\u00e3o cont\u00ednua do software.<\/p>\n<blockquote><p>Quem nunca passou por uma situa\u00e7\u00e3o do tipo \u201cTinha certeza que esse erro nunca iria ocorrer! Como eu iria adivinhar que a atualiza\u00e7\u00e3o dessa biblioteca iria mudar o tipo do dado ap\u00f3s esse parser?\u201d<\/p><\/blockquote>\n<p>Pois bem, sempre ir\u00e1 ocorrer uma situa\u00e7\u00e3o que foge ao controle de quem desenvolve. N\u00e3o podemos confiar na sorte. Ent\u00e3o, precisamos usar ferramentas adequadas para garantir que qualquer altera\u00e7\u00e3o, e tamb\u00e9m novas implementa\u00e7\u00f5es, n\u00e3o estejam guardando surpresas desagrad\u00e1veis. E manter uma boa cobertura de testes, principalmente os automatizados, \u00e9 uma das melhores ferramentas para isso.<\/p>\n<h3>3. Detectar problemas de design da aplica\u00e7\u00e3o<\/h3>\n<p><strong>A pergunta que o teste ajuda a responder aqui \u00e9: Voc\u00ea anda questionando seu projeto?<\/strong><\/p>\n<p>Com certeza, al\u00e9m de t\u00e9cnicas como code review e pair programming, o desenvolvimento de testes a n\u00edvel de c\u00f3digo \u00e9 uma das formas mais baratas e r\u00e1pidas de detectar problemas comportamentais e estruturais de seu software. Isso se deve essencialmente \u00e0 necessidade de tornar o software test\u00e1vel, o que leva a questionamentos sobre a implementa\u00e7\u00e3o. Consequentemente, voc\u00ea passar\u00e1 mais tempo tomando caf\u00e9 em meio a refatora\u00e7\u00f5es aderentes a padr\u00f5es de projeto, boas pr\u00e1ticas, clareza, objetividade e&#8230; testabilidade. \ud83d\ude42<\/p>\n<p>Normalmente se costuma falar em testes de unidade, com os quais se verifica a menor unidade de c\u00f3digo test\u00e1vel do software. Mas outros n\u00edveis de teste tamb\u00e9m ajudam a verificar n\u00e3o apenas se o funcionamento do software est\u00e1 de acordo com o esperado, mas tamb\u00e9m se a forma usada para alcan\u00e7ar os objetivos \u00e9 a mais adequada. Sabe aqueles code smells? Pois \u00e9, o teste te ajuda com isso tamb\u00e9m. \ud83d\ude09<\/p>\n<p>Por exemplo, um teste de performance poderia ajudar voc\u00ea a identificar a necessidade do uso de uma cache. Um teste de unidade poderia indicar que o princ\u00edpio de responsabilidade \u00fanica est\u00e1 sendo ferido em algum ponto. Um teste de integra\u00e7\u00e3o poderia evidenciar o uso inadequado de uma interface. Um teste de componentes poderia alertar sobre uma intera\u00e7\u00e3o desnecess\u00e1ria entre unidades.<\/p>\n<p>Se voc\u00ea j\u00e1 desenvolveu algum tipo de teste de software, j\u00e1 deve ter passado por algum momento que parecia imposs\u00edvel fazer aquele teste, n\u00e3o \u00e9? Se voc\u00ea concordou, essa foi a hora certa para rever sua implementa\u00e7\u00e3o. Saiba que quando o teste est\u00e1 muito (muito mesmo!) dif\u00edcil de desenvolver, \u00e9 um forte ind\u00edcio de que o design de seu sistema pode estar torto. Revise, questione, desentorte e tente novamente. \ud83d\ude42<\/p>\n<h3>4. Manter o sistema est\u00e1vel<\/h3>\n<p><strong>A pergunta que o teste ajuda a responder aqui \u00e9: Voc\u00ea est\u00e1 tendo surpresas com seu software?<\/strong><\/p>\n<p>Possuir uma estrat\u00e9gia de testes adequada, entre outras coisas, oferece uma verifica\u00e7\u00e3o bem estruturada de seu sistema e o benef\u00edcio de garantir seu funcionamento adequado. Mas o que faz brilhar os olhos mesmo s\u00e3o os testes automatizados!<\/p>\n<p>Com <a href=\"https:\/\/blog.umbler.com\/br\/metricas-de-atendimento-no-whatsapp-2026\/\">automa\u00e7\u00e3o<\/a> de testes voc\u00ea pode alcan\u00e7ar uma execu\u00e7\u00e3o muito confi\u00e1vel. Imagina voc\u00ea tendo v\u00e1rios testes automatizados que consegue executar a cada altera\u00e7\u00e3o de seu software? Sim, \u00e9 m\u00e1gica pura! Voc\u00ea consegue detectar os temidos bugs assim que eles aparecem. Voc\u00ea consegue dormir melhor, e os pequenos infartos que voc\u00ea tinha durante o dia diminuem.<\/p>\n<p>Uma situa\u00e7\u00e3o muito comum \u00e9 a confian\u00e7a no <em>feeling<\/em>. Se voc\u00ea trabalha h\u00e1 bastante tempo no mesmo projeto, j\u00e1 deve conhecer cada <em>if<\/em> e <em>for<\/em> como a pr\u00f3pria palma da m\u00e3o. Mas mesmo assim, voc\u00ea \u00e9 um Tiamat de uma cabe\u00e7a s\u00f3, e fica muito dif\u00edcil prever todas as partes do sistema que podem ter sido afetadas. Sem crit\u00e9rios bem definidos de verifica\u00e7\u00f5es, \u00e9 prov\u00e1vel que uma nova vers\u00e3o v\u00e1 para produ\u00e7\u00e3o com alguns bugs intrometidos.<\/p>\n<p>Se voc\u00ea reunir a galerinha da pesada dos testes automatizados, da cobertura inteligente de c\u00f3digo e da alta frequ\u00eancia de execu\u00e7\u00e3o, eles ir\u00e3o se meter em muitas aventuras e em muita confus\u00e3o. Mas no fim da brincadeira, eles v\u00e3o te ajudar a ter um software mais est\u00e1vel.<\/p>\n<h3>5. Melhorar a manutenibilidade do sistema<\/h3>\n<p><strong>A pergunta que o teste ajuda a responder aqui \u00e9: O qu\u00e3o f\u00e1cil \u00e9 manter e testar o seu software?<\/strong><\/p>\n<p>Em poucas palavras, um sistema com alto grau de manutenibilidade \u00e9 um reflexo de sua testabilidade. Simples assim? Quase\u2026<\/p>\n<p>Na verdade, se revisitarmos as outras motiva\u00e7\u00f5es aqui citadas, veremos que o teste \u00e9 um exerc\u00edcio que ajuda voc\u00ea a desenvolver o certo e da forma certa. Ent\u00e3o, se voc\u00ea refatora seu sistema, busca as melhores pr\u00e1ticas, elimina os code smells, existe uma grande probabilidade de que seu software seja algo f\u00e1cil de manter.<br \/>\nA pr\u00e1tica do teste, incluindo planejamento, cria\u00e7\u00e3o e execu\u00e7\u00e3o, far\u00e1 com que voc\u00ea se pergunte: \u201cE agora, como vou fazer para alterar essa parte do sistema?<\/p>\n<p>Preciso dar manuten\u00e7\u00e3o nesse peda\u00e7o de indigna\u00e7\u00e3o, mas sei que terei que refazer TODOS os testes. Que vida injusta!\u201d S\u00f3 tenho uma coisa a te dizer: medo. Se voc\u00ea chegou nessa situa\u00e7\u00e3o, \u00e9 prov\u00e1vel que seu sistema n\u00e3o seja muito f\u00e1cil de alterar. Talvez voc\u00ea devesse buscar alguma melhoria de arquitetura de seu software, buscando uma maior facilidade de manuten\u00e7\u00e3o do seu sistema.<\/p>\n<p>Mas espera a\u00ed! Como que voc\u00ea chegou na situa\u00e7\u00e3o acima se voc\u00ea faz teste? Ah, veja bem, o teste n\u00e3o age sozinho. Ele vai ajud\u00e1-lo a perceber problemas e m\u00e1s pr\u00e1ticas, mas n\u00e3o vai aprision\u00e1-lo nas masmorras de Asgard e obrig\u00e1-lo a fazer certo, sempre. Muita coisa ainda vai depender de seus skills de bom desenvolvedor. \ud83d\ude09<\/p>\n<h3>6. Tornar o trabalho colaborativo mais seguro<\/h3>\n<p><strong>A pergunta que o teste ajuda a responder aqui \u00e9: Voc\u00ea n\u00e3o est\u00e1 quebrando o seu colega, certo?<\/strong><\/p>\n<p>Raramente voc\u00ea estar\u00e1 desenvolvendo sozinho. \u00c9 muito comum que voc\u00ea esteja dividindo o trabalho com outras pessoas. Mas j\u00e1 n\u00e3o lhe aconteceu de fazer uma altera\u00e7\u00e3o e isso afetar outra parte do c\u00f3digo que seu colega havia acabado de desenvolver? E da\u00ed ele simplesmente lhe lan\u00e7ou uma maldi\u00e7\u00e3o de mil anos?<br \/>\nPois bem, ter uma cobertura de testes adequada lhe oferece maior <a href=\"https:\/\/blog.umbler.com\/br\/seguranca-e-privacidade-no-atendimento-com-ia\/\">seguran\u00e7a<\/a> ao fazer uma altera\u00e7\u00e3o. O mundo perfeito \u00e9 aquele onde podemos alterar aquela parte cr\u00edtica do nosso software, executar os testes carinhosamente criados e disponibilizados, e ter um grau consider\u00e1vel de certeza que n\u00e3o afetamos as demais partes do software.<\/p>\n<p>Do mesmo modo, vamos supor que alteramos uma convers\u00e3o de string removendo algum caractere que antes era concatenado. Sem testes, e talvez apenas com nosso feeling, podemos simplesmente verificar que a nossa parte funciona. Ent\u00e3o, vamos promover para produ\u00e7\u00e3o! Uhu! Logo ap\u00f3s 10 minutos em opera\u00e7\u00e3o, seu colega descobre que voc\u00ea removeu uma substring essencial para o funcionamento daquela consulta no banco de dados que ele levou 14 dias para deixar linda. Pronto, voc\u00ea acabou de adquirir mais mil anos de maldi\u00e7\u00e3o.<\/p>\n<p>Desenvolva com consci\u00eancia. Diga n\u00e3o \u00e0s altera\u00e7\u00f5es sem teste!<\/p>\n<h3>7. Garantir a entrega<\/h3>\n<p><strong>A pergunta que o teste ajuda a responder aqui \u00e9: O seu software est\u00e1 sempre funcionando?<\/strong><\/p>\n<p>Como um fil\u00f3sofo, voc\u00ea poderia perguntar: o que significa dizer que o software est\u00e1 funcionando?<\/p>\n<p>Ent\u00e3o, te respondo: v\u00e1 ler o restante do post. \ud83d\ude42<\/p>\n<p>Falamos sobre expectativa e satisfa\u00e7\u00e3o dos usu\u00e1rios, crit\u00e9rios de aceita\u00e7\u00e3o, verifica\u00e7\u00f5es e valida\u00e7\u00f5es. Pois bem, garantir a sua entrega \u00e9 assegurar que esses senhores estejam sendo respeitados. E mais uma vez, voc\u00ea precisa contar com a galerinha do barulho: testes automatizados, cobertura de c\u00f3digo e execu\u00e7\u00e3o frequente.<\/p>\n<p>Pense conosco, se voc\u00ea est\u00e1 com as expectativas alinhadas, detecta os defeitos em tempo de desenvolvimento, est\u00e1 sempre melhorando seu projeto, mant\u00e9m seu sistema est\u00e1vel, faz atualiza\u00e7\u00f5es seguras e trabalha tranquilamente de forma colaborativa, ufa, voc\u00ea \u00e9 naturalmente capaz de garantir cada entrega feita em seu software. E isso ir\u00e1 contribuir muito para a satisfa\u00e7\u00e3o de seus usu\u00e1rios.<\/p>\n<p>E mais uma vez o teste ajudou voc\u00ea a construir um software mais maduro. Uma entrega garantida \u00e9 sin\u00f4nimo de um sistema confi\u00e1vel. Prepare-se para adquirir novos usu\u00e1rios e para fortalecer a perman\u00eancia dos antigos.<\/p>\n<h2>Conclus\u00e3o<\/h2>\n<p>Pronto, agora voc\u00ea est\u00e1 convencido que teste de software \u00e9 indispens\u00e1vel. Aposto meu Tesseract nisso! \ud83d\ude00<\/p>\n<p>Mas lembre-se, voc\u00ea n\u00e3o est\u00e1 sozinho! Al\u00e9m de estarmos com voc\u00ea, a maior parte dos softwares passaram, e passam, por algum tipo de controle de qualidade. Ent\u00e3o, existem muitos livros, materiais digitais e blogs falando a respeito das mais variadas t\u00e9cnicas de teste. Antes de qualquer coisa, explore! \ud83d\ude42<\/p>\n<p>Estamos preparando outros materiais que v\u00e3o explorar mais ainda o mundo da qualidade do software. Esperamos voc\u00ea l\u00e1!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Este \u00e9 o primeiro de uma s\u00e9rie de posts que ir\u00e1 falar sobre qualidade de software. Antes que voc\u00ea saia correndo ao achar que vamos falar sobre teorias intermin\u00e1veis e processos enfadonhos, segura a\u00ed. Preparamos uma forma especial para falar com voc\u00ea sobre esse assunto. Vamos imaginar uma casa. Ela \u00e9 composta basicamente de alicerce, [&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":[281,282],"class_list":["post-3187","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dev","tag-qualidade-de-software","tag-teste-de-software"],"_links":{"self":[{"href":"https:\/\/blog.umbler.com\/br\/wp-json\/wp\/v2\/posts\/3187"}],"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=3187"}],"version-history":[{"count":0,"href":"https:\/\/blog.umbler.com\/br\/wp-json\/wp\/v2\/posts\/3187\/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=3187"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.umbler.com\/br\/wp-json\/wp\/v2\/categories?post=3187"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.umbler.com\/br\/wp-json\/wp\/v2\/tags?post=3187"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}