Posts da Tag: testes - Blog da TreinaWeb

Testes e Projetos

Principais técnicas de testes estruturais

Os testes estruturais, também conhecidos como testes de caixa-branca, é a validação do código-fonte da aplicação, bem como dos diferentes algoritmos e estruturas de dados. Em suma, o tester seleciona diferentes valores de entrada, para examinar cada um dos possíveis fluxos de execução do programa e verificar se os valores de saída estão retornando corretamente.

Por meio de testes estruturais é possível:

  • Assegurar que todos os caminhos independentes de cada módulo, programa ou método sejam executados pelo menos uma vez;
  • Verificar todas as decisões lógicas de verdadeiro e falso;
  • Executar todos os loops em seus limites operacionais;
  • Executar as estruturas de dados internas para garantir a validade.

Caso ocorra alguma alteração antes da etapa de implementação, os testes normalmente terão que ser refeitos. Assim sendo, o teste de caixa-branca pode ser considerado um dos mais importantes tipos de testes que se aplicam ao software, tendo como resultado a diminuição no número de erros no sistema e, portanto, contribuindo com uma maior qualidade e confiabilidade.

Técnicas de Testes Estruturais

Existem várias técnicas que podem ser aplicadas aos testes estruturais. A seguir vamos comentar brevemente sobre algumas delas:

Teste do Caminho Básico

O teste do caminho básico é uma técnica proposta por Thomas J. McCabe, em 1976, que permite ter uma noção da complexidade lógica de um projeto e, posteriormente, usar essa medida como um guia para a definição de um conjunto básico de caminhos de execução. A ideia é realizar casos de testes a partir de um determinado conjunto de caminhos independentes. Para obter este conjunto, é construído um fluxograma e sua complexidade ciclomática é calculada.

As etapas para aplicar esta técnica são:

  • O fluxograma é desenhado a partir do código-fonte;
  • A complexidade ciclomática do gráfico é calculada;
  • O conjunto básico de caminhos independentes é determinado;
  • São preparados os casos de teste, que requerem a execução de cada um dos caminhos.

Notação de fluxograma

Para aplicar a técnica de caminho básico, deve ser usado uma notação simples para a representação do fluxo de controle. O fluxograma costuma ser composto por 3 componentes fundamentais, que ajudam a preparar, entender e fornecer informações, para assegurar que o trabalho está sendo executado corretamente.

Os componentes são:

  • Nós: Representam uma sequência de processos ou uma declaração de decisão;
  • Setas: Representam o fluxo de controle. Uma seta deve sempre terminar em um nó, mesmo que este não passe nenhuma instrução do procedimento;
  • Regiões: São as áreas delimitadas por setas e nós. A área externa do gráfico também é incluída, contando como mais uma região.

Complexidade ciclomática

Também desenvolvida por Thomas J. McCabe, em 1976, a complexidade ciclomática é uma métrica de software extremamente útil, pois fornece uma medida quantitativa da complexidade lógica de um programa. Esta métrica mede a quantidade de diferentes fluxos de execução que o código pode ter, ou seja, quantos ifs-then-else, while, for, switch, entre outros, há no código-fonte. Quanto maior a complexidade ciclomática, mais complicado o código será de ler, entender, modificar, manter e, consequentemente, será mais caro.

Conjunto de caminhos independentes

Um caminho independente é qualquer rota no programa que introduz pelo menos um novo conjunto de instruções de processo, ou uma condição, em relação aos caminhos existentes. Em termos de diagrama de fluxo, consiste em pelo menos uma seta que não foi percorrida antes da definição do caminho. Ao identificar os diferentes caminhos de um programa a ser testado, deve-se levar em consideração que cada nova rota deve ter novas condições em relação às já existentes.

