Giter Site home page Giter Site logo

quality's Introduction

Quality

Quality é um projeto acadêmico, do Centro Universitário UniBH em conjunto com a CI&T, cujo objetivo final é avaliar o site opentdb, realizando a criação de cenários de teste utilizando a linguagem Gherkin, e testes propriamente ditos.

Instalação e pré-requisitos

💻 Requisitos:

Com todos os requisitos preenchidos, vamos para a criação do ambiente local, onde ficarão os arquivos do projeto.

Baixando o projeto:

  1. Clique no botão fork, localizado no canto superior direito. Fork nada mais é do que uma cópia atual do repositório;
  2. Depois de realizar o fork, uma cópia do projeto ficará disponível em seus repositorios. Copie a URL do repositório e guarde-a pois precisaremos dela mais tarde;
  3. Inicie o terminal do gitbash ou um terminal de sua preferência;
  • Navegue até a pasta que você deseja que os arquivos do projeto sejam armazenados.
  1. Comandos:
  • Crie um novo repositório git, com o seguinte comando:
git init

Usaremos esse repositório para receber um repositório remoto existente.

  • Defina e relacione um repositório remoto, digitando o seguinte comando:
git remote add origin https://github.com/QualitySquad/quality

E para finalizar baixe o conteúdo disponível na url que você informou no passo anterior, com o comando:

git pull origin master

Pronto! A partir deste momento todos os arquivos estarão na pasta que você definiu anteriormente.

Executando os testes:

Temos 3 casos de testes, relacionados a funcionalidade Busca no Banco de Questões sendo eles:

  1. ListQuestionsText:
Cenário: Busca por questão inexistente
        Dado que navego para a página de busca do banco de questões
        E digito 'Science: Computers' no campo de Busca
        Quando clico no botão de buscar
        Então visualizo uma mensagem de erro com o texto 'No questions found.'

Como o cenário acima, disponível na linguagem Gherkin já descreve, o teste é responsável por verificar um comportamento do sistema, caso procurassemos por alguma questão que por algum motivo não foi localizada no banco de dados. O retorno esperado desse teste é um true, do tipo boolean.

Para executa-lo basta acessar o arquivo ListQuestionsText, disponível no caminho: src/test/java e executar(botão direito, run test).

ListQuestionsTest.mp4
  1. SearchQuestionTest:
Cenário: Listagem de questões
        Dado que navego para a página de busca do banco de questões
        E digito 'Science: Computers' no campo de busca
        E seleciono Category no campo de seleção  
        Quando clico no botão de buscar
        E verifico se há 25 questões
        E verifico se existe controle de paginação  
        Então realizo a busca

Como o cenário acima, disponível na linguagem Gherkin já descreve, o teste é responsável por verificar se o controle de paginação existe. O retorno esperado desse teste é do tipo string, com o texto "No questions found.".

Para executa-lo basta acessar o arquivo SearchQuestionTest, disponível no caminho: src/test/java e executar(botão direito, run test).

SearchQuestionTest.mp4
  1. SearchQuestionUserTest:
Cenário: Busca de questões por usuário
        Dado que navego para a página de busca do banco de questões
        E digito 'Karen' no campo de busca
        E seleciono 'Users' no campo de seleção
        Quando clico no botão de buscar
        Então visualizo as questões criadas por aquele usuário

Como o cenário acima, disponível na linguagem Gherkin já descreve, o teste é responsável por verificar as questões criadas por determinado usuário. O retorno esperado desse teste é um true, do tipo boolean.

Para executa-lo basta acessar o arquivo SearchQuestionUserTest, disponível no caminho: src/test/java e executar(botão direito, run test).

SearchQuestionUserTest.mp4

Relatório de teste:

Para melhor visualização dos resultados dos testes, adicionamos ao nosso projeto a biblioteca Allure que gera um formulário web com as informações dos testes. Para executar, siga o passo abaixo:

Comando:

  • Abra seu terminal e digite o seguinte comando:

mvn allure:serve

Tecnologias utilizadas no projeto:

Para atender aos requisitos disponibilizados na documentação, realizamos a combinação de ferramentas e tecnologias que em seu resultado final concederam economia de tempo no desenvolvimento e confiabilidade na entrega final.

