• Categorias
    • Desenvolvimiento de software
    • Machine Learning & AI
    • Carreira de programador e dicas
    • Histórias de sucesso
  • Materiais Gratuitos
    • Calculadora CLT x PJ
    • Quiz de Front-end
    • Quiz de Mobile
    • Guia Full Stack atualizado
    • Guia de Negociação Salarial para Devs
    • Modelo de Currículo Internacional
  • Para Talentos
    • Criar perfil gratis
    • Ver vagas
  • Categorias
    • Desenvolvimiento de software
    • Machine Learning & AI
    • Carreira de programador e dicas
    • Histórias de sucesso
  • Materiais Gratuitos
    • Calculadora CLT x PJ
    • Quiz de Front-end
    • Quiz de Mobile
    • Guia Full Stack atualizado
    • Guia de Negociação Salarial para Devs
    • Modelo de Currículo Internacional
  • Para Talentos
    • Criar perfil gratis
    • Ver vagas

Início Qualidade de software: Uma abordagem a testabilidade

  • Foto de Geekhunter Geekhunter
  • outubro 28, 2024
qualidade-de-software

Qualidade de software: Uma abordagem a testabilidade

Neste artigo será abordado sobre a importância da qualidade de software no desenvolvimento de um produto de software, possuindo o intuito de se aprofundar nos conceitos de TDD.

Crie um perfil, conheça as oportunidades e receba propostas alinhadas ao seu perfil. São mais de 1000 vagas para desenvolvedores como você!

Surgimento da qualidade de software

Crise do software

O ato de desenvolver software já existe há bastante tempo, desde meados do século XX mas, nessa época, a engenharia de software era algo inexistente e o desenvolvimento era realizado de maneira intuitiva, o que acarretava em uma série de problemas. 

Os problemas se manifestam de várias formas, como:

• Projetos estourando o orçamento;
• Projetos estourando o prazo;
• Software de baixa qualidade;
• Software que não atendiam aos requisitos;
• Não se pensava sequer em manutenibilidade;

A fim de solucionar o problema da crise do software, na década de 1960, ocorreu a reunião conhecida como NATO Software Engineering Conferences — Conferência sobre Engenharia de Software da OTAN.

Surgindo assim, a engenharia de software, termo empregado por Margaret Hamilton, agora o desenvolvimento de software era tratado como algo sistemático. 

Engenharia de Software é a criação e a utilização de sólidos princípios de engenharia a fim de obter software de maneira econômica, que seja confiável e que trabalhe em máquinas reais


Friedrich Ludwig Bauer

A qualidade de software está contida na engenharia, pois a área de Engenharia de Software possui como objetivo principal a qualidade, ou seja, prover boas práticas na construção de um software.

Qualidade de software

Ao elaborar um projeto de software, o que é imprescindível é que ele possua qualidade, apesar que definir o que é qualidade em si é relativamente complexo, pois deve ser observado por diversos ângulos.

A Sociedade Americana para Controle da Qualidade (ASQC) define qualidade como sendo “a totalidade das características de um produto que determina a sua habilidade em satisfazer um determinado usuário”.

No contexto do desenvolvimento de software:

Qualidade de software é um processo sistemático que focaliza todas as etapas e artefatos produzidos com o objetivo de garantir a conformidade de processos e produtos, prevenindo e eliminando defeitos

Bartié (2002)

qualidade-de-software
Árvore de atributos de qualidade de software de Boehm, Brown e Lipow (1977)

Por sua vez, James A. McCall propôs um modelo de qualidade em seu artigo A framework for the measurement of software quality. Ele organiza os critérios de qualidade de software em três aspectos:

modelo-qualidade-de-software
Modelo de qualidade de software de James A. McCall

Operação