Tester
Formação: Tester
A formação Tester da TreinaWeb tem como objetivo apresentar os tópicos essenciais para profissionais da área de teste de software, tópicos estes sendo técnicos e também com relação ao mercado de trabalho na área de qualidade de software. A formação aborda tópicos como o ciclo de vida e desenvolvimento de um software, as métricas básicas para mensuração de qualidade de uma aplicação, o ciclo de vida de uma suíte de testes, técnicas funcionais para teste de software. Além de apresentar duas ferramentas importantíssimas e extremamente utilizadas no mercado de trabalho para teste e garantia de qualidade de aplicações: o JMeter e o Selenium.
CONHEÇA A FORMAÇÃO

Casos de teste

Após preparar os casos de teste, cada um deles é executado e os resultados são comparados com o que era previsto. Assim que todos os casos de teste forem concluídos, o tester deverá ter a certeza de que todas as instruções do programa foram executadas pelo menos uma vez. É importante observar que alguns caminhos não podem ser testados isoladamente. Em suma, a combinação de dados necessária para percorrer o caminho não pode ser obtida com o fluxo normal do programa.

Considerações finais

Os testes estruturais, ou testes de caixa-branca, se concentram nos detalhes processuais do software e na análise do código fonte. Embora esta validação seja aplicável a vários níveis, como unidade, integração e sistema, eles geralmente são realizados nas unidades de software. Seu objetivo é verificar os fluxos de execução dentro de funções, classes, módulos, entre outros, bem como pode ser aplicado para validar os fluxos entre as unidades durante a integração e/ou entre subsistemas.


Testes e Projetos

Principais técnicas de testes funcionais

Os testes funcionais, também conhecidos como testes de caixa-preta, é uma validação de software na qual determinada funcionalidade é verificada, sem levar em conta a estrutura do código-fonte, os detalhes de implementação ou os cenários de execução. Nos testes de caixa-preta, o foco é apenas as entradas e saídas do sistema, sem se preocupar com a estrutura interna do programa.

De acordo com a ISTQB, um selo internacional que destaca a importância dos testes de software na qualidade do sistema, as técnicas de caixa-preta são utilizadas para realizar testes funcionais, com base nas funções ou características do sistema, e sua interação com outros sistemas ou componentes. Técnicas baseadas em especificações podem ser usadas para identificar casos de teste, com base na funcionalidade do software, e podem ser usadas para projetar testes não-funcionais.

Em suma, o teste funcional permite identificar:

  • Funções incorretas ou ausentes;
  • Erros de interface;
  • Erros em estruturas de dados;
  • Erros em acessos a bancos de dados externos;
  • Erros de desempenho;
  • Erros de inicialização e término.

Técnicas de testes funcionais

Assim sendo, existem vários métodos que podem ser aplicados na hora de optar pela técnica de caixa-preta. A seguir vamos comentar brevemente sobre alguns deles:

Tester
Formação: Tester
A formação Tester da TreinaWeb tem como objetivo apresentar os tópicos essenciais para profissionais da área de teste de software, tópicos estes sendo técnicos e também com relação ao mercado de trabalho na área de qualidade de software. A formação aborda tópicos como o ciclo de vida e desenvolvimento de um software, as métricas básicas para mensuração de qualidade de uma aplicação, o ciclo de vida de uma suíte de testes, técnicas funcionais para teste de software. Além de apresentar duas ferramentas importantíssimas e extremamente utilizadas no mercado de trabalho para teste e garantia de qualidade de aplicações: o JMeter e o Selenium.
CONHEÇA A FORMAÇÃO

Partição de equivalência

Nesta técnica, os valores de entrada do sistema são divididos em grupos que vão ter um comportamento parecido, para que possam ser processados da mesma maneira. As partições de equivalência podem ser aplicadas para dados válidos e inválidos, bem como a valores de saída, valores internos, valores relacionados à eventos e para os parâmetros recebidos pelas interfaces.

Análise do valor limite

Este método parte do princípio de que o comportamento na borda de uma partição de dados tem maior probabilidade de apresentar erros. Com isso, esta técnica se torna um complemento para a partição de equivalência. Os valores máximos e mínimos de uma partição são seus valores limites e os testes podem ser feitos para dados válidos como inválidos.

Tabela de decisão

