BT

Disseminando conhecimento e inovação em desenvolvimento de software corporativo.

Contribuir

Tópicos

Escolha a região

Início Artigos Perguntas e Respostas sobre o livro Testing in the Digital Age (Testar na Era Digital)

Perguntas e Respostas sobre o livro Testing in the Digital Age (Testar na Era Digital)

Pontos Principais

  • O livro traz uma nova visão sobre engenharia de testes, usando novos atributos de qualidade que lidam com máquinas inteligentes e um roteiro dividido em cinco estágios.
  • Com tudo digital, há mais possibilidades para automação de testes e pilhas de dados (de teste) crescendo fora de controle. Dashboards inteligentes de teste ajudam a simplificar esse problema.
  • Trabalhar em conjunto com robôs (cobotics), usando inteligência artificial em testes e prevendo a ocorrência de defeitos, traz seus testes para a era digital.
  • Os sistemas complexos não podem ser testados dentro de um prazo específico com uma cobertura aceitável. Precisamos tornar os testes mais inteligentes, ou até mesmo fazer uso de IA para gerar casos de teste para nós.
  • A coleta de dados é muito importante no teste com IA; devemos distinguir entre os dados necessários para a aprendizagem e os para operação.

O livro Testar na Era Digital, de Tom Van de Ven, Rik Marselis e Humayun Shaukat, explica o impacto gerado nos testes pelos desenvolvimentos em áreas como a robótica, inteligência artificial, internet das coisas e big data, e explora os desafios e possibilidades que a era digital nos traz quando se trata de testar sistemas de software.

Os leitores do InfoQ podem baixar uma amostra do livro Testing in the Digital Age .

O InfoQ entrevistou Van de Ven sobre as mudanças e desafios que a era digital trouxe: testar com inteligência artificial (IA) e testes de IA, desenvolvimentos recentes em testes de segurança e privacidade, e desenvolvimento de habilidades em engenharia de testes digitais.

InfoQ: O que fez você decidir escrever este livro sobre testes?

Tom Van de Ven: O ponto de partida foi o fato de que o digital é colocado diante de muitas palavras comuns: transformação digital, esportes digitais, música digital, post digital, gêmeo digital.

Isso me deixou curioso para saber o que tornava os produtos e serviços existentes uma variante digital. O que o torna digital? Para uma carta escrita, é óbvio que a versão digital pode ser uma mensagem de e-mail ou via whatsapp, mas para muitas outras coisas não está claro.

Isso me fez pensar em como os processos de teste precisam mudar com todo esse digital ao nosso redor. O teste digital é diferente do teste regular? Fique tranquilo, muito do que sabemos sobre testes ainda é válido na era digital :)

InfoQ: Para quem o livro é destinado?

Van de Ven: Para chefes de departamentos de engenharia, gerentes de R/D e para os próprios engenheiros. Sobre engenheiros, visamos não apenas os de teste, mas todos os engenheiros envolvidos no desenvolvimento de produtos. Todos podem usar um impulso de qualidade e boas dicas e truques para continuar melhorando os testes na era digital.

InfoQ: Quais mudanças a era digital nos traz?

Van de Ven: Uma fábrica com produtos de montagem de braços robóticos deve funcionar 24 horas por dia e não pode cometer nenhum erro. Robôs devem agir assim. A interação com um chatbot em um site seguro também deve estar disponível 24/7. Este robô deve dar ao usuário a experiência de conversar com uma pessoa real, tendo disponível todas as informações que possa imaginar.

Esses exemplos de soluções digitais têm em comum uma demanda por um alto nível de qualidade. O cliente que opera os robôs (seja numa fábrica ou em um site) exige de seu fornecedor uma resposta quase imediata aos problemas encontrados. Um braço robótico parando ou fazendo as operações erradas interrompe a linha de montagem. O chatbot offline pode significar a perda de potenciais clientes novos.

As soluções digitais podem nos ajudar de maneira excelente. E são caracterizadas por:

1. um alto nível de qualidade

2. a capacidade de receber atualizações rapidamente

