Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/daviteixeira-dev/test-automation-with-selenium-webdriver-and-java


https://github.com/daviteixeira-dev/test-automation-with-selenium-webdriver-and-java

Last synced: about 7 hours ago
JSON representation

Awesome Lists containing this project

README

        

# Test-Automation-with-Selenium-WebDriver-and-Java

# Fundamentos de Qualidade de Software

Compreender fundamentos e normas da área de qualidade, assim como aprofundar atividades de um analista ou engenheiro de qualidade de software no mercado de trabalho. Introduzir níveis e tipos de teste e como estes se inserem no contexto da garantia da qualidade.

## Percurso

```
Aula 01 - O que é qualidade de software?
Aula 02 - Gerenciamento de defeitos
Aula 03 - Introdução aos testes de software.
```
### O que é qualidade de software ?

#### Objetivos

1. Definindo qualidade
2. Normas e padrões de qualidade
3. Medindo a qualidade
4 . Processos de gerenciamento de qualidade de software

## Definindo qualidade

### Definições na literatura

- NBR/ISO 9000:2005: grau no qual um conjunto de características inerentes satisfaz a requisitos.
- Peters (2002): “A qualidade de software é avaliada em termos de atributos de alto nível chamados fatores, que são medidos em relação a atributos de baixo nível, chamados critérios.”
- Sanders (1994): “Um produto de software apresenta qualidade dependendo do grau de satisfação das necessidades dos clientes sob todos os aspectos do produto.”
- Pressman: “Qualidade de software é a conformidade a requisitos funcionais e de desempenho que foram explicitamente declarados, a padrões de desenvolvimento claramente documentados, e a características implícitas que são esperadas de todo software desenvolvido por profissionais.”
- ISO/IEC 25010:2011: “capacidade do produto de software de satisfazer necessidades declaradas e implícitas sob condições especificadas”
- IEEE Standard (2014): “o grau em que um produto de software atende aos requisitos estabelecidos; no entanto a qualidade depende do grau em que esses requisitos representam com precisão as necessidades, desejos e expectativas das partes interessadas”.

### Aspectos importantes:

- Requisitos de software são a base para medir qualidade;
- Padrões especificados definem conjunto de critérios de desenvolvimento;
- Existem requisitos implícitos que não são mencionados que afetam diretamente a qualidade.

### Percepções de qualidade (subjetiva)

| | |
|----------------------|----------------------------------------------------------------------------------------|
| Visão transcendental | Qualidade é reconhecida através de experiência, mas sem uma definição ou metrificação. |
| Visão do usuário | É personalizado de acordo com a necessidade do usuário. |
| Visão de manufatura | Qualidade é relacionada com conformidade aos requerimentos. |
| Visão de produto | Produto com boas propriedades internas metrificadas terá boas qualidades externas. |
| Visão baseada em valor | Representa o “custo-benefício” na visão do cliente. |
| | |

## As normas e padrões de qualidade

### O que são normas técnicas?

Documentos publicados por organizações profissionais que objetivam padronizar determinadas atividades, processos, produtos, etc…

Por que padronizar? é importante para minimizar os erros de comunicação entre a equipe, fazendo com que todos estejam na “mesma pagina”.

- IEEE: “Institute of Electrical and Electronics Engineers”
- ISO: “International Organization for Standardization”
- IEC: “International Electrotechnical Commission”



Família ISO 9000




ISO 9000
Descreve fundamento de sistemas de gestão de qualidade e suas terminologias


ISO 9001
Especifica requisitos para sistema de gestão de qualidade


ISO 9004
Diretrizes que consideram eficácia e eficiência do sistema de gestão da qualidade


ISO 9126
Modelo de qualidade de produto de software


ISO 19011
Diretrizes sobre auditoria de sistemas de gestão de qualidade de software



Normas para engenharia de software




ISO/IEC 14598
Processo de avaliação de produtos de software na visão do desenvolvedor, adquirente e avaliador



ISO/IEC/IEEE 12207: 2017
ISO/IEC/IEEE 15288: 2015