A tabela de decisão é um método importante para documentar regras de negócios que o sistema deve cumprir. Estas são criadas a partir da análise da especificação funcional e da identificação destas regras de negócios. A tabela de decisão contém as condições de disparo, combinações de verdadeiro e falso para cada entrada de dados, bem como a ação que resulta de cada combinação.

Transição entre status

Um sistema pode exibir diferentes comportamentos dependendo de seu status atual ou de eventos anteriores. A elaboração de um diagrama permite que o tester visualize os status, transições, entradas de dados, eventos que os acionam e as ações que podem resultar. Esta técnica pode ajudar a identificar possíveis transações inválidas.

Casos de uso

Os casos de uso descrevem as interações entre os atores, que podem ser usuários ou outros sistemas, os quais possuem pré-condições que devem ser atendidas para atingir o funcionamento correto do software. Os casos de uso terminam com pós-condições, que são resultados observáveis e o estado do sistema após a execução. Esta técnica é útil para definir testes de aceitação, nos quais o usuário e/ou cliente participa.

Técnicas baseados na experiência

De acordo com o ISTQB, as técnicas baseadas na experiência são aqueles em que os testes são derivados da habilidade e intuição do testador, bem como de sua experiência com aplicativos e tecnologias semelhantes. Este método é amplamente utilizado na previsão de erros.

Histórias de usuário

A história de usuário descreve um recurso – ou parte dele – que pode ser desenvolvido e testado em uma única iteração. Esta técnica descreve a funcionalidade que será implementada, os requisitos não-funcionais e os critérios de aceitação. A cobertura mínima de teste para uma história de usuário é composta pelos critérios de aceitação, portanto, os casos de teste são derivados desses critérios.

Considerações Finais

Os testes de caixa-preta são validações que permitem obter um conjunto de condições de entrada que verificam todos os requisitos funcionais de um software. Entre as vantagens deste tipo de teste estão: eliminar a necessidade de testes extensivos; servir como um guia para selecionar o conjunto de dados de entrada para teste, com alta probabilidade de detecção de defeitos; não precisar de acesso ao código-fonte; haver uma separação entre as perspectivas do usuário e do desenvolvedor.


Testes e Projetos

Quality Assurance (QA) e sua importância no desenvolvimento de software

Quality Assurance (QA), ou Garantia da Qualidade, em português, pode ser definida como um conjunto de ações que as empresas realizam com o objetivo de entregar aos consumidores um produto ou serviço com alto nível de qualidade. No desenvolvimento de software, aplicar os métodos de QA geram confiança e segurança aos clientes, indicando que os seus produtos terão a qualidade esperada na etapa de implantação.

O profissional de Quality Assurance deve ter conhecimento sobre as atividades do projeto, além de ter um perfil analítico. Ele verifica se os padrões de qualidade estão sendo atendidos e se todos os requisitos mínimos esperados no produto serão entregues. Por outro lado, é fundamental que a empresa siga uma sequência de ações previamente planejadas e sistematizadas, como um conjunto de regras que deverá ser seguido.

Para que a qualidade do produto seja maximizada, o ideal é que todos os processos sejam documentados, como, por exemplo, o planejamento, a determinação de tarefas e responsabilidades, o registo dos resultados e todos os mecanismos de fiscalização que se aplicam dentro da organização.

Qual a importância do Quality Assurance (QA)?

A garantia da qualidade busca reduzir custos e evitar desperdícios. Isso é possível porque o QA possibilita melhorar a produtividade da organização, fazendo que ela foque no cumprimento dos objetivos e no que os clientes esperam da qualidade do produto. Além disso, estas ações identificam as atividades que aumentam os gastos e não trazem valor ao processo. Para que isso seja feito com maestria, o profissional de Quality Assurance deve acompanhar desde a elaboração do projeto, passando pelo desenvolvimento, até as etapas de implementações.

Outro impacto positivo da Quality Assurance é em relação a satisfação do cliente. O QA permite obter melhorias na qualidade dos produtos entregues ao cliente, o que sem dúvida dará a confiança necessária de que a qualidade desejada está sendo alcançada e será mantida, pois tudo está documentado e certificado.

