Integração ServiceNow Change Management com Azure Pipelines – Parte I

Já abordamos em posts anteriores os temas – Habilitando o Continuous Deployment em empresas regidas por SOX e Change Management e DevSOXOps com Azure DevOps para discutir como as empresas regidas por compliance realizam frequentemente deploys de releases, em meio ao processo de change management.

Se por um lado, o Azure DevOps possui o Pipeline de Build e Release para criar as esteiras de implementação e gerenciar o ciclo de vida da aplicação, o ServiceNow é uma solução completa de IT Service Management, possuindo entre outros, o Incident Management, Problem Management, Change and Release Management, Request Management, etc.

Resultado de imagem para the visible ops

O livro The Visible OPS publica a implementação do ITIL em quatro passos práticos e auditáveis: 1) Core do ITIL 2) Processo de controle bem definido, mas que pode ser leve e ágil 3) O objetivo do processo e intersecções com DevOps 4) Buscar caminhos alternativos para atingir o objetivo esperado.

A Microsoft lançou a integração do Azure DevOps com o ServiceNow, incluindo a extensão do ServiceNow no pipeline de release. A ideia é reduzir os riscos associados ao processo de gestão da mudança, incorporando os benefícios de práticas DevOps como redução do tempo de deploy, intervenções manuais etc com os controles de gestão de serviços.

E assim, podemos por exemplo, criar uma nova requisição ou atualizar o status de uma change, utilizando o recurso de Gates do Azure DevOps. Vamos começar pelas instalações! Os primeiros passos são:

1. Instalação da extensão do ServiceNow no Azure DevOps

service-now-change-mgt-extension

2. Solicitar uma nova instância no ServiceNow Developers no ServiceNow. Esta instância deve ser non-developer.

service-now-developers

3. Instalação do App Azure Pipelines no ServiceNow. Necessita de HI credentials (algum administrador da conta no ServiceNow pode conceder esta permissão) ou ser Technology Partner Program.

service-now-store

E atribuir a permissão de x_mioms_azpipeline.pipelinesExecution ao usuário que será utilizado no Service Connection do Azure DevOps (para criar a conexão com o ServiceNow).

user-role-sn

E a Parte I encerra aqui… no próximo post vamos compartilhar as configurações necessárias no Azure DevOps e ServiceNow para concluir a integração.

 

Gerenciando dependências de Work Items no Azure DevOps

Como você gerencia a dependência das atividades entre seus times? Ou até mesmo dentro do próprio time? Quando abordamos ágil em larga escala utilizando o SAFe e Azure DevOps nos projetos, vimos a importância de gerenciar as dependências e como os eventos de PO Sync e SoS (Scrum of Scrums) podem apoiar neste ponto.

Azure DevOps possui o recurso Link no Work Item que permite referenciar:
link Work items –com– Work items
link Work items –com– Test cases (Test cases –com– Test items e Test results)
link Work items –com– code-related objects (branches, commits, pull requests, etc.)
link Git code-related objects –com– builds
link Work items –com– link na web
link Work items –com– Diagramas de arquitetura

Work item link typesImagem: Docs Microsoft

Link entre Work Items
As referências podem então ser utilizadas para gerenciar as dependências entre as atividades. O link Predecessor-Successor define que o work item precisa ser concluído antes do início de outros (muito utilizado quando o plano de trabalho é feito no Project). O link Related é utilizado para relacionar work item do mesmo nível com features que se sobrepõem (por exemplo entre user stories) ou em diferentes projetos / times.

link-related

Em Boards > Sprints podemos visualizar as referências criadas. Para isso, adicione a coluna “Related Link Count” e será exibida a quantidade de links daquele work item. Clicando no próprio work item (exemplo: user story 01), podemos visualizar quais são os work items relacionados a ele.

related-wi

Quando há mais de um work item aberto com o mesmo propósito, o link  Duplicate ajuda a controlar os itens duplicados. Você pode manter apenas um ativo e identificar os demais como duplicate. O link Parent/Child é usado para quebrar work items em tarefas menores, por exemplo, features em user stories.