O Maven é uma ferramenta de integração de projetos. É responsável por gerenciar dependências, controlar versão de artefatos, gerar relatórios de produtividade, garantir execução de testes, manter nível de qualidade do código dentre outras. com o Maven consiguimos isolar as bibliotecas usadas no projeto em um ‘repositório‘ compartilhado pela equipe, ou por toda internet no caso do repositório central do Maven. Dessa forma não nos preocupamos com duplicidade de dependências entre módulos do projeto e nem em disponibilidade das mesmas no repositório de código. Quanto a versão das dependências, estas ficam centralizadas em arquivos de configuração dos projetos de forma explícita e hierarquisada pelos módulos (POM). Com isso o Maven consegue se encarregar de fazer as devidas substituições de bibliotecas e identificar possíveis falhas no grafo de dependências. O que torna o Maven muito poderoso é a facilidade que ele fornece para se trabalhar com vários módulos de um mesmo sistema e sua extensibilidade para novas funcionalidades com o uso de ‘plugins‘. Existem plugins de geração de código, de integração com plataformas de teste e inclusive suporte a IDEs como Eclipse e NetBeans. Isso torna o projeto muito mais flexível dentro da equipe, pois cada desenvolvedor pode escolher a IDE com que vai trabalhar sem se preocupar em atrapalhar o resto da equipe. Entenda mais sobre o Maven aqui.

Um facilitador quando o assunto é escrever requisitos. O Gherkin, está disponível em mais de 37 idiomas. Uma linguagem poderosa, humana e verdadeira, que impacta de forma muito positiva envolvidos na criação e entendimento de requisitos. Para tudo fazer sentido falaremos um pouco sobre BDD. BDD é uma metodologia, que envolve práticas que apoiam os times quando o assunto é ser ágil, na entrega de valores. Além de garantir que todas as features sejam bem planejadas e implementadas o BDD prevê e encoraja análistas de negócio, QAs e desenvolvedores trabalharem mais próximos, sem aquele sentimento de "um contra o outro", fazendo com que a interação e compartilhamento de ideias e entendimentos seja muito maior. O Gherkin segue padrões, focados em regras de negócio. Ele é escrito em forma de “steps” (ou “passos”), os quais especificam cada etapa de interação do usuário com o sistema a ser testado. Entenda mais sobre o Gherkin aqui

Podemos dizer que neste projeto, ele é a dupla perfeita do Selenium, pois é responsável pela estrutura geral dos testes. Toda a estruturação dos casos de teste, verificação de saídas e os testes propriamentes ditos só seriam possíveis com o JUnit, que utiliza a linguagem Java. No final de tudo será o JUnit que retornará se o teste passou ou falhou, comparando sempre valores esperados com valores retornados pelo software. A framework JUnit foi idealizada pensando na criação e manutenção de testes unitários, de códigos Java, e é claro que, herdou algumas características da própria linguagem. A estruturação dos testes é feita utilizando classes e métodos, como qualquer código Java. Entenda mais sobre o JUnit aqui

Não poderiamos falar de qualidade sem mencionar o Selenium, até por que a etapa de testes é imprescindível, e por que não automatiza-los? Realizar testes de forma manual gastará muito tempo e dinheiro, e é nesse momento que a decisão de utilizar o Selenium foi realizada. O Selenium é um conjunto de ferramentas de código aberto multiplataforma, usado para testar aplicações web pelo browser de forma automatizada. Ele suporta diversas linguagens e navegadores, e é responsável pelas ações que serão realizadas dentro dos navegadores. Para que tudo isso seja possível, Selenium WebDriver utiliza o driver do navegador para a automação dos testes e isso permite manipular as ações que serão realizadas em cada navegador, aplicando ao driver especifico, eliminando problemas como compatibilidade, por exemplo. Cada navegador possui um driver, e através deste driver o Selenium WebDriver faz com que os nossos testes, sejam cada vez mais eficientes, simulando um acesso humano e o mais "natural" possível. Entenda mais sobre o Selenium WebDriver aqui

Allure Framework é uma ferramenta de relatório de teste leve e flexível que não só mostra uma representação muito concisa do que foi testado em um formulário de relatório da web, mas permite que todos os participantes do processo de desenvolvimento extraiam o máximo de informações úteis da execução diária de testes. Com uma gama bem grande de opções e customizações para gerar relatórios, o framework facilita bastante a vida do qa/dev fazendo com que o resultado fique bem mais claro e entendivel. Entenda mais sobre o Allure aqui

Equipe:


Matheus Augusto

Backend Developer🚀
Linkedin

Israel Gomes

Frontend Developer🚀
Linkedin

Rafael Damasceno

Product Owner🚀
Linkedin

quality's People

Contributors

israelgms avatar matheusaugusto61 avatar rafaeldamasceno-ghost avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.