Em suma, a implementação do Quality Assurance (QA) pode trazer diversos benefícios, tais como:

  • Redução de custos operacionais;
  • Redução de retrabalhos;
  • Auxilia na identificação de problemas;
  • Entrega de produtos com maior qualidade;
  • Melhora na satisfação do cliente;
  • Melhora na estimativa dos projetos;
  • Otimização da rotina de trabalho.

Processos do Quality Assurance (QA)

Manual de administração

O manual de gestão de projetos inclui dados importantes que devem ser considerados, para serem utilizados no plano de gestão da qualidade de cada empresa, pois os procedimentos específicos são definidos para atingir os objetivos de uma forma particular para cada organização.

Controle de qualidade

As medidas de controle de qualidade permitem estabelecer o grau ou nível de qualidade alcançado em cada atividade avaliada no processo. Podem ser utilizados critérios como desempenho nos prazos estabelecidos, cumprimento na execução dos orçamentos, frequência de aparecimento de erros ou defeitos no processo, entre outros.

Relatórios de desempenho

Relatórios de desempenhos alcançados devem ser feitos periodicamente ao longo do desenvolvimento das diferentes partes do projeto, pois isso permitirá monitorar como todas as atividades estão sendo realizadas e evitar maiores custos. Além disso, é possível avaliar se os prazos estão sendo cumpridos – com base nos cronogramas já elaborados -, o andamento do processo de entrega, o desempenho técnico e qualquer atividade que implique custos.

Desenvolvimento e implementação de QA

Para poder desenvolver e implementar um sistema de QA, é preciso considerar os seguintes pontos:

  • Para o bom andamento de um projeto de implantação de um sistema de garantia da qualidade, é imprescindível que a direção da empresa esteja plenamente envolvida e convicta de que a adoção deste sistema resultará no bom funcionamento do projeto e da organização;
  • Escolha do modelo de sistema de garantia de qualidade a ser implementado, por exemplo, o ISO 9001;
  • Divulgação em todos os níveis da organização do compromisso assumido pela gestão;
  • Escolha de um responsável pela implantação e manutenção do sistema;
  • Coordenar a implementação do sistema do início ao fim;
  • Revisar e aprovar o manual da qualidade e os procedimentos operacionais;
  • Formar a equipe de trabalho e realizar revisões periódicas.

Considerações finais

Podemos afirmar que o sistema de garantia da qualidade traz muitos benefícios às empresas, principalmente na redução de custos, na entrega de produtos com a qualidade esperada e, principalmente, na garantia da satisfação de seus clientes. Como esse sistema permite a documentação dos processos para manter a entrega dos produtos e serviços com a qualidade esperada, ele deve ser sempre revisado e atualizado periodicamente, pois a melhoria contínua deve ser sempre almejada.


Testes e Projetos

Importância dos testes de software na qualidade do sistema

Testes de software é um conjunto de processos com os quais se pretende validar um sistema ou aplicação, em momentos diferentes, para verificar seu correto funcionamento. Este tipo de teste cobre qualquer etapa do desenvolvimento do sistema, desde sua criação até a implantação. São uma série de procedimentos que visam encontrar possíveis bugs, reportar erros, identificar problemas de usabilidade, bem como assegurar que todos os requisitos solicitados pelo cliente sejam atendidos.

Os testadores de software devem validar o máximo de combinações que podem ser aplicadas no software. Eles mantêm um registro detalhado dos testes realizados e, depois de conclui-los, elaboram uma lista com os bugs identificados e possíveis sugestões para melhoria do sistema. Este relatório é feito para que os desenvolvedores e gerentes do projeto possam verifica-los e corrigi-los posteriormente.

Profissionais de teste identificam todos os possíveis riscos para o sistema ou aplicação, tais como: erros que podem ocorrer no software quando alguém está usando, problema de usabilidade ou falta de informação, instalação do software em diferentes tipos de sistemas, se o software atende aos requisitos do projeto, se o sistema funciona conforme o esperado, se a interface está de acordo, se atende ao uso pretendido em relação as expectativas do usuário, entre outros aspectos.