Ao adicionar uma nova Task na Sprint, se estiver abaixo de uma User Story, a relação (related work) do tipo Parent já é automaticamente criada entre a Task e a User Story.

wi-azure-devops

Para mais detalhes sobre o uso de links e referências, recomendo este site da Microsoft: Link Type Reference.

Link entre Work items e artefatos de código e builds
Outro tipo de link interessante é relacionar os Work items com o código-fonte da aplicação. Isso ajuda o rastreamento e inspeção das modificações realizadas no código-fonte. O link pode ser feito no Work item com os artefatos (como demonstrado anteriormente) ou inserindo o ID do Work item em uma das operações suportadas pelo Git ou TFVC (commit, pull request, changeset, etc.).

Artifact-to-artifact link typesImagem: Docs Microsoft

Usando o desenvolvimento orientado a hipótese com Azure DevOps

Lembrando que o HDD é um processo orientado a hipótese com foco principal em validação das ideias sob a perspectiva de geração de ROI e satisfação dos usuários. Para isso, um processo maduro de CI (Continuous Integration) e CD (Continuous Deployment) habilita a esteira de validação de ideias e suporte imediato.

Ao formular as hipóteses, utiliza-se os conceitos da experimentação, e por isso a user story é insuficiente para verificar se a hipótese está correta. Na HDD criada, existe uma validação de hipótese referente a uma campanha promocional que pode aumentar a taxa de conversão.

Iniciando a implementação do HDD em um time cross functional – Desenvolvedores, UX, SM (Scrum Master), PO (Product Owner) e QA, precisando validar uma ideia de plataforma de inscrição online para um evento. Algumas discussões surgiram durante a fase de inception para criação do produto:

  • E se uma campanha promocional estiver disponível durante 2 semanas? Talvez melhore a taxa de conversão? Os usuários que não aproveitarem a promoção podem repercutir negativamente?
  • E quanto isso custa? Você consegue estimar?
  • E se ao invés de estimar, checarmos se vale a pena implementar? Acredito que realizando testes A/B podemos verificar a aceitação do público. E se aumentarmos a conversão em 10% já valeria a pena implementar.

E como ficaria tudo isso criando histórias de hipóteses (ao invés de histórias de usuários):

HDD-azure-devops-01

We believe that uma campanha promocional de 2 semanas
Will result in
melhoria na conversão da inscrição
We will know we have succeeded when evoluirmos a taxa de conversão em 10% do início ao final da campanha promocional.

E assim, o Product Owner prioriza este desenvolvimento com o time e a implementação deve ocorrer em breve para confirmar se a hipótese irá gerar o valor idealizado. O time começa então a execução do backlog em gestão ágil com práticas CI/CD e apoio total do time de UI/UX para criação dos layouts e experiência do usuário. O resultado do primeiro protótipo foi aprovado e esta é a versão colocada em produção:

prototipo-marven

E após as duas semanas, verificando o progresso diariamente da conversão, o objetivo foi alcançado. Nesta jornada, foi muito importante o mindset ágil da empresa, operando com práticas DevOps e arquitetura bem estruturada que possibilitam a inovação de produtos. Ao confirmar a hipótese, podemos adotar um exemplo de aumento em receita de R$ 78.000, justificando assim um desenvolvimento na plataforma de 160 horas para implementação desta funcionalidade.

 

Cases de sucesso

A empresa Hello Group apresentou o uso do HDD com outras técnicas como Google Design Sprints e os livros Lean UX e The Innovator’s Hypothesis para validar hipóteses no mercado, aplicando quatro etapas: 1- Verbalize as hipóteses de que sua ideia é baseada 2- Definir a hipóteses mais críticas que pode ser testada com o menor esforço 3- Faça um plano de como testar sua hipótese 4- Descarte ou ajuste sua ideia.

