O Threat Stack agora é F5 Distributed Cloud App Infrastructure Protection (AIP). Comece a usar o Distributed Cloud AIP com sua equipe hoje mesmo .
Todos os projetos de desenvolvimento de software, sejam eles grandes ou pequenos, podem se beneficiar de testes bem planejados e bem executados. É a sua maneira de garantir que o software que você está desenvolvendo tenha o desempenho esperado e ofereça valor ao cliente. Mais importante — dada a natureza do nosso atual cenário cibernético — testes bem executados são sua maneira de garantir que seu software não seja entregue com erros ou vulnerabilidades que possam comprometer sua integridade. Em uma palavra, bons testes permitem que você transmita valor de desempenho aos clientes — ao mesmo tempo em que fornece a eles segurança subjacente.
Na Threat Stack, temos um ambiente de desenvolvimento complexo e completo que exige muito planejamento e tomada de decisões dentro da Equipe de Engenharia de Testes para garantir que todas as áreas funcionais da nossa plataforma sejam testadas de forma eficaz e eficiente. Isso inclui decisões sobre quais ferramentas de teste usar, já que as corretas nos permitem introduzir automação, bem como velocidade, repetibilidade, consistência e precisão dos resultados.
Nesta postagem, discutiremos dez das ferramentas de teste automatizadas que usamos — com o objetivo de compartilhar alguns insights que, esperamos, ajudarão você em suas atividades de teste.
Antes de analisar as ferramentas, no entanto, vamos criar algum contexto examinando as principais áreas que nossos engenheiros de teste levam em consideração quando estão testando nossa plataforma e sua infraestrutura.
Como você pode ver, nosso software cobre muito território e precisa fazer isso de forma rápida, segura, precisa e em escala. Com isso em mente, vamos dar uma olhada em algumas das ferramentas de teste que usamos.
Engenheiros de software em teste, integrados em suas próprias equipes de recursos, não são apenas responsáveis por testar novos recursos e funções que estão sendo constantemente desenvolvidos, mas também por adicionar automação para garantir que o restante do produto ainda funcione conforme o esperado.
Como prova do valor que nossa organização atribui a essas pessoas, cada engenheiro de teste também tem a responsabilidade de recomendar métodos de automação, ferramentas e linguagens que eles considerem apropriados. Abaixo está uma lista de algumas das ferramentas que usamos para nos ajudar em nossos esforços de testes automatizados. Observe que usamos um conjunto de ferramentas mais abrangente no geral; nosso objetivo aqui é discutir uma seleção de ferramentas e lembrá-lo de escolher as ferramentas que funcionam melhor para os projetos específicos nos quais você está trabalhando.
Isenção de responsabilidade: Os recursos mencionados nesta postagem não são classificados em termos de valor percebido. Nossos comentários também não implicam qualquer tipo de endosso. Nossa intenção é simplesmente fornecer informações que acreditamos que podem ser úteis à medida que você aprimora seu conhecimento sobre ferramentas de teste.
Site: https://teamcapybara.github.io/capybara/
Tipo: Gratuito, Código aberto
Apoiar: Grupo Google Ruby-Capivara
Última versão: 3.29.0 (2 de setembro de 2019)
Capybara é a gem Ruby que usamos com Selenium para interagir com nossos testes de automação de interface do usuário baseados em navegador ao executar testes de interface do usuário de ponta a ponta. O Capybara contém métodos integrados que emulam como um usuário pode visitar uma página, preencher uma caixa de texto, clicar em um botão ou selecionar um menu suspenso .
O problema da existência de um testador de software é quando leva uma quantidade absurda de tempo para que elementos da web sejam carregados em uma página, causando falhas de teste inexplicáveis. Cada método fornecido pelo Capybara tem esperas incorporadas automaticamente.
A Capybara testa problemas de experiência do usuário, operando nosso produto da mesma forma que nossos clientes fariam, efetuando login em nosso aplicativo, navegando pelo site, visualizando eventos acionados por nossos sistemas de teste, criando novas regras que controlam quais eventos devem acionar alertas, detalhando informações de alertas encontradas em nosso painel e atualizando várias configurações.
Site: http://gauge.org
Tipo: Gratuito, Código aberto
Apoiar: Grupo GetGauge Google , bate-papo Gitter
Última versão: 1.0.7 (29 de agosto de 2019)
Gauge é uma estrutura de automação de testes criada pelo ThoughtWorks Studio India, que usamos para configurar nossos testes de aceitação de UI e API. Embora combinemos o Gauge com Ruby, ele também é compatível com Java, C#, JavaScript e Python. O Gauge é muito parecido com o Cucumber, o framework BDD, com pequenas diferenças:
Como uma ferramenta de Desenvolvimento Orientado ao Comportamento (BDD), o Cucumber pode se tornar um pouco prolixo, quanto mais complexo for o teste. Com o Gauge, cada etapa é um ponto claro, conciso e fácil de ler. Além disso, o Gauge possui relatórios integrados disponíveis em vários formatos (XML, JSON, HTML). Ele pode ser usado tanto na linha de comando quanto dentro de um IDE como o Visual Studio Code . Por fim, é fornecida ampla documentação para cobrir uma variedade de tópicos, incluindo instalação, redação de especificações, tutoriais de exemplo e muito mais.
Site: https://gatling.io/
Tipo: Versões Enterprise e Open Source
Apoiar: Grupo Gatling Google
Última versão: 3.2.1 (27 de agosto de 2019)
A Gatling fornece testes de carga contínuos aqui no Threat Stack. Escrito em Scala, ele funciona como uma ferramenta autônoma ou pode ser usado como uma dependência do seu produto com Maven .
Como demonstração de sua velocidade e potência, em dez minutos conseguimos gerar três milhões de solicitações em nosso ambiente de teste e conseguimos determinar que todas as solicitações retornaram resultados em menos de 800 milissegundos.
Como BlazeMeter afirma em seu blog, Eight Reasons You Should Use Gatling For Your Load Testing , “Gatling criou um painel de métricas detalhado que você pode ver após a execução dos testes sem precisar adicionar nenhum plugin adicional. O relatório é armazenado como um arquivo HTML, que pode ser facilmente salvo para análises futuras e comparação de métricas. Além disso, o relatório é interativo, o que permite realizar análises mais detalhadas e concentrar solicitações específicas, além do quadro geral.”
Site: https://kitchen.ci/
Tipo: Código aberto
Apoiar: Comunidade Chef.io
Última versão: 2.2.0 (26 de abril de 2019)
Test Kitchen é o produto Chef.io que usamos para automatizar a criação e a desmontagem dos diferentes ambientes do Amazon Web Services que usamos durante nossos esforços de teste. O Test Kitchen é uma ferramenta de teste que você pode usar para executar seu código configurado em uma ou mais plataformas isoladamente. Muitas estruturas de teste são suportadas pelo Kitchen imediatamente, incluindo o Chef InSpec . O Kitchen é usado por todos os livros de receitas da comunidade gerenciados pelo Chef e é a ferramenta de teste de integração preferida para livros de receitas.
Learn.Chef.io tem uma série bem elaborada de módulos de treinamento e demonstrações, incluindo um excelente módulo chamado Introdução ao Test Kitchen .
Site: http://www.scalatest.org
Tipo: Gratuito, Código aberto
Apoiar: Grupo ScalaTest Google
Última versão: 3.0.8 (10 de junho de 2019)
Os engenheiros de teste da Threat Stack começaram a fazer parceria com nossos desenvolvedores de software para escrever testes de serviço para seu código Scala usando o ScalaTest.
Nossos testes de integração usam o traço de estilo ScalaTest, FeatureSpec, descrevendo os testes unitários de estilo de desenvolvimento orientado a testes (TDD) em um formato Dado / Quando / Então. Como o ScalaTest Doc menciona, FeatureSpec é um “conjunto de testes em que cada teste representa um cenário de um recurso. O FeatureSpec foi criado para escrever testes de "nível mais alto" do que os testes unitários — por exemplo, testes de integração, testes funcionais e testes de aceitação.”
A ScalaTest fornece bastante documentação útil em seu site, incluindo um início rápido detalhado, procedimentos de instalação e um guia do usuário.
Site: https://kitchen.ci/docs/verifiers/inspec/
Tipo: Gratuito, Código aberto
Apoiar: Comunidade Chef.io
Última versão: (11 de agosto de 2019)
Na Threat Stack, usamos o Chef InSpec para criar testes baseados em Ruby para verificar se tudo está funcionando conforme o esperado depois que um ambiente de teste é criado dinamicamente. Os testes InSpec foram criados para serem legíveis por humanos. Se você estiver familiarizado com estruturas de teste como RSpec , o código InSpec deve ser familiar. O InSpec detecta discrepâncias e documenta as diferenças no formato de um relatório. Podemos então entrar e fazer as alterações necessárias no Chef para levar o sistema ao estado desejado.
Para começar, o Learn Chef Rally tem um segmento útil que explica como configurar um ambiente Docker e Docker Compose, baixar o ambiente de amostra e explorar o ambiente usando o InSpec.
Site: https://mochajs.org/
Tipo: Gratuito, Código aberto
Apoiar: Grupo Mocha Gitter , Grupo Mocha Google
Última versão: 3.2.1 (27 de agosto de 2019)
Mocha é um framework de teste JavaScript que roda em Node.js e em um navegador, permitindo-nos realizar testes assíncronos. Como os testes do Mocha são executados em série, eles nos permitem relatórios mais flexíveis e precisos, bem como a capacidade de mapear exceções não capturadas para os casos de teste corretos.
Usando o Mocha em um ambiente Node.js, você pode usar o módulo assert integrado como sua biblioteca de asserções. Na Threat Stack, juntamos o Mocha ao Chai para criar a estrutura de teste para a funcionalidade de monitoramento de segurança de aplicativos do Threat Stack .
O site Mocha disponibiliza uma variedade de documentação sobre assuntos que abrangem tudo, desde uma visão geral detalhada dos recursos, instalação e introdução, até informações sobre recursos e tarefas específicas.
Site: https://www.cypress.io/
Tipo:
Apoiar: Gitter chat ; Suporte por e-mail para usuários pagos
Última versão: 3.4.1 (29 de julho de 2019)
O Cypress.io foi criado para desenvolvedores front-end de JavaScript que só precisam testar seu trabalho no Chrome. O Cypress é executado no mesmo loop de execução do nosso aplicativo, o que significa que todas as funções, janelas, elementos da web, temporizadores e serviços que o aplicativo Threat Stack pode acessar, nosso código de teste também pode acessar. Também podemos ler e alterar o tráfego de rede em tempo real, o que nos permite adicionar alguns casos de teste negativos interessantes, como testar o que acontece quando um servidor de backend fica inacessível.
O Cypress.io oferece documentação bem organizada que fornece uma visão geral sólida, informações básicas e conceitos básicos que incluem informações sobre como escrever e organizar testes. Quer ver o que o Cypress pode fazer? A TestAutomationU acaba de lançar um novo curso, Introdução ao Cypress .
Site: https://jestjs.io
Tipo: Gratuito, Código aberto
Apoiar: React Discord Chat , Grupo Google JestJs
Última versão: 24.9 (agosto de 2019)
Nossos desenvolvedores de software full stack mudaram os testes do frontend baseado em ReactJS da Threat Stack Cloud Security Platform do Mocha/Chai para o Jest, que tem melhor suporte integrado para testar os componentes ReactJS que usamos. Com esta estrutura de testes JavaScript, podemos criar melhores testes unitários e de integração. Ambos os conjuntos de ferramentas, ReactJs e Jest, são oferecidos a você pelo Facebook.
Assim como a maioria das outras ferramentas neste post, o site do Jest fornece documentação rica em exemplos abordando como começar, configuração e uma gama abrangente de cenários de casos de uso.
Site: https://jmeter.apache.org/
Tipo: Gratuito, Código aberto
Apoiar: Grupo Google JMeter
Última versão: 5.1.1 (13 de março de 2019)
O Apache JMeter é um software de código aberto projetado para testar a carga do comportamento funcional e medir o desempenho. De acordo com seu site, o JMeter “pode ser usado para testar o desempenho em recursos estáticos e dinâmicos, aplicativos dinâmicos da Web. Ele pode ser usado para simular uma carga pesada em um servidor, grupo de servidores, rede ou objeto para testar sua resistência ou para analisar o desempenho geral sob diferentes tipos de carga.”
Usamos o JMeter para analisar e medir o desempenho de nossos aplicativos e serviços. Isso nos permite testar nosso aplicativo em cargas pesadas, com tráfego de usuários múltiplos e simultâneos, para ver como podemos melhorar nossa capacidade de escalabilidade.
O JMeter disponibiliza uma variedade útil de documentação (incluindo Introdução, Manual do Usuário e Melhores Práticas), bem como vários tutoriais passo a passo.
Por melhores que sejam nossos engenheiros de teste na Threat Stack, eles não iriam longe sem processos sistemáticos apoiados por ferramentas poderosas. À medida que nossa plataforma evolui, nossa equipe continua a aprimorar sua expertise, atualizando continuamente suas habilidades e conhecimento, adotando e incorporando novas ferramentas e desenvolvendo novos métodos para garantir que eles continuem agregando valor ao Threat Stack SDLC. Espero que esta publicação tenha lhe dado alguma visão sobre as maneiras como nossa Equipe de Teste usa uma variedade de ferramentas de teste automatizadas para abordar as múltiplas funções dentro de nossa Plataforma de Segurança em Nuvem.
O Threat Stack agora é F5 Distributed Cloud App Infrastructure Protection (AIP). Comece a usar o Distributed Cloud AIP com sua equipe hoje mesmo .