Construir um software envolve diversas áreas: comunicação, marketing, equipe de negócios, design, experiência do usuário, equipe técnica e tantos outros envolvidos.
Mas afinal, o que seria construir um software com qualidade?
Essa pergunta pode ter diversas respostas, entretanto, a ISO/IEC 25010 foi criada para ser um alicerce quando falamos em construção de software.
Com ela, podemos avaliar a qualidade de um sistema a partir de princípios que foram desenhados. Cada princípio analisa o software de um ponto de vista.
Nesse artigo, iremos navegar por cada princípio e suas subcaractéristicas e como eles podem nos auxiliar.
Vamos lá?
Adequação funcional
Todo sistema deve permitir os usuários realizarem tarefas específicas. Essa habilidade é chamada de adequação funcional.
Para isso acontecer devemos criar funcionalidades, que esperam alguma ação do usuário para respondê-lo, de acordo com seu pedido.
Eficiência de desempenho
Acredito que todo mundo detesta um software lento. Particularmente eu odeio, fico impaciente e dependendo da situação acabo desinstalando ou deixo de lado.
Esse princípio reflete justamente esse aspecto. O software deve ser capaz de responder em tempo hábil, sem deixar o usuário esperando.
Outros pontos importantes, como por exemplo: a utilização de recursos e sua capacidade.
Compatibilidade
Na minha opinião todo software deveria ser compatível, mas sei que isso não é uma realidade. Principalmente em consoles de video-games, onde existe uma briga de mercado gigante nesse aspecto.
Uma das empresas que mais me irritava nesse sentido era a Microsoft. Bastava lançar uma nova versão do Excel, por exemplo, e a versão antiga já não era compatível com a nova.
Penso que, era uma estratégia de venda para atualizar os softwares, entretanto, nem sempre era viável realizá-la.
A interoperabilidade é a capacidade de executar o software independente da estrutura. Essa caractéristica é muito importante, pois, permite alçancar um número maior de pessoas.
Usabilidade
Usabilidade é a habilidade dos usuários aprenderem de forma simples com o minimo esforço.
Alguns itens necessitam de serem cumpridos para terem uma boa usabilidade.
Como por exemplo:
- Reconhecimento de adequação;
- Aprendizagem;
- Operabilidade;
- Proteção contra erros do usuário;
- Estética da interface do usuário;
- Acessibilidade.
Todas essas subcaracterísticas são importantes, entretanto, quero destacar a acessibilidade.
A acessibilidade é extremamente relevante para a usabilidade. Não temos um software usável sem acessibilidade, ou vice-versa.
Contudo, vale sempre lembrar:
Confiabilidade
Confiabilidade diz a respeito do sucesso de seu software. Ninguém gosta de utilizar algo que não seja confiável.
Ainda mais, com os escandâlos de vazamento de dados recentes, se previnir e usar ferramentas adequadas é essencial.
Comecei a abandonar algumas redes sociais e outros serviços por causa desse princípio.
Quando falamos de confiabilidade, alguns itens são importantes de citar, como por exemplo:
- Maturidade: mede a frequencia de defeitos apresentados;
- Disponibilidade: mede o quanto o software encontra-se disponível para os usuários;
- Tolerância a falhas: como o software reage em situação de falhas;
- Recuperabilidade: capacidade de recuperar de um incidenten.
Segurança
Além da confiabilidade a segurança, no meu ponto de vista, é um dos pontos mais importantes. Afinal, ninguém quer utilizar algo inseguro, não é mesmo?
Sempre quando falamos de segurança, esse conceito vem acompanhado de outros poucos conhecidos, como:
- Confidencialidade: somente sistemas/pessoas autorizadas acessam um recurso;
- Integridade: não permite sistemas/pessoas não autorizadas acessam um recurso;
- Rastreabilidade de uso: rastreia ações do usuário, a fim de, comprovar suas ações;
- Autenticidade: identifica se você é quem alega ser.
Capacidade de Manutenção
Para qualquer sistema a manutenção é muito importante. Quem nunca sofreu com as atualizações do Windows, que atire a primeira pedra. 😂
Mesmo que isso seja incomôdo, é necessário para prevenir ataques maliciosos e permitir que o sistema mantenha-se “sadio”.
Quando a manutenção é realizada, podemos avaliar os seguintes pontos:
- Modularidade;
- Reutilização;
- Analisabilidade;
- Modificabilidade;
- Testabilidade.
Portabilidade
Sempre quando ouço a palavra portabilidade, penso logo, em operadoras de telefonia.
Antigamente, quando precisavamos trocar de uma operadora para outra, era bem complicado. Não tinhamos a capacidade de se adaptar ao novo contexto.
Muitas vezes, essa migração era instável e a capacidade de substituição era praticamente impossível.
Mas tudo teve um final feliz, com o avanço da tecnologia hoje é possível realizar isso de forma quase instantânea.
Com a portabilidade, hoje temos a autonomia de poder decidir quando trocar para um serviço que nos atenda melhor.
- Adaptabilidade;
- Instalabilidade;
- Capacidade de substituição.
Esses são os princípios que norteiam o trabalho e tipos de testes de um QA. Além disso, existem 21 qualidades que todo QA deve ter.
Bônus: indicação de livros
Para concluir gostaria de deixar algumas indicações de leitura. As três indicações são valiosas bases para o conhecimento em testes de software. Entretanto, não são as únicas gosto bastante delas.
- Base de conhecimento em teste de software;
- Introdução ao teste de software;
- Lessons Learned Software Testing Context Driven.
Conclusão
Concluíndo, os princípios de qualidade de software levaram você ter uma visão muito mais ampla sobre qualidade.
E conseguirá de fato medir a qualidade baseada em itens sólidos.