Outra case de Desenvolvimento Orientado a Hipóteses é da empresa Lastminute.com, divulgado pelo CEO Tom Klein da Sabre Holdings, em que a taxa de conversão aumentou 400% em uma semana devido ao retorno da hipótese que considerava a aquisição da hospedagem premium por usuários em um hotel, de acordo com o período do dia em que eles efetuavam a reserva. A combinação das práticas HDD e CD (Continuous Delivery) amplificam o conhecimento validado, acelerando a experimentação e inovação.

Métricas de HDD (Hypothesis-Driven Development) no Azure DevOps

As métricas são essenciais quando trabalhamos com HDD (Hypothesis-Driven Development), pois direcionam as decisões e proveem visibilidade sobre a aceitação dos produtos ou serviços. Há algumas recomendações na adoção de métricas para não se tornarem irrelevantes ao seu negócio.

Actionable metrics são exemplos de métricas consideradas importantes, pois resultam em ações específicas e repetíveis no apoio a tomada de decisão e cumprimento dos objetivos. A abordagem HDD pode ser utilizada neste contexto para desenvolver e experimentar implementações que adicionem valor ao negócio. Comece com poucas métricas e que façam sentido para o seu time.

O metrics that matter, definido por Dave McClure como AARRR Pirate Funnel Metrics, possui as seguintes métricas para acompanhamento:

  • Acquisition: número de usuários que visitam o serviço ou produto. Esta métrica precisa garantir o acompanhamento correto da fase de aquisição e quantidade de conversão de clientes. Por exemplo, qual o maior volume nos canais de venda? Qual a melhor performance entre os canais?
  • Activation: mensura como está a resposta inicial dos usuários em relação a ativação do serviço. Como foi a experiência do usuário na sua primeira visita? Tempo de permanência, page views, cliques, entre outros são boas métricas. Os testes A/B podem apoiar com landing pages e conteúdo para obter melhor experiência.
  • Retention: a retenção dos clientes, mantendo por perto as pessoas que se inscreveram e utilizam um dos serviços. A automação de e-mails, por exemplo, baseada em eventos ou atividades podem apoiar de forma simples.
  • Revenue: número de pessoas engajadas com a geração de receita.
  • Referral: referências de usuários que encorajam outros a utilizarem seus produtos e serviços. Os testes qualitativos são aplicáveis a um número menor de usuários para depois disseminar o produto a um número maior de usuários.

AARRRFigura: AARRR Pirate Funnel Metrics

Com o uso do AARRR, um dashboard de acompanhamento para cada categoria é importante para dar visibilidade as áreas: quantitativa (análise de tráfego e engajamento), qualitativa (teste de usabilidade e monitoramento da sessão), comparativa (testes A/B) e competitiva (monitoramento e rastreamento do mercado). Veja no dashboard abaixo algumas métricas desde a etapa de acquisition até a revenue.

AARRR-Pirate.jpgFigura: AARRR Pirate Funnel Metrics

Um outro exemplo de utilização do AARRR pela Apptentive, que demonstra o funil aplicado a um produto de Mobile App. Na fase de Acquisition, mensura-se a quantidade de downloads, instalações e visitas na página. Em Activation, mais direcionado ao uso – tempo de permanência e telas visualizadas. A Retention verifica a permanência, considerando usuários ativos por mês e frequência do uso. Em Referral, além das referências, as avaliações e revisões dos usuários sobre o produto. Por fim, Revenue considera a monetização como a receita média por usuário e compras do App.

mobile-app-funnel.pngFigura: The Mobile App Customer Purchase Funnel Cheat Sheet

Em uma visão adicional do AARRR, também de Dave McClure, fica bem claro o exemplo da aplicabilidade para cada métrica. Começando com a conversão de tráfego, seguida da análise pós inscrição e assinatura. A retenção verifica os usuários que interromperam o uso, e a referência avalia métricas como NPS de satisfação e lealdade dos clientes. Por fim, a receita direciona a dados monetários como o custo de aquisição do cliente e o valor do tempo de vida do cliente.

