Quando se fala em Qualidade de Software deve-se ir além do conceito básico da palavra e das aparências.
Ou seja, qualidade de software não é só entregar algo que funcione e/ou tenha um design bonito e atrativo.
A qualidade em um software é medida e acompanhada mediante a diversos fatores e características.
Para entender melhor o porque a Qualidade de Software é tão importante e também entender como a Accurate trabalha esse fator em seus projetos, continue acompanhando aqui.
Entenda o conceito de Qualidade de Software
O desenvolvimento de softwares tem crescido cada dia mais e isso tem demandado das equipes responsáveis maior agilidade, eficiência e continuidade nas entregas.
Somado a isso é preciso sempre manter a alta qualidade do produto entregue ao cliente, nesse caso o software.
Esse fator qualidade é medido de acordo com o que foi pré estabelecido para o projeto junto ao cliente. Portanto, o software entregue deve satisfazer esses pontos.
Sendo assim, um software com qualidade é aquele que atende de melhor maneira o usuário final proporcionando para o mesmo utilidade, confiança, prazer e conforto.
Para garantir a qualidade de um software são necessários vários fatores que podem ser divididos em dois grupos:
- O primeiro grupo diz respeito aos processos de gestão e metodologias de desenvolvimento, que são a base para o levantamento de requisitos;
- O segundo grupo foca-se no artefato técnico produzido pela equipe de desenvolvimento: o código-fonte.
É preciso entender também, que nem sempre é possível entregar um software completo com todas as funcionalidades perfeitas ao cliente.
Por esse motivo, outro fator crucial da qualidade é a melhoria contínua através do acompanhamento e feedbacks dos clientes.
Além de tudo isso que foi apresentado é preciso lembrar que instituições nacionais como a ABNT estabelecem normas e regras para definir a qualidade de um software.
Um dos grandes nortes para isso é a norma internacional ISO 9126 com versão brasileira: NBR 13596 que define características de um software de qualidade.
Porque é importante investir na Qualidade?
Além é claro de garantir a satisfação e atender todas as demandas e necessidades do cliente, garantir a qualidade pode ser ponto positivo em outras áreas.
Softwares com esse fator, fazem com o time de desenvolvedores e a empresa por trás ganhe um diferencial competitivo.
Em especial, esse diferencial é garantido mediante a melhoria contínua do produto através de suportes ao cliente.
Softwares cuja qualidade é garantida, consegue firmar-se no mercado e também acabam por ter melhor custo benefício para o cliente.
E é claro quando o cliente vê a preocupação na entrega de um software eficiente e que seja capaz de lhe atender nas suas necessidades ele se torna fiel à empresa.
Processo de Desenvolvimento da Estratégia
Os pontos-chaves para o desenvolvimento de um software de qualidade são uma boa gestão de processos e da equipe de levantamento de requisitos.
Tudo começa no levantamento de requisitos que garante maior eficiência quando há uma iteração maior com o cliente.
É importante garantir as necessidades implícitas e explícitas, que podem não ser evidentes durante esta etapa.
Após esta primeira etapa, é necessário garantir e monitorar o desenvolvimento de software, pois é durante esta etapa onde se garante grande parte da qualidade do produto final.
Há várias técnicas para garantir a qualidade durante o desenvolvimento, mas podemos nos basear em três etapas: planejamento, garantia e controle da qualidade.
Durante o planejamento definimos as metodologias e critérios de aceite como, por exemplo, um software que necessita de uma performance específica como requisito.
Testes possíveis durante o desenvolvimento
São diversos os tipos de testes possíveis para garantir a qualidade de um software, na tabela abaixo você encontra vários deles:
Tipo de Teste | Descrição |
Teste de Unidade | Teste em um nível de componente ou classe. É o teste cujo objetivo é um “pedaço do código”. |
Teste de Integração | Garante que um ou mais componentes combinados (ou unidades) funcionam. Podemos dizer que um teste de integração é composto por diversos testes de unidade*1 |
Teste de caixa-preta | Testar todas as entradas e saídas desejadas. Não se está preocupado com o código, cada saída indesejada é visto como um erro. |
Teste caixa-branca | O objetivo é testar o código. Às vezes, existem partes do código que nunca foram testadas. |
Teste de Interface | Verifica se a navegabilidade e os objetivos da tela funcionam como especificados e se atendem da melhor forma ao usuário. |
Teste de Performance | Verifica se o tempo de resposta é o desejado para o momento de utilização da aplicação. |
Teste de carga | Verifica o funcionamento da aplicação com a utilização de uma quantidade grande de usuários simultâneos. |
Teste de aceitação do usuário | Testa se a solução será bem vista pelo usuário. Ex: caso exista um botão pequeno demais para executar uma função, isso deve ser criticado em fase de testes. (aqui, cabem quesitos fora da interface, também). |
Testes de Segurança | Testar a segurança da aplicação das mais diversas formas. Utilizar os diversos papéis, perfis, permissões, para navegar no sistema. |
Tabela 1 – Tipos de teste. Disponível em: http://testesdesoftware.com/tipos-de-teste-de-software/
Categorização dos Problemas dentro do Software
Pode ser que dentro do software sejam encontrados problemas no funcionamento ou similares, para isso há uma caracterização específica.
São três as categorizações de acordo com os problemas encontrados:
- Erro é quando há Desvio de Especificação
- Falha se dá pelo Processamento Incorreto ou Comportamento Inconsistente
- Defeito aparece por conta de Instrução ou Comando Incorreto
Categorizando os problemas que podem surgir de acordo com o estabelecido acima poderá auxiliar na solução rápida de problemas.
Dessa forma é possível garantir que a qualidade do software será sempre mantida através da manutenção e correção de problemas.
Metodologia de Desenvolvimento Guiada por Testes ou Test Driven Development- TDD
Para garantir que haja entrega de qualidade e valor ao cliente de forma ágil, surgiu o que chamamos de TDD.
O mesmo é uma técnica de desenvolvimento de software, cujo objetivo é pensar no teste antes de produzir um código.
Este processo permite que haja uma análise mais crítica do requisito antes do seu desenvolvimento, pois, faz com que o trabalho do desenvolvedor seja mais produtivo.
Com o TDD o ciclo de desenvolvimento se divide da seguinte forma:
- Cenário de Teste: Nesta etapa, o desenvolvedor realiza a análise do requisito e propõe um cenário para a realização do teste de forma automatizada;
- Produção: Após levantar o cenário de teste e realizar a sua automação, o código é produzido.
- Execução dos Cenários: Após a produção, os cenários de testes produzidos na primeira etapa são executados e o código é ajustado até o sucesso ser obtido;
- Refatoração: Após a execução realizada com sucesso, é o momento de melhorar o código existente.
Qualidade de Software é com a Accurate
Na Accurate todos os processos especificados e mostrados acima são colocados em prática para garantir sempre a entrega de softwares de qualidade para os clientes.
Se você é um desenvolvedor saiba que aqui na Accurate, além de valorizarmos talentos, estamos com vagas abertas. Acesse a página e cadastre o seu currículo.
Além disso, compartilhe este conteúdo com seus amigos e continue acompanhando as atualizações do Blog da Accurate.
Nos siga nas Redes Sociais! Sempre há novidade por lá e conteúdos bem legais: Facebook, Instagram, Twitter, Linkedin e YouTube.
Autor
- Especializado em arquitetura e tecnologias de software, iniciou carreira profissional como desenvolvedor em meados de 2013. Atualmente atua como desenvolvedor, tech lead e arquiteto em projetos dos mais diversos segmentos de mercado, utilizando metodologias ágeis e tecnologias emergentes com foco em inovação.
2 Comentários
Parabéns pelo artigo!! Testes unitários é de integração são bem simples de colocar em um pipeline de CI já testes de carga exigem um setup mais complicado, vcs automatizam esses tipos de testes também????
Fala Leonardo! Beleza? No caso de teste de carga não costumamos automatizar em um pipeline pois depende de um ambiente réplica de produção e acaba sendo um teste bem custoso em alguns casos. Costumamos automatizar somente via script shell e utilizamos a ferramenta JMeter para esse tipo de teste, já a sua execução é manual e programada junto com uma equipe de devops.