Teste de Software Intermediário
Curso de Teste de Software Intermediário
CONHEÇA O CURSO

Qual a importância dos testes de software na qualidade do sistema?

De acordo com a International Software Testing Qualifications Board (ISTQB), um selo internacional de qualidade para testadores de software, realizar estas validações é de suma importância pelos seguintes motivos:

  • Permite identificar erros durante as etapas de desenvolvimento;
  • Garante a confiança do usuário final e sua satisfação ao utilizar o software;
  • Permite assegurar a qualidade do produto e seu funcionamento correto;
  • É fundamental para manter a reputação do negócio no setor.

Entre seus objetivos específicos estão:

  • Verificar a integração adequada dos componentes;
  • Analisar se todos os requisitos foram implementados corretamente;
  • Garantir que os defeitos encontrados sejam corrigidos antes da implantação do software;
  • Reduzir custos de manutenção corretiva e retrabalho.

Considerando todos estes itens, podemos afirmar que os testes de software visam encontrar erros no sistema para que, posteriormente, eles sejam corrigidos e a qualidade do mesmo seja melhorada. Executar estas validações garante que todos estes pilares sejam atendidos e que a empresa de tecnologia mantenha um alto nível no mercado.

Tipos de testes

A lista de tipos de testes é extensa e os métodos podem variar de acordo com o objetivo estabelecido para o projeto. Abaixo comentaremos brevemente sobre os principais tipos de testes existentes:

  • Teste de Unidade: É utilizado para validar se um pedaço do código está funcionando corretamente. Uma unidade é a menor parte testável em um sistema;
  • Teste de Integração: É utilizado para verificar a integração correta entre os diferentes componentes, uma vez que já tenham sido testados em unidade, com o propósito de verificar se eles interagem corretamente por meio de suas interfaces;
  • Teste Operacional: É utilizado para assegurar que o sistema pode rodar por muito tempo sem apresentar problemas;
  • Teste Positivo-Negativo: É utilizado para assegurar que o sistema vai funcionar pelo caminho feliz de sua execução;
  • Teste de Regressão: É utilizado para testar o sistema sempre que algo for alterado, com o objetivo de verificar se não surgiram novos erros em componentes já analisados;
  • Teste de Caixa-Preta: É utilizado para verificar todas as entradas e saídas desejadas. É ignorado a estrutura interna do código, detalhes de implementação ou cenários de execução internos no software, focando apenas nos requisitos funcionais do sistema;
  • Teste Caixa-Branca: É utilizado para testar o código. Garante a análise de todos os caminhos independentes de cada módulo, programa ou método;
  • Teste Funcional: É utilizado para validar as funcionalidades, requisitos e regras de negócios;
  • Teste de Interface: É utilizado para verificar se a navegabilidade e os elementos da tela estão funcionando corretamente, bem como se atende melhor o usuário;
  • Teste de Performance: É utilizado para verificar se o tempo de resposta do sistema é o desejado;
  • Teste de Carga: É utilizado para analisar se o sistema vai funcionar como o esperado mesmo havendo uma quantidade grande de usuários simultâneos;
  • Teste de Volume: É utilizado para testar a quantidade de dados envolvidos;
  • Testes de Estresse: É utilizado para testar o sistema em situações inesperadas;
  • Testes de Configuração: É utilizado para verificar se o sistema vai funcionar em diferentes hardware e software;
  • Teste de Compatibilidade: É utilizado para verificar se o sistema funciona corretamente em diferentes navegadores e sistemas operacionais;
  • Testes de Instalação/Desinstalação: É utilizado para verificar se o sistema será instalado e desinstalado completamente, parcialmente, ou atualizado corretamente em diferentes sistemas operacionais;
  • Testes de Segurança: É utilizado para testar a segurança do sistema ou aplicação, usando diversos tipos de perfis e permissões.

Considerações finais