conversion-metrics.pngFigura: Conversion Metrics Example

Em um post anterior, demonstramos a criação das HDDs e como gerenciar o desenvolvimento no Azure DevOps. Para representar as métricas de acompanhamento das HDDs, crie inicialmente uma query em Boards > Query. No exemplo abaixo, criamos três gráficos:

  • Status: visualiza as HDDs por status; o intuito é verificar o WIP e possíveis gargalos
  • Owner: incluído story points e o proprietário da tarefa, afim de acompanhar a capacidade dos recursos
  • Validadas*: sim ou não. O experiment framework sugere marcar como “validated” ou “falsified” quando a tarefa passa para a coluna Completed Experiments, afim de determinar se aquela hipótese foi válida ou não.

This slideshow requires JavaScript.

* para possibilitar isso, precisamos incluir um novo campo na User Story (ou HDD), acessando “Organization Settings > Boards | Process >  Processo utilizado >  Work item type”. No exemplo abaixo, criamos um novo campo do tipo Picklist. 

edit-field-vsts

E o resultado final com os gráficos e as métricas de acompanhamento das HDDs:

graficos-hdd-vsts

Desenvolvimento Orientado por Hipóteses no Azure DevOps – HDD (Hypothesis-Driven Development)

O Desenvolvimento Orientado por Hipóteses (Hypothesis-Driven Development) baseia-se no conceito da experimentação, criando uma hipótese para explicar um determinado resultado. No âmbito de desenvolvimento de sistemas e criação de produtos, por exemplo, quando estamos desenvolvendo novas releases e precisamos validar uma ideia no mercado, a hipótese é criada, e se o resultado é confirmado, comumente isso sinaliza a continuidade da evolução do produto. Quando não há boa aceitação, a tendência é o pivot, mudando o produto ou características que permitem testar novas hipóteses.

O conceito do Build-Measure-Learn Loop, apresentado no livro Lean Startup do Eric Ries, traz alguns tipos de pivot que apoiam a decisão de mudar a estratégia e criar novas hipóteses. Entre os principais estão:

  • Zoom-in Pivot: uma feature torna-se o produto completo.
  • Zoom-out Pivot: o produto completo torna-se uma feature de um produto maior.
  • Customer Segment Pivot: a hipótese é parcialmente confirmada, mas para um público diferente do planejado.
  • Customer Need Pivot: altera para uma linha de negócios totalmente diferente, baseado na relação com o cliente.
  • Channel Pivot: o aprendizado de que a mesma solução pode ser entregue em um canal diferente com maior eficácia.
  • Technology Pivot: inovação tecnológica para atrair e reter clientes.

Por isso, coletar os resultados de validação da hipótese são tão importantes, principalmente em startups que dispõem de baixo capital e precisam de ideias que tragam retorno ao investimento. Neste cenário, não há espaço para soluções custosas, estoque de código e releases com pouca aceitação dos usuários.

A primeira fase recomendada então é a de Build, dedicando-se a criar o produto mínimo viável (MVP – minimum viable product), que é a versão mais simples do produto com um mínimo de esforço. A fase de Measure provê visibilidade do desenvolvimento e o progresso em relação aos objetivos. Em Learning, o processo empírico gerado pelo validated learning traz afirmações valiosas sobre a aceitação dos produtos e perspectivas de negócio, evitando assim, executar com sucesso um plano que não leva a lugar nenhum.

build-measure-learn-loop

Entre os principais benefícios da experimentação:

  • Aprendizado contínuo
  • Investimento direcionado
  • Validação de hipóteses são mais valiosas que previsões de mercado ou business plan

O experiment framework, criado por Beni Tait e derivado do hypothesis driven development e Lean Startup, representa um modelo visual de explorar, criar protótipos e experimentar novas ideias. Este modelo surgiu da necessidade do time (UX, Research, tecnologia, etc.) em alinhar se o desenvolvimento de novos produtos, baseado em hipóteses, tinham correspondência com o idealizado.

