O que testar?
- Paulo Ricardo Siqueira Soares
- Aug 10, 2023
- 5 min read
A última grande pergunta que temos nos testes de software tem relação com os tipos de testes a serem realizados em determinados momentos, melhorando assim o foco dos testes.
Testes de Funcionalidade
São testes baseados nos requisitos do sistema. Quando os requisitos dos sistemas são descritos, uma gama de funcionalidades, ou seja, ações que o software deve tomar são elucidadas, e os testes de funcionalidade certificam-se que essas funcionalidades atendem a demanda do software.
Testes de funcionalidade são executados em diversos níveis e em diversos momentos sendo assim eles englobam.

- Testes Unitários;
- Testes de Integração;
- Testes de Sistema;
- Testes de aceitação;
- Testes de regressão;
Um bom resumo seria – O Software faz o que deveria fazer?
Testes de Desempenho

Os testes de desempenho tem como objetivo encontrar o tempo de resposta do software, conforme o cenário.
Os tempos de resposta de software na grande maioria dos casos, não possuem um valor crítico determinado, possuem expectativas pelos usuários ou pelo responsável da demanda de software.
É importante frisar que quando falamos de software de controle, estamos lidando com o tempo de resposta do software nesse teste e não com o tempo de ciclo de uma linha ou tempo de produção, nesses casos são avaliados através de teses de desempenho da linha/equipamento e durante testes funcionais, uma vez que pode ser pré-determinado que a funcionalidade da linha está diretamente relacionada a sua capacidade de produção, porém são itens que não dependem puramente do software e sim do conjunto do equipamento em si.
Um exemplo de valor crítico determinado para testes de desempenho seria por exemplo o tempo de processamento de uma rotina de PID, nesse caso será avaliado o tempo de resposta de dessa rotina como pré-requisito para garantir uma funcionalidade de um PID crítico que é corrigido em um intervalo de tempo específico, mais uma vez essa análise é feita pelo tempo de resposta do controlador em conjunto com o software desenvolvido, um dos erros que se pode encontrar é falta de optimização do algoritmo e/ou falta de capacidade computacional do controlador.
Teste de Usabilidade
De acordo com a ISO/IEC 9126, a usabilidade se diz à capacidade de um produto ser compreendido, aprendido, integro, operacional e ser atrativo ao usuário em condições especificas de utilização.

Dentro das características da usabilidade de software, podemos destacar:
Inteligibilidade: Capacidade do produto de software de ser compreensível ao usuário, se o software é apropriado e como ele pode ser usado para tarefas e condições de uso específicas.
Apreensibilidade: Capacidade do produto de software possibilitar ao usuário aprender sua aplicação.
Operacionalidade: Capacidade do produto de software em relação ao usuário operá-lo e controlá-lo.
Proteção frente a erros de usuários: como produto consegue prevenir erros dos usuários;
Estética/Atratividade: Capacidade do produto atrair um potencial usuário para o sistema, o que pode incluir desde a adequação das informações prestadas para o usuário até os requintes visuais utilizados na sua interface gráfica, para permitindo por exemplo sua correta utilização (muito relacionado a experiência do usuário na utilização do software);
Acessibilidade: refere-se a prática inclusiva de fazer softwares que possam ser utilizados por todas as pessoas que tenham deficiência ou não. Quando os softwares são corretamente concebidos, desenvolvidos e editados, todos os usuários podem ter igual acesso à informação e funcionalidades;
Conformidade: Relacionado a capacidade do produto de apresentar normalidade quanto às convenções, guias ou regras/regulamentações relacionadas à usabilidade.
Problemas referentes a usabilidade, interferem na produtividade, levam o usuário/operador a erros, dificultam a leitura de dados essenciais, dificultam o entendimento de mensagens de falhas e alarmes.
Basicamente é o teste focado na experiência do usuário para atingir os objetos de operação do sistema.
Vale lembrar quem existem algumas normas que auxiliam o desenvolvimento de interfaces para máquinas e equipamentos para ajudar a torná-las mais amigáveis, como a ISA 101 e a própria NR12 com sua relação de cores.
Talvez a melhor pergunta dentro desse é teste seja: O quão fácil você utiliza o software?
Teste de Segurança

Quando falamos de testes de segurança de software, no caso de automação industrial, podemos dividir em 2 tipos de segurança.
Cyber Security: Relacionado a segurança de informação trocada pelo sistema, com preocupações como invasões ao sistema, vírus, etc.
Segurança de Operação: relacionado a segurança dos equipamentos e operadores, nesse caso variando de acordo com as normas vigentes para cada tipo de processo/máquina/linha produtiva.
Os testes de segurança devem assegurar que o sistema atenda aos pré-requisitos determinados para Cybersecurity e Segurança de operação.
Teste de Stress

Os testes de stress asseguram que o sistema suporta as cargas necessárias para operação, do ponto de vista de software verificamos se o uso da memória é optimizado, por exemplo, sendo capaz de se manter em execução por muitas horas ou dias sem necessidade de intervenção, os testes de stress de software quando falamos de automação, são executados junto ao teste de stress do equipamento/linha de produtiva, em si, o que torna um teste longo e também de difícil análise, uma vez que uma falha física do sistema, pode interferir no teste de stress do software. Muitos desses testes estão relacionados a capacidade produtiva do sistema, onde através de um estudo de aplicação determina-se a quantidade de tempo ou ciclos que o sistema e o software devem suportar sem nenhuma interferência para ser considerado robusto o suficiente.
Testes de Portabilidade
Muito utilizado para aplicativos voltados para TI que enfrentam uma série de sistemas operacionais e plataformas (por exemplo um website se apresentável em diversos navegadores).

Em automação a portabilidade é mais limitada, inclusive pelos softwares de controle serem desenvolvidos para plataformas específicas, porém existe uma situação que são muito úteis.
No desenvolvimento de padrões de programação, muitas vezes é desejável que um bloco de função possua a exata mesma lógica (o famoso copiar e colar), para várias plataformas (diferentes fabricantes), neste caso esses blocos devem ser desenvolvidos sem levar em conta características específicas de cada CPU ou fabricante, apenas utilizando os conceitos puros da IEC6113-3, neste caso os testes de portabilidade são essenciais, para assegurar que a mesma lógica funcione nos fabricantes determinados e as eventuais mudanças para eu tenha-se um bloco único, a vantagem nesse caso é ter uma documentação padrão única para vários fabricantes utilizando a mesma lógica, a desvantagem é não poder otimizar o software para usar melhor as qualidades das CPUs.
Conclusão
Definir os tipos de testes e o momento de aplicá-lo, aumenta a qualidade do software, mitiga riscos do projeto em que o software está envolvido e assegura que o software está alinhado aos requisitos do usuário final. Testes de funcionalidade, são executados durante todo o ciclo de vida, cada tipo de teste funcional para cada momento do ciclo de vida, testes de segurança, usabilidade são geralmente executados em testes de integração e aceite, enquanto testes de stress são comumente utilizados durante os testes de aceite finais.
Bibliografia:
Foundation LevelSyllabus - Versão 2018br - Brazilian Software TestingQualifications Board - BSTQB



Comments