Crédito:whiteMocca / Shutterstock / N.Hanacek / NIST
Confiamos nossas vidas ao software sempre que pisamos a bordo de uma aeronave de alta tecnologia ou de um carro moderno. Um esforço de pesquisa de longo prazo orientado por dois pesquisadores do Instituto Nacional de Padrões e Tecnologia (NIST) e seus colaboradores desenvolveu novas ferramentas para tornar este tipo de software crítico para a segurança ainda mais seguro.
Aumentando um kit de ferramentas de software existente, a nova criação da equipe de pesquisa pode fortalecer os testes de segurança que as empresas de software realizam nos programas que ajudam a controlar nossos veículos, operar nossas usinas e gerenciar outras tecnologias exigentes. Embora esses testes sejam frequentemente caros e demorados, eles reduzem a probabilidade de este código complexo apresentar falhas porque recebeu alguma combinação inesperada de dados de entrada. Essa fonte de problemas pode afetar qualquer pacote de software sofisticado que deva monitorar e responder de forma confiável a vários fluxos de dados que fluem de sensores e operadores humanos a cada momento.
Com o kit de ferramentas de pesquisa denominado Teste Combinatório Automatizado para Software, ou ACTS, as empresas de software podem garantir que não haja combinações de entrada simultâneas que possam causar inadvertidamente um erro perigoso. Como um paralelo aproximado, pense em um atalho de teclado, como pressionar CTRL-ALT-DELETE para redefinir um sistema intencionalmente. O risco com o software crítico para a segurança é que podem existir combinações que criam consequências não intencionais.
Até agora, não havia como ter certeza de que todas as combinações significativas em sistemas muito grandes haviam sido testadas:uma situação arriscada. Agora, com a ajuda dos avanços feitos pela equipe de pesquisa, até mesmo software que tem milhares de variáveis de entrada, cada um dos quais pode ter um intervalo de valores, pode ser testado exaustivamente.
O kit de ferramentas ACTS do NIST agora inclui uma versão atualizada do Combinatorial Coverage Measurement (CCM), uma ferramenta que deve ajudar a melhorar a segurança, bem como reduzir os custos de software. A indústria de software geralmente gasta de sete a 20 vezes mais dinheiro para tornar confiáveis softwares essenciais para a segurança do que em códigos mais convencionais.
As descobertas revisadas por pares da equipe de pesquisa aparecem em dois artigos que a equipe apresentará em 23 de abril na Conferência Internacional IEEE 2019 sobre Teste de Software, Verificação e validação em Xi'an, China. A pesquisa inclui colaboradores da Universidade do Texas em Arlington, Adobe Systems Inc. e SBA Research da Áustria.
O matemático do NIST Raghu Kacker disse que o CCM representa uma melhoria substancial para o kit de ferramentas ACTS desde sua última grande adição em 2015.
"Antes de revisarmos o CCM, era difícil testar um software que lidasse com milhares de variáveis completamente, "Kacker disse." Essa limitação é um problema para software moderno complexo do tipo que é usado em aviões de passageiros e usinas de energia nuclear, porque não é apenas altamente configurável, também é crítico para a vida. A vida e a saúde das pessoas dependem disso. "
Os desenvolvedores de software têm enfrentado bugs que resultam de combinações inesperadas de entrada por décadas, então, o NIST começou a examinar as causas das falhas de software na década de 1990 para ajudar a indústria. Descobriu-se que a maioria das falhas envolvia um único fator ou uma combinação de duas variáveis de entrada - temperatura e pressão de um dispositivo médico, por exemplo, causando uma reinicialização do sistema no momento errado. Alguns envolveram até seis variáveis de entrada.
Como uma única variável de entrada pode ter uma gama de valores potenciais e um programa pode ter muitas dessas variáveis, pode ser uma impossibilidade prática testar todas as combinações concebíveis, portanto, os testadores contam com estratégias matemáticas para eliminar grandes faixas de possibilidades. Em meados da década de 2000, o kit de ferramentas NIST pode verificar as entradas em até combinações de seis vias, eliminando muitos riscos de erro.
"Nossas ferramentas pegaram, mas no final, você ainda se pergunta o quão bem você se saiu, quão completo foi o seu teste, "disse o cientista da computação do NIST Richard Kuhn, que trabalhou com Kacker no projeto. "Atualizamos o CCM para que ele pudesse responder a essas perguntas."
As próprias ferramentas do NIST foram capazes de lidar com software que tinha algumas centenas de variáveis de entrada, mas a SBA Research desenvolveu outra nova ferramenta que pode examinar software com até 2, 000, gerar um conjunto de testes para até combinações de cinco fatores de variáveis de entrada. As duas ferramentas podem ser usadas de forma complementar:Embora o software NIST possa medir a cobertura de combinações de entrada, o algoritmo SBA pode estender a cobertura a milhares de variáveis.
Recentemente, Adobe Systems Inc. contatou o NIST e solicitou ajuda com o teste de cinco vias de um de seus pacotes de software. O NIST forneceu à empresa os algoritmos desenvolvidos por CCM e SBA, que juntos permitiram à Adobe executar testes de confiabilidade em seu código que foram comprovadamente bem-sucedidos e completos.
Embora o algoritmo de pesquisa SBA não seja uma parte oficial do conjunto de testes ACTS, a equipe tem planos de incluí-lo no futuro. Enquanto isso, Kuhn disse que o NIST tornará o algoritmo disponível para qualquer desenvolvedor que o solicitar.
"A colaboração mostrou que podemos lidar com classes maiores de problemas agora, "Kuhn disse." Podemos aplicar este método a mais aplicativos e sistemas que antes eram muito difíceis de manusear. Convidamos qualquer empresa interessada em expandir seu software a entrar em contato conosco, e compartilharemos todas as informações de que eles possam precisar. "