Era necessário ter visibilidade dos experimentos, acompanhar a evolução e gerar aprendizado para direcionar sua continuidade. Organizar também ideias de qualquer área, fortalecendo o mecanismo para visualizar, discutir e priorizar os experimentos para aplicar de volta ao fluxo de criação de produtos.

Utilizando o Azure DevOps, podemos criar o board do experiment framework para acompanhar a validação das hipóteses. Acesse a área de processos (Boards > Process) em Organization Settings. Crie um novo work item e nomeie como HDD (Hypothesis-Driven Development). O layout pode ser configurado com campos similares ao da User Story.

HDD-process

Criamos a estrutura “Epic > Feature > HDD” no time de projeto. A HDD (Hypothesis-Driven Development) está no mesmo nível da User Story e será utilizada para formular as ideias e colocar no backlog de desenvolvimento para criação de MVPs.

HDD-pb

E o seguinte formato das hipóteses:

We believe <this capability>
A funcionalidade que será desenvolvida para testar nossa hipótese.
Will result in <this outcome>
O resultado esperado do experimento.
We will know we have succeeded when <we see a measurable signal>
Os indicadores que indicarão se o experimento foi bem-sucedido e que servirá de base para avançar nos testes.

HDD-campanha

Após a criação da estrutura, acesse Boards e adicione as colunas do experiment framework: Assumptions | Hypothesis | Active Experiments | Completed Experiments | Presented Findings.

HDD-Azure-DevOps

Como os status (colunas adicionadas) que acabamos de criar não existem no Azure DevOps por padrão, precisamos customizar. Acesse a área Boards > Process > User Story (ou HDD criado) e adicione os status que criamos anteriormente.

HDD-custom

De volta ao Board (Boards > Board) do projeto, associe as colunas criadas com os status (State mapping) que acabamos de criar. Assim, podemos visualizar corretamente os status de cada HDD.

HDD-custom-settings

O experiment framework possui seis processos básicos:

  • Document Assumptions: permite que todos na organização contribuam com ideias e experiências, utilizando cartões para expor sua hipótese.
  • Formulate a hypothesis: preparação para a jornada, envolvendo o time na criação da hipótese a ser validada.
  • Design the experiment: elaborar como o experimento deve ocorrer.
  • Develop the experiment: o time trabalha no desenvolvimento das funcionalidades, condições e parâmetros.
  • Run the experiment: a execução é monitorada para obter as conclusões e opiniões no final do experimento.
  • Share the findings: compartilhar os resultados e conhecimento obtidos para direcionar os próximos experimentos.

É isso! Neste post introduzimos os conceitos de experimentação e hipóteses, utilizando o HDD (Hypothesis-Driven Development) e Azure DevOps para organizar o Board de desenvolvimento e criação de MVPs. Nos próximos posts, vamos abordar os conceitos de Métricas e como os testes A/B podem ser integrados para release.

.NET – Projetos de testes com SpecFlow e Visual Studio

Iniciamos o SpecFlow no Azure DevOps em um post anterior e agora vamos demonstrar a aplicabilidade do SpecFlow utilizando o Visual Studio. Comece adicionando o SpecFlow for Visual Studio em Extensões e Atualizações.

specflow-vs

Em seguida, crie dois novos projetos: 1) Projeto de Teste de Unidade 2) Projeto a ser testado, no meu caso utilizei Biblioteca de Classes (.NET Framework).

specflow-unit-test

No projeto de Teste, clique com o botão direito e “Gerenciar pacotes do NuGet…”. Adicione o SpecRun.SpecFlow.

specflow-nuget

Ainda no Projeto de Teste, adicione um novo item > SpecFlow Feature File. No arquivo da feature gerado, clique com o botão direito no código e “Generate Step Definitions”.

specflow-feature

Um arquivo .cs será criado com a estrutura do teste a ser realizado. Utilizamos uma classe bem simples (arquivo Class1.cs do projeto ClassLibrary1) para realizar os testes. Lembre-se de no Projeto de Teste referenciar:

using Microsoft.VisualStudio.TestTools.UnitTesting;
using ClassLibrary1;
(adicione a referência com o botão direito Adicionar > Referência > Projeto > Solução > checar o projeto a ser testado)

specflow-vs-final.pngvs-class

Iniciando com Package Management no Azure Artifacts – Azure DevOps

Com a chegada do Azure DevOps, um novo recurso bem interessante foi incorporado na solução de DevOps – o Azure Artifacts. A partir dele podemos gerenciar feeds de pacotes (NuGet, Maven e npm) integrado aos pipelines de Build e Release.

Os feeds são configurados por padrão para utilizar fontes públicas (como upstreams). E assim, upstreams ativos ajudam a proteger contra interrupções de provedores públicos de pacotes.

Vamos começar a utilizar? Acesse o Artifacts no Azure DevOps e crie um novo feed. Nas configurações, insira o nome do Feed, a visibilidade (organização ou pessoas específicas que poderão visualizar) e os pacotes que serão utilizados.

azure-artifacts-feed

Em seguida, clique em Connect to feed. No exemplo, vou utilizar o Get do próprio NuGet, mas veja que há outras opções disponíveis, como npm, Maven e Gradle.

feed-artifacts

Acesse o Visual Studio, e na solução da sua aplicação, escolha a opção de Gerenciar Pacotes do NuGet para a solução.

manage-nuget-vsts

Clique no símbolo da engrenagem (lado direito superior), e insira uma nova Origem de Pacote, utilizando o símbolo verde +. Configure então o nome e a origem, que é o link exibido no Azure DevOps, quando executamos o Connect to feed. Desabilite a opção anterior para manter o time utilizando o novo feed como opção primária.

nuget-vs

De volta ao Azure DevOps, acesse o seu Build Pipeline e crie uma tarefa de NuGet. Altere a opção de Command para push, e o Target Feed  para o Feed que criamos anteriormente.

nuget-azure-devops

Após a execução do Build, veja no Log que a tarefa de NuGet push está entre as tarefas executas com sucesso.

build-azure-devops-nuget

Agora em Artifacts, podemos visualizar os pacotes publicados no feed do seu time. Podemos então consumi-los em outras soluções.

artifacts-azure-devops

De volta ao Visual Studio, abra a solução de outro time, por exemplo, e acesse “Gerenciar Pacotes do NuGet para a solução” (botão direito em cima da solução). Confirme se “em origem do pacote” (canto direito superior) está selecionado o feed correto. Os pacotes do feed estarão disponíveis para uso. Selecione o que será utilizado e clique na opção “Instalar”.

nuget-vs-install.png

E assim os pacotes estarão disponíveis para esta solução também. Aproveite então este novo recurso de Artifacts do Azure DevOps.

 

 

BDD e ATDD com SpecFlow no Azure DevOps

SpecFlow é um ótimo recurso para trabalhar com a gestão e execução automática dos testes de aceitação human-readable (sintaxe Gherkin que possui uma linguagem facilmente compreendida e acessível ao time do projeto) no ciclo de desenvolvimento de sistemas. É considerado o Cucumber do .Net.

SpecFlow

A ferramenta é open source BDD (Behavior-driven development)/ATDD (Acceptance test–driven development) e utiliza o analisador Gherkin. Possui suporte ao framework .Net, Xamarim e os de testes MSTest, NUnit e xUnit 2. Também faz a integração com o Visual Studio.

specflow

Adicionalmente, o SpecFlow+ é um recurso para integração com o Test Explorer do Visual Studio, Excel, LivingDoc, entre outros. Neste post, vamos ver o uso da extensão do SpecFlow+ LivingDoc no Azure DevOps e como auxiliam a construir uma documentação “viva” do sistema. Os arquivos Gherkin podem ser visualizados diretamente no Azure DevOps.

O passo inicial é acessar o Marketplace (Visual Studio) e baixar o SpecFlow+ LivingDoc e o Report Generator for SpecFlow. Em seguida, adicione a uma etapa do Build Pipeline.