Aspectos relativos ao uso do produto.

  • Corretude: Ele realiza o que é pedido, nada mais e nada menos.
  • Confiabilidade: Ele realiza isso de forma correta.
  • Eficiência: Ele possui performance ao executar uma ação.
  • Integridade: Possui segurança.
  • Usabilidade: É simples.

Revisão

Capacidade do produto ser modificado e evoluído.

  • Manutenibilidade: Fácil de corrigir.
  • Flexibilidade: Fácil de mudar.
  • Testabilidade: Posso testar seu funcionamento.

Transição

Adaptabilidade a novos e diferentes ambientes.

  • Portabilidade: Consigo transferir de um ambiente para outro.
  • Reusabilidade: Consigo utilizar parte dele.
  • Interoperabilidade: Consigo trabalhar com outros softwares em conjunto.

Como escrever um código com qualidade?

Ao codificar uma solução de software pense no seguinte: Se você fizer às pressas a primeira coisa que pensar, então nunca terá tempo para pensar em uma segunda coisa melhor.

Neste tópico, será abordado como escrever código com maestria. Contudo deve ser lembrado que um produto de software vai além de código.

Um livro que aborda detalhadamente como obter êxito ao escrever código de forma coesa é o Clean Code de Robert C. Martin, ele faz isso juntamente com uma série de exemplos em Java.

Alguns conceitos importantes:

Simplicidade

Código simples é melhor que código complexo.

Elegância

Código elegante é melhor que código experto.

DRY (Don’t repeat yourself)

Evite código duplicado.

Design Patterns

É uma solução genérica para um determinado contexto.

Separation of concerns

Separar responsabilidades, ou seja, modularizar a aplicação.

Debugging

Quando um caso de teste encontra um determinado erro, a depuração é feita para se descobrir a causa do erro e corrigi-lo.

Refactoring

De acordo com Martin Fowler e Kent Beck, refatoração é uma alteração feita na estrutura interna do software para torná-lo mais fácil de entender e mais barato para modificar sem alterar seu comportamento observável.

Um livro que aborda sobre o assunto é Refactoring: Improving the Design of Existing Code escrito por Martin Fowler.

DDD – Domain-Driven Design

Projeto orientado a domínio é um padrão de modelagem de software orientado a objetos.

Um livro que aborda sobre o assunto é Domain-Driven Design escrito por Eric Evans.

Agora será abordado sobre o quesito de testabilidade de um software, que é o que separa um código bem elaborado, sem efeitos colaterais, de um código não tão bem elaborado.

Surgimento do teste de software

Engenharia de software clássica

A origem do teste de software não é exata, contudo um marco inicial ocorreu em 1979, com o livro The art of software testing escrito por Glenford Myers.

Nessa época a engenharia de software é dita como engenharia de software clássica, onde os modelos existentes eram o cascata, espiral, prototipação, entre outros.

Esses modelos eram excelentes para resolver os problemas desse tempo, onde os sistemas eram robustos e, a priori, no momento de um teste de software era que tal teste fosse realizado somente depois da construção.

Por consequência, quanto maior o software, maiores os erros que iriam surgir.

Com a popularização da internet, aderiu o conceito de agilidade na hora de se construir um software, principalmente por conta do mercado, que evolui constantemente e necessita de softwares para ontem.

Engenharia de software ágil

Um grupo de renomados programadores se reuniu em Snowbird em 2000, onde originaram o que é conhecido como manifesto ágil — Documento que contém princípios e práticas referentes aos métodos ágeis.

Os métodos ágeis iniciais incluíam Scrum (1986), Crystal Clear, Programação Extrema (1996), entre outros.

Um desses métodos é conhecido como TDD – Desenvolvimento orientado a testes, criado por Kent Beck.

TDD – Test Driven Development

Em português, TDD significa desenvolvimento orientado a testes, de acordo com Kent Beck, TDD encoraja designs de código simples e inspira confiança.

Um livro que aborda sobre o assunto é Test Driven Development: By Example escrito por Kent Beck.