Processos de ciclo de vida de software


ISO 19011
Diretrizes sobre auditoria de sistemas de gestão da qualidade de software


IEEE 1012:2016
Verificação e validação para sistemas, software e hardware


IEEE 730: 2014
Requerimentos para planejamento, controle e execução de processos de garantia de qualidade de software


ISO/IEC/IEEE 15289: 2019
Foco no processo de gerenciamento de informação


ISO/IEC/IEEE 29119: 2013
Vocabulário, processo, documentação, modelos e técnicas para teste



Família SQuaRE




ISO/IEC 25000-25099 (System and Software Quality Requirements and Evaluation)
Substitui ISO/IEC 9126


Quality Requirements Division 2503n

Quality Model Division 2501n

Quality Management Division 2500n

Quality Mensuarement Division 2502n

Quality Evaluation Division 2504n

- Requerimentos de qualidade
- Modelo de Qualidade
- Gerenciamento de qualidade
- Metrificação de qualidade
- Avaliação de qualidade

Os padrões não são obrigatórios, porém são um bom norte para quem deseja ter um sistema sólido de processos, de regras e normas aos projetos.

Lembre-se que a qualidade do produto de software começa no início do processo, lá na parte dos requisitos.

## Medindo a qualidade

Stakeholders - (requisitos) -> Processo de Software (Processo de desenvolvimento e Produto de software (padrões)) -> Software com qualidade.

Qualidade não é teste, você testar um software não garante que o produto será excelente.

# Exercícios

> Q1 - Assinale a alternativa INCORRETA quanto às técnicas de teste:

- [ ] As técnicas baseadas em experiência são efetivas para identificação de defeitos apesar de ser difícil avaliar a cobertura eobter métricas.
- [ ] As técnicas de caixa-preta normalmente são associadas a testes funcionais, quando queremos verificar as funcionalidades do sistema com base nos requisitos, mas sem a preocupação com a estrutura interna.
- [ ] Testes de caixa-branca normalmente são utilizados a nível de componente, pois há uma preocupação em avaliar as instruções e fluxos condicionais no código fonte.
- [X] A técnica de caixa-preta de tabela de decisão é últil quando se tem uma faixa de valores de entrada que são processados da mesma forma, obtendo, portanto, os mesmos resultados. Com essa técnica a quantidade de testes é reduzida e é representativa para todo o conjunto de valores de entrada avaliado.
- [ ] As técnicas de teste servem para auxiliar o analista a identificar condições de teste, casos e seus dados de forma a criar uma suíte de testes eficiente.

> Q2 O processo de validação consiste em:

- [ ] Garantir que os documentos produzidos estão corretos
- [ ] Garantir que não existem erros de arquitetura no software
- [X] Garantir que o software desenvolvido atende aos requisitos e às necessidades do negócio, de acordo com a visão dos stakeholders
- [ ] Utilizar análise estática no software em execução
- [ ] Garantir que o software desenvolvido está sem erros funcionais

> Q3 Sobre as normas técnicas estão CORRETAS:

- I - Documentos duplicados por organizações profissionais que objetivam padronizar determinadas atividades, processos ou produtos;
- II - As únicas organizações que publicam normas são IEE, ISO e IEC;
- III - As normas são importantes para garantir comunicação e padronização de processos na equipe;
- IV - As normas da família ISO 9000 são focadas na gestão de qualidade de software somente;
- V - A norma ISO/IEC 25010 substitui a norma ISO/IEC 9126 quando aos modelos de qualidade de produto de software.

- [ ] I, III, V
- [ ] Todas as alternativas estão corretas
- [X] III, IV, V
- [ ] Todas são incorretas
- [ ] I, II, III

> Q4 Quanto as atividades de processo de teste estão CORRETAS:

- I - Os testes não possuem influência externas, portanto, devem seguir sempre as mesmas decisões e técnicas para todo projeto
- II - As etapas de teste incluem: planejamento, monitoramento, análise, modelagem, implementação, execução e conclusão
- III - Faz parte do planejamento de teste definimos estimativas e prazos
- IV - Os níveis de teste dizem respeito às atividades de testes gerenciadas em um certo nível e visão do software
- V - Os tipos de testes dizem respeito as atividades de testes com base em objetivos, portanto, o mesmo tipo de teste não pode ser aplicado em diferentes níveis de teste.
- VI - A pirâmide de teste ideal consiste na utilização de um grande número de testes automatizados de interface, estando estes na base da pirâmide

- [X] II, III, IV
- [ ] I, III, IV, V
- [ ] I, III, IV, V
- [ ] III, IV, VI
- [ ] II, III, IV, V

> Q5 O gerenciamento de qualidade consiste nas seguintes atividades principais numa visão de mais alto nível:

- [X] Testes de software
- [ ] Controle de qualidade
- [ ] Garantia de qualidade
- [ ] Planejamento de qualidade
- [ ] Melhoria de processos

> Q6 Todas as sentenças são objetivos do teste de software, EXCETO:

- [X] Criar métricas relacionadas ao desempenho dos desenvolvedores do produto
- [ ] Evitar defeitos e avaliar produtos de trabalho
- [ ] Criar confiança no nível de qualidade do sistema
- [ ] Verificar cumprimento de requisitos
- [ ] Validar se atende à necessidade do usuário

> Q7 Sobre o gerenciamento de defeitos estão CORRETAS:

- I - Um defeito pode ser descrito genericamente como qualquer anomalia encontrada no software
- II - A definição de um ciclo de vida do bug deve ser de responsabilidade somente da equipe de qualidade
- III - O analista de qualidade não deve se preocupar em fornecer evidências que auxiliem o desenvolvedor, pois a depuração já é suficiente para correção
- IV - O reporte de defeitos é importante para auxiliar no rastreio de qualidade do software a partir da obtenção de métricas.
- V - O reporte de defeitos aucilia na reprodução e isolamento do defeito de forma a facilitar sua correção

- [ ] Todas estão incorretas
- [ ] I, II, III
- [ ] Todas estão corretas
- [X] I, IV, V
- [ ] III, IV, V

> Q8 Assinale a sentença CORRETA quanto às definições de qualidade de software presente na literatura:

- [X] A qualidade de software é conformidade a requisitos funcionais e desempenho que foram explicitamente declarados, a padrões documentados e a características implícitas que são esperadas de todo software desenvolvido por profissionais.
- [ ] As visões de qualidade podem ser categorizadas como transcendental, do usuário, do produto, baseada em valor e baseada em requisitos.
- [ ] A qualidade de software é fixa para qualquer tipo de produto de software, pois só através de uma visão objetiva consegue-se medir a qualidade
- [ ] Todos os requisitos de um software devem ser explicitamente declarados pelos stakeholders, pois só assim consegue-se uma visão das métricas importantes para qualidade do produto
- [ ] Um software pode ser considerado com qualidade mesmo que não atenda as necessidades do cliente

> Q9 Assinale a alternativa CORRETA quanto a medição de qualidade de software:

- [ ] De acordo com a ISO/IEC 25010, a manuntenibilidade é uma das características do modelo de qualidade do produto em uso
- [ ] As métricas de qualidade só podem ser avaliadas considerando a visão do usuário é a chamada qualidade em uso
- [X] De acordo com a ISO/IEC 25010, existem dois modelos de qualidade do produto e do produto em uso. Ambas possuem características e subcaracterísticas que norteam as métricas de qualidade
- [ ] A qualidade do software só pode ser medida a partir da análise do analista de qualidade, membros do time não precisam se preocupar com métricas
- [ ] A qualidade esterna é medida somente a partir de métricas externas e não é influenciada por atributos internos do software

> Q10 Assinale a afirmativa INCORRETA quanto aos princípios de teste:

- [X] Testes exaustivos em todo o sistema são caros, mas possíveis
- [ ] O teste depende do contexto
- [ ] Um teste mostra presença de defeitos e não a ausência deles
- [ ] Defeitos normalmente se agrupam
- [ ] Ausência de erros é ilusão