3. operação sem paradas (non-stop)

Com as três características de testar soluções digitais, podemos dividi-las no impacto para o teste da seguinte forma:

  • Complexidade

Os produtos e serviços digitais tendem a se comunicar muito mais facilmente uns com os outros. As interfaces estão por toda parte e, com todas as combinações possíveis, a complexidade das funções cresce rapidamente. Com novas tecnologias ao nosso redor, a complexidade de um produto também está crescendo. O poder computacional está disponível por um preço relativamente baixo hoje em dia; isso permite executar algoritmos cada vez mais complexos em altas velocidades.

  • Velocidade

A velocidade do mercado é cada vez maior. As atualizações e novos recursos do produto precisam ser lançados semanalmente. Termos como entrega contínua e integração contínua estão surgindo em todos os lugares.

  • Grandes quantidades de dados

O armazenamento de dados é barato. A internet das coisas (IoT) torna possível medir em qualquer lugar; isso cria grandes quantidades de dados. Os dados podem ser usados ​​como entrada para novos serviços, mas também para testes.

Por outro lado, na era digital podemos testar muito mais automaticamente. A quantidade de produtos de teste (casos de teste, resultados de testes, etc.) está crescendo com a mesma rapidez. Precisamos lidar com isso também.

  • IA

A inteligência artificial está disponível em uma variedade de plataformas digitais (pense em Google.ai, IBM Watson, Microsoft Azure e também em bibliotecas de código aberto em Python). O teste de soluções com IA é diferente, ao contrário do teste clássico, em que um resultado claro é comparado com uma previsão. A AI pode dar respostas diferentes todos os dias.

InfoQ: Como essas mudanças desafiam a maneira como o software é testado?

.

Van de Ven: Os sistemas complexos não podem ser testados dentro de um prazo específico com uma cobertura aceitável. Precisamos tornar os testes mais inteligentes, ou até mesmo fazer uso de IA para gerar casos de teste para nós.

Um bom exemplo para gerar casos de teste pode ser o uso de um algoritmo evolucionário no teste de estacionamento automatizado em um carro. Você pode imaginar que, com o estacionamento automático, a quantidade de situações em que o carro pode estar é quase infinita. A posição inicial pode variar com os carros vizinhos posicionados de muitas maneiras diferentes, ou outros atributos que não podem ser ajustados estão ao redor do carro. A função de estacionamento automático não pode bater em nada durante o estacionamento e o carro precisa ser estacionado de forma correta. Neste caso, podemos gerar uma série de posições iniciais que a função de estacionamento automático precisa resolver. O ideal é que isso seja virtual para que possamos executar muitos testes rapidamente. Poderiam ser testes físicos, é claro, mas levaria mais tempo na execução do teste. Precisamos definir uma função de adequação que é avaliada com cada execução de teste. Neste caso, seria um grau de passagem para o carro estacionado. Pode-se imaginar alguns pontos por não acertar em nada, e pontos no final para quão bem o carro está estacionado. Agora, geramos uma série de testes e os executamos. Cada resultado é avaliado e tem atribuído um valor total de pontos. Com esse valor, o algoritmo evolucionário decide quais casos de teste passam e quais não são mais interessantes. Dividimos os casos de teste (por exemplo, metade das variáveis ​​por caso de teste é dividida) e recompomos em novos casos de teste. Podemos adicionar uma nova série de casos de teste aleatórios nesse mix. Talvez faça alguma mutação aleatória (pode ser definida a taxa de mutação e outras variáveis ​​evolutivas também). O novo conjunto de casos de teste é executado e os resultados avaliados. Cada série é chamada de geração, e com os algoritmos evolucionários, tentamos otimizar a variável da função de adequação com intenção de encontrar um cenário onde a função de estacionar bate em um objeto ou não pode estacionar mais.

Neste caso, usamos a IA para iterar possíveis defeitos rapidamente. Se após uma série (predefinida) de gerações não ocorrer nenhuma falha, concluímos que a função de estacionamento funciona com precisão suficiente.