specflow-tasks

Nas configurações do SpecFlow+, referencie o projeto criado no Visual Studio. Veja como criar como o SpecFlow no Visual Studio. Em seu projeto, você irá descrever a feature e o cenário de teste.

specflow-tasks-vsts

Por fim, acesse a área Test Plans > SpecFlow+ no Azure DevOps. Veja as informações disponíveis do uso do SpecFlow nos Builds. Ao lado direito da janela, você poderá manipular a licença de uso, que inicialmente estará em “evaluation mode”.

specflow-licence

Build Azure DevOps – checando vulnerabilidades com WhiteSource Bolt

No último post sobre DevSecOps, demonstramos como instalar o componente do WhiteSource Bolt no Azure DevOps e utilizá-lo nas definições de Build do seu pipeline. É altamente recomendável incluir verificações de vulnerabilidades no seu processo de desenvolvimento, e assim evitar o deploy de aplicações suscetíveis a invasões.

Componentes desatualizados, alertas e relação dos dados com políticas pré-definidas da empresa são os principais recursos da ferramenta. O gráfico abaixo da Forrester Wave™: Software Composition Analysis (SCA) Q1 2017 exibe a presença de mercado do WhiteSource Bolt e a comparação com outras soluções.

Forrester wave

Após a execução do Build da aplicação, veja que o histórico de scan e relatórios de vulnerabilidades ficam na área de Pipelines > WhiteSource Bolt. Na parte superior, fica disponível as definições de Build que utilizaram o componente e as últimas verificações. Também há um botão para exportar o relatório. Na parte de Security há um resumo distribuído em quatro quadros:

  • Vulnerability Score: resumo da classificação – Low | Med | High das aplicações analisadas, de acordo com a National Vulnerability Database (NVD).
  • Vulnerable Libraries: quantifica os componentes e bibliotecas vulneráveis. O quadro verde exibe a quantidade de itens analisados e que não foram encontradas vulnerabilidades; o vermelho exibe a quantidade de itens com vulnerabilidade.
  • Severity Distribution: dos itens classificados como vulneráveis, quantos são de risco alto, médio e baixo.
  • Aging Vulnerable Libraries: há quanto tempo foi identificada a vulnerabilidade.

whitesource-bolt-vsts

O relatório de Security Vulnerabilities traz todas as vulnerabilidades encontradas e a ação recomendada para corrigi-las. A coluna Description aponta o risco identificado naquele componente. E a coluna Top Fix descreve a recomendação para corrigir. Entre as principais estão a atualização de versão e substituição por outro componente.

security-vulnerabilities

Em seguida, o License Distribution identifica os tipos de licenças associadas aos componentes utilizados e a classificação de risco para cada uma. O link presente em cada linha direciona para o site oficial daquele provedor. O histograma (na direita) facilita a visualização, agrupando por tipo de risco. O tipo Unknown identifica as licenças que não foram analisadas por especialistas legais da WhiteSource.

license-risks

Por fim, o Outdated Libraries relaciona os componentes e bibliotecas presentes nas aplicações analisadas e que não estão atualizadas em suas últimas versões. O Inventory  é o inventário de todos os componentes open source identificados.

outdated-librariesinventory

Para mais detalhes, sugiro acessar a documentação completa no site da WhiteSource Bolt.

Automação de testes com Selenium e Azure DevOps

Compartilho aqui o link dos artigos publicados em três revistas de um case de sucesso com automação de testes utilizando o Selenium. Neste projeto utilizamos o Azure DevOps da Microsoft como solução para gestão das atividades, processo de integração contínua e planos de teste.

“Utilizar ferramentas como o Azure DevOps e Selenium, entre outros serviços do Portal Azure (Microsoft), foram fundamentais na gestão de projetos ágeis como esse, integração contínua, hospedagem, monitoramento e qualidade das entregas” Leonardo Matsumota.

revistas-automacao-teste.png