> Q11 Na pirâmide de software, quais seriam os testes mais caros a se executarem?

- [ ] Testes unitários
- [ ] Testes de carga
- [ ] Testes de função
- [ ] Testes de integração
- [X] Testes end to end

> Q12 Qual evolução na Engenharia de Software contribuiu para diversas mudanças no papel e atividades de Testes de Software?

- [ ] Processo Unificado
- [ ] Arquiteturas de software distribuído
- [ ] Scrum
- [ ] Kanban
- [X] Advento das metodologias de desenvolvimento de software ágil

> Q13 Complete: "Quando temos um erro sendo apresentado no sistema e o mesmo sempre trava nesse cenário (crash) temos um(a)..."

- [ ] Comportamento não esperado
- [ ] Validação não realizada
- [X] Falha
- [ ] Defeito
- [ ] Engano

> Q14 Qual unidade do sistema um teste unitário valida?

- [ ] A menor unidade, no caso uma funcionalidade
- [ ] A menor unidade, no casoum teste com uma API
- [ ] Um teste de integração de dados
- [ ] A menor unidade, no caso um requisito de negócio
- [X] A menor unidade, uma função ou método

> Q15 Complete: "Quando cometemos um engano e interpretamos incorretamente uma regra de negócio e desenvolvemos uma funcionalidade de forma diferente da esperada, temos um(a)..."

- [ ] Desvio de comportamento
- [ ] Comportamento alternativo
- [ ] Validação incorreta
- [X] Defeito
- [ ] Engano

> Q16 Escolha a alternativa que melhor define a justificativa pela qual testar software é tão importante:

- [ ] É importante para revelar defeitos, aumentar a confiança do time de desenvolvimento na entrega, assegurar a qualidade e por ser uma obrigação do processo de software
- [ ] É importante para revelar e eliminar qualquer possibilidade de defeitos, aumentar a confiança/satisfação do cliente com o softwaRe e assegurar a qualidade
- [ ] É importante para revelar e eliminar qualquer possibilidade de defeitos, aumentar a confiança do time de desenvolvimento e assegurar a qualidade
- [X] É importante para revelar defeitos, aumentar a confiança/satisfação do cliente com o software e assegurar a qualidade

> Q17 Complete: "Quando temos um bug em um sistema de relatórios e na apresentação de dados um comportamento inconsistente surge, temos um(a)..."

- [X] Erro
- [ ] Engano
- [ ] Defeito
- [ ] Comportamento não especificado
- [ ] Verificação incorreta

> Q18 Qual técnica de Testes realizamos sem conhecimento prévio do código e apenas das features do sistema?

- [ ] Teste de negócio
- [ ] Caixa cinza
- [ ] Caixa branca
- [X] Caixa preta
- [ ] Teste de feature

> Q19 Qual técnica de Testes realizamos um processo pelo qual temos total conhecimento do código fonte do sistema?

- [ ] Caixa cinza
- [ ] Testes de código
- [ ] Testes de programação
- [ ] Testes unitários
- [X] Caixa branca

> Q20 Quando queremos testar os limites da aplicação encontrando até que ponto a mesma está preparada para responder estamos fazendo testes de ...?

- [ ] Carga
- [ ] Desempenho
- [ ] Performance
- [X] Stress
- [ ] Aceitação

> Q21 Qual a permissão que o WebDriverWait nos oferece?

- [ ] Permite que você execute ações de interface do usuário em seu teste
- [ ] Permite a integração entre o script de teste e o repectivo browser
- [X] Permite que o código possa interromper a execução do programa ou congele o encadeamento, até que a condição que passamos seja resolvida
- [ ] Permite a criação de repositórios de objetos com elementos contidos numa página Web
- [ ] Permite a identificação de elementos em uma página.

> Q22 De forma objetiva, o que seria o POM?