A coleta de dados é cada vez mais importante para testes:

  • Para o uso da IA ​​nos testes, precisamos de dados. Um mecanismo de auto aprendizagem precisa de dados inseridos no mecanismo para aprender. Distinguimos entre os dados necessários para o aprendizado, teste e operação.
  • Dados em teste: coletamos cargas de dados relacionados a testes, como casos de teste, resultados e defeitos. Precisamos coletar os dados corretos relacionados ao teste para mostrar onde estão os problemas ou para onde olhar quando os dados estão presentes em uma ampla variedade de fontes (sistema de gerenciamento de defeitos, sistema de gerenciamento de testes, fontes de requisitos, etc., todos podem viver em diferentes ferramentas). Precisamos nos aprofundar nos dados de teste e criar dashboards inteligentes de teste. Ao classificar todos os dados diferentes em todos os lugares, um dashboard inteligente pode aprender com as alterações no código (check-ins) e encontrar os casos de teste relevantes para executar e testar os resultados a serem observados.

Finalmente, precisamos criar testes contínuos para Integração Contínua/Entrega Contínua com automação completa de testes, mesmo no domínio físico com robôs: cobotics! Os conjuntos de testes automatizados podem ser implementados com todos os tipos de frameworks de automação de teste. O teste no domínio físico pode exigir que um robô faça tarefas reais. Por exemplo, o teste de duração do cockpit de um avião (em um ambiente simulado) pode ser executado em grande parte por um robô. Talvez iniciar e derrubar o sistema possa ser feito por uma pessoa real, mas voar por horas a fio sem muitas mudanças acontecendo deve ser bom para um robô. Defina o que procurar e colete os dados corretos quando os defeitos ocorrerem, e seu robô está pronto para ir.

InfoQ: Como podemos "testar" se um sistema de IA está realmente aprendendo?

Van de Ven: Vamos afirmar claramente que há uma diferença entre IA em testes e testar a IA. O uso de IA em testes toma forma de muitas maneiras diferentes, como o uso de um algoritmo evolucionário ou machine learning. Talvez não seja necessário um conhecimento profundo de cada algoritmo para operá-lo em um ambiente de teste, mas precisamos saber quais parâmetros podem ser manipulados e com qual efeito. Pensar nos dados necessários para ensinar seu sistema de IA nos testes é muito importante aqui. Tenha em mente que os sistemas de teste de IA podem encontrar problemas locais rapidamente, mas ainda podem perder áreas! O uso de IA é suportado para engenharia de testes por enquanto. Os humanos ainda estão no comando.

Agora, vejamos o teste de uma IA. Isso também é difícil de testar. Uma solução de IA não pode dar a mesma resposta exata na mesma situação. O tempo pode ter um impacto aqui, mas também o que o sistema aprendeu no meio. Precisamos começar a usar as janelas de respostas corretas para verificar se um teste foi aprovado ou não, em vez de comparar com os resultados exatos. O conhecimento do mecanismo de IA também ajuda na busca de situações de teste a serem testadas. Certifique-se de entender a diferença entre dados de aprendizado, dados de teste e dados reais!

A combinação mais difícil em que começamos a testar soluções de IA com tecnologia de IA é algo que temos que adiar por um tempo, até aprendermos mais sobre as duas situações!

InfoQ: Como podemos usar inteligência artificial nos testes?

Van de Ven: O primeiro exemplo de teste de IA já foi dado com o teste de estacionamento automático. Também podemos examinar a seleção do caso de teste: gerar o conjunto correto de casos de teste que se ajustam às alterações no código ou no produto da melhor maneira. Alterações no código podem ter um link fácil para os casos de teste, mas pode haver correlações encontradas com a IA do código para testar que não encontramos, mas realmente ajudam na prevenção de defeitos que ocorrem no campo.