No desenvolvimento de software, os erros podem aparecer em qualquer etapa do ciclo de vida do projeto. Diante disso, o teste de software se torna essencial e não pode ser visto como uma atividade opcional, pois oferece os métodos e ferramentas necessárias para garantir a qualidade de qualquer desenvolvimento.

É preciso ter consciência da importância dos testes de software e do engajamento da equipe de qualidade em todas as fases de desenvolvimento do sistema ou aplicação, sem que isso seja considerado um prejuízo econômico no planejamento de um projeto.

Sem dúvida nenhuma, é muito melhor detectar os erros no momento certo, gerando tempo hábil para corrigi-los, do que detectá-los antes da entrega do produto ou de uma etapa importante de implementação. Se quiser saber mais sobre testes de software e a sua importância, consulte o curso de Teste de Software Intermediário da TreinaWeb.


Testes e Projetos

O que é Selenium?

Quando se fala de qualidade de software, sabemos que a etapa de teste é imprescindível. O software deve fazer o que o cliente precisa de maneira confiável, segura, eficiente e flexível. Porém realizar testes de forma manual gasta tempo e dinheiro, por isso devemos dar a devida importância de se realizar os testes automatizados.

Selenium - Testes Automatizados com TestNG
Curso de Selenium - Testes Automatizados com TestNG
CONHEÇA O CURSO

Para nos auxiliar, existem as ferramentas de automação, que simulam a interação que um usuário teria, realizando os testes automaticamente quantas vezes forem necessárias. Uma dessas ferramentas é o Selenium, tema deste artigo.

Selenium é um conjunto de ferramentas de código aberto multiplataforma, usado para testar aplicações web pelo browser de forma automatizada. Ele executa testes de funcionalidades da aplicação web e testes de compatibilidade entre browser e plataformas diferentes. O Selenium suporta diversas linguagens de programação, como por exemplo C#, Java e Python, e vários navegadores web como o Chrome e o Firefox.

O ecossistema do Selenium é bem completa, sendo:

Selenium IDE

Selenium IDE é um ambiente integrado de desenvolvimento para scripts de testes automatizados, onde permite o usuário criar testes de forma muito rápida. Essa ferramenta te permite gravar os scripts, funcionando como um recorder, gravando as ações do usuário.

Esse script gerado você pode parametrizar e executar quantas vezes você quiser. O Selenium IDE inclui o Selenium Core , permitindo que você facilmente possa gravar e reproduzir os testes no ambiente real que será executado. O IDE é voltado para testes rápidos, com rápidos feedbacks.

É importante ressaltar que o Selenium IDE funcionava até a versão 55 do Firefox – e somente no Firefox. Porém, em 2018 eles voltaram com o projeto, ainda em “alpha”, mas agora disponível para Firefox e Chrome.

Google Chrome Developer Tools
Curso de Google Chrome Developer Tools
CONHEÇA O CURSO

Selenium WebDriver

O Selenium WebDriver usa o próprio driver do navegador para a automação. É a forma mais moderna de interação atualmente, pois cada browser possui o seu respectivo driver, permitindo a interação entre o script de teste e o respectivo browser.

Esta versão é indicada para testes mais elaborados e por usuários familiarizados com a ferramenta. Geralmente usa-se o Selenium IDE para testes básicos, exporta-se o script e depois edita-se o script para realizar testes mais elaborados.

Selenium Grid

No Selenium Grid, você lança seu script sobre diferentes navegadores. O Grid é voltado para clusterização, permitindo você realizar os testes em máquinas diferentes de forma remota.

Segundo o site oficial do Selenium, o Selenium Grid leva o WebDriver a outro nível, executando testes em muitas máquinas ao mesmo tempo, reduzindo o tempo necessário para testar em vários navegadores e sistemas operacionais. Utilizando o Selenium Grid você ganha na escala, onde executamos o mesmo teste em centenas de configurações diferentes.

Considerações finais

A pressão do mercado pela qualidade dos softwares faz com que essa tecnologia esteja cada vez mais presente, e consequentemente, a procura por profissionais da área de testes cresça cada vez mais.

Formação:
CONHEÇA A FORMAÇÃO