- [ ] Page Object Model (ou POM) recebe as instruções do navegador e as executa em seguida, oferecendo uma resposta via HTTP
- [ ] Page Object Model (ou POM) cria um repositório com testes unitários capaz de realizar a verificação das funções dentro do código.
- [X] Page Object Model (ou POM) nos permite criar um repositório de objetos com elementos contidos numa página Web
- [ ] Page Object Model (ou POM) nos permite testar os códigos e os elmentos contidos em uma página Web
- [ ] Page Object Model (ou POM) é uma ferramenta de código aberto e multiplataforma, usado para testar aplicações Web pelo browser de forma automatizada

> Q23 Qual o propósito dos Testes de Aceitação?

- [ ] Os testes de aceitação verificam os erros nos códigos para que a unidade não falhe, ele deve encontrar a causa dos problemas e tratar os erros o mais rápido possível
- [ ] Objetiva auxiliar na execução dos frameworks que executam operações lógicas de negócio na camada do servidor.
- [X] Verificar se o softare está pronto e pode ser utilizado pelos usuários, para desempenhar funções e tarefas para os quais o software foi construído
- [ ] Verificar uma parte especifica do código a nível de função, assegurando o bom funcionamento do código
- [ ] Os testes de aceitação têm o propósito de executar os testes iniciais, antes da implementação do software

> Q24 "A __________ consiste em linguagens como Java, Ruby, Python, C# e etc. Após os casos de teste acionados, o código do Selenium será convertido para o formato json."

- [ ] Selenium Actions
- [ ] WebElement
- [X] Selenium Client Library
- [ ] Expected Conditions
- [ ] Locators

> Q25 Sobre a interação com o WebElement, marque a alternativa que aponta três comandos mais utilizados:

- [ ] Submit Keys, Clear e Remove
- [X] Click, Send Keys e Clear
- [ ] Private Key, Click e Remove
- [ ] Explict Wait, Send Keys e WebDrive
- [ ] Remove, Clear e Explict Wait

> Q26 Sobre o Selenium WebDriver é CORRETO afirmar:

- [ ] O Selenium WebDriver é uma ferramenta de automação de testes Web que pode ser integradaapenas com soluções desenvolvidas em Java
- [ ] O Selenium WebDriver usa as instruções dentro do método para a realização dos testes possíveis de execução/verificação
- [X] O Selenium WebDriver usa o própio driver do navegador para a automatização
- [ ] O Selenium WebDriver indicará todos os passos que serão executados antes da execução dos testes em si, como preparação
- [ ] Nenhuma das alternativas

> Q27 Sobre o Selenium Actions, suas ações são executadas por quem?

- [ ] Select
- [X] API Advanced User Interactions, que consiste na classe Selenium Action para realizar essas interações
- [ ] Json (JavaScript Object Notation)
- [ ] POM (Page Object Model)
- [ ] DOM (Document Object Model)

> Q28 Sobre os Testes Unitários, é INCORRETO que:

- [X] Os Testes Unitários dependem de alguns processos ou sistemas externos (Banco de dados, rede, console e etc.)
- [ ] Representa o ato de validar dados válidos e inválidos via I/O sendo aplicado por desenvolvedores ou analistas de testes
- [ ] Esses testes geralmente são escritos por desenvolvedores quando trabalham no código para assegurar que a função especifica está executando como esperado
- [ ] Os Testes Unitários podem ser usados como documentação do própio sistema
- [ ] São testes que verificam se uma parte especifica do código constumeuramente a nível de função está funcionando corretamente

> Q29 Qual a desvantagem de utilizar o localizador By.tagName("tag name")?

- [ ] Pode ocorrer problemas ao percorrer os elementos do DOM
- [ ] Não há um sistema de segurança ao utilizar esta tag
- [ ] É necessário conhecimento em XPath
- [X] Pode haver vários elementos com o mesmo nome da tag
- [ ] Nem todos os navegadores utilizam esta tag

> Q30 A Classe Select só funciona para alguns elementos que seriam:

- [ ] DOM e POM
- [ ] Client Library e POM
- [ ] DOM e option
- [X] HTML select e option
- [ ] HTML WebDrive e option