Outro exemplo é o uso de testes de IA em relação às configurações do ambiente de teste. Colete dados do uso de campo e gere dois ou três ambientes de teste que podem ser criados para testes que cobrem a maior quantidade existente. Com IA (um algoritmo evolucionário, por exemplo), isso pode ser acelerado e leva a configurações interessantes. Uma configuração gerada dessa maneira pode não existir na vida real, mas pode realmente ajudar nos testes. Por outro lado, pense sempre sobre os ambientes reais que deseja que sejam cobertos também.

InfoQ: Quais são os desenvolvimentos recentes quando se trata de testar segurança e privacidade? O que o futuro trará?

Van de Ven: Vemos o uso da IA ​​nos testes de segurança chegando. Existem conteúdos em conferências de hackers que estimulam o uso da IA ​​nessa área. Um teste de segurança muito rápido pode ser criado dessa maneira. Com a automação de testes e um bom loop de feedback de IA, os pontos fracos são iterados muito rápido.

Vamos dar uma olhada na grande conferência de hackers DEFCON. Já em 2016, foi realizado um concurso em que os concorrentes precisavam encontrar violações de segurança usando IA. Do ponto de vista defensivo, os profissionais de segurança cibernética já usam uma grande quantidade de automação e análise acionada por máquinas. No entanto, o uso ofensivo de capacidades automatizadas também está em ascensão. Por exemplo, o uso do OpenAI Gym, o kit de ferramentas de código-fonte aberto para algoritmos de aprendizado, pode ser usado em uma ferramenta automatizada que aprende como mascarar um arquivo malicioso de mecanismos antivírus, alterando apenas alguns bytes de seu código de maneira a manter a capacidade do arquivo malicioso. Isso permite evitar medidas comuns de segurança, que normalmente dependem de assinaturas de arquivos - muito parecido com uma impressão digital - para detectar um arquivo malicioso.

InfoQ: Quais são as habilidades de engenharia de testes digitais e o que pode ser feito para desenvolvê-las?

Van de Ven: No futuro, o papel dos engenheiros de teste mudará. Estaremos falando sobre engenharia de teste em vez de engenheiros de teste. Um engenheiro de teste específico não estará mais lá. Haverá engenheiros com uma combinação de habilidades como testes, IA, blockchain, matemática, etc. Em diferentes momentos, um conjunto diferente de habilidades é necessário na engenharia de teste para um projeto. Não serão mais diretamente acoplados a pessoas (engenheiros de teste). É muito mais sobre a formação de equipes multifuncionais que se transformam ao longo do caminho.

As habilidades necessárias na engenharia de teste na era digital correspondem às novas tecnologias existentes. Conhecimento de inteligência artificial é necessário para um; não diretamente para programar os algoritmos, mas pelo menos para usar os algoritmos. É preciso saber quais botões apertar nos algoritmos de IA e quais variantes escolher em determinada situação.

Além disso, diria para escolher a tecnologia com a qual se sente feliz para seaprofundar um pouco mais na teoria por trás dela. Pode ser IA, previsão do tempo, robótica ou impressão 3D. Pode ser que o seu hobby possa ser testado na era digital. Uma vez que sua experiência esteja lá, seu lugar na equipe funcional cruzada toma forma.

A educação sobre esses diferentes tópicos atualmente está disponível em diferentes plataformas MOOC (Massive Open Online Courses) como o Udemy, Coursera ou Pluralsight. Por lá, são oferecidas ótimas maneiras de abordar uma tecnologia (iniciante ou curso de introdução), de aprofundar um pouco mais (com workshops) e, eventualmente, se tornar um especialista (conclua uma série de seis meses de aulas online com tarefas para obter notas ou mesmo um certificado).

Sobre o Autor

Tom van de Ven tem sido ativo no campo de testes de alta tecnologia por 15 anos. Especialista em testes de alta tecnologia, é frequentemente um parceiro dos clientes da Sogeti High Tech no que diz respeito a projetos de teste. É autor dos livros IoTMap e Testing in the Digital Age. Como membro da SogetiLabs e embaixador da SPIRIT dentro do grupo Sogeti, é uma autoridade internacional reconhecida em testes de IoT e High Tech.

Avalie esse artigo

Relevância
Estilo/Redação

Conteúdo educacional

BT