Segundo (Dasgupta, Sanjoy, Papadimitriou, Christos e Vazirani, Umesh 2006): “TDD é primariamente uma técnica de programação que garante que o código de um sistema esteja inteiramente testado de forma unitária.”.

Por que usar Test Driven Development?

  • Evita código desnecessário.
  • Eliminar duplicação.
  • O código fonte do teste serve como uma documentação de casos de uso.
  • Código com mais qualidade e menos efeitos colaterais.
  • Auxilia teste de regressão.
  • Reduz o tempo gasto em depuração e correção de bugs.
  • Refatoração constante.
  • Código de baixo acoplamento.

Ciclo de desenvolvimento

Test-Driven-Development
Desenvolvimento orientado a testes (Test Driven Development)

RED: Escreva um teste que falhe, para uma funcionalidade que irá existir.
GREEN: Escreva a funcionalidade que será usada no teste e faça ela funcionar.
REFACTOR: Refatore o código e deixe elegante.

Até a próxima!

Foto de Geekhunter

Geekhunter

Python IDE
10 melhores IDEs e editores de código em Python para 2025
  • março 18, 2025
o que é commit
O que é Commit e como usar Commits Semânticos
  • dezembro 13, 2024
certificações em TI
10 certificações em TI muito valorizadas hoje
  • novembro 20, 2024
Consultor SAP: o que faz, salário e como se tornar um
  • março 20, 2025
brainfuck
Brainfuck: A linguagem esotérica que desafia programadores até hoje
  • junho 27, 2025
gerente de tecnologia
As principais habilidades de um gerente de tecnologia
  • junho 27, 2025
vagas de TI
Vagas de TI: como encontrar uma que combine com você?
  • junho 26, 2025
Planejamento da equipe de metodologia scrum
Metodologia Scrum: o básico que todo DEV precisa saber
  • junho 24, 2025

Gosta do conteúdo? Assine nossa Newsletter!

Desenvolvimiento de software

Brainfuck: A linguagem esotérica que desafia programadores até hoje

  • Geekhunter
  • junho 27, 2025
Carreira de programador e dicas

As principais habilidades de um gerente de tecnologia

  • Geekhunter
  • junho 27, 2025
Desenvolvimiento de software

Vagas de TI: como encontrar uma que combine com você?

  • GeekHunter
  • junho 26, 2025
Desenvolvimiento de software

Metodologia Scrum: o básico que todo DEV precisa saber

  • Geekhunter
  • junho 24, 2025
Carreira de programador e dicas

Dicas de carreira: como criar seu perfil profissional com foco na área tech

  • GeekHunter
  • junho 24, 2025
AnteriorAnteriorComo fazer web scraping python de maneira fácil e rápida
Próximo4 dicas que te ajudarão a definir o próximo passo na carreiraPróximo

Rod. José Carlos Daux – SC
401, 4120 – km 4, Bairro Saco
Grande – Florianópolis – SC
CEP 88032-005

Para Profissionais
  • Criar Perfil
  • Vagas de tecnologia
  • Blog TI
  • Criar Perfil
  • Vagas de tecnologia
  • Blog TI
Para Empresas
  • Plataforma de Recrutamento Tech
  • Serviço de Recrutamento Tech
  • Nossos Planos
  • GeekAcademy
  • Blog de RHTech
  • Perguntas Frequentes
  • Login Empresas
  • Plataforma de Recrutamento Tech
  • Serviço de Recrutamento Tech
  • Nossos Planos
  • GeekAcademy
  • Blog de RHTech
  • Perguntas Frequentes
  • Login Empresas
A Geekhunter
  • Sobre a GeekHunter
  • Suporte
  • Políticas de Privacidade
  • Termos de Uso
  • Portal LGPD
  • Sobre a GeekHunter
  • Suporte
  • Políticas de Privacidade
  • Termos de Uso
  • Portal LGPD

Add Your Heading Text Here