Este documento apresenta como preparar o ambiente e escrever scripts de teste automatizados de unidade, API e GUI (Web) usando frameworks open-source em Ruby. O documento explica como instalar as ferramentas necessárias, como RSpec, Rest-Client e WebDriver, e fornece exemplos passo a passo de como automatizar testes de unidade, API e interface gráfica.
O documento discute a importância do Git e do Github para iniciantes na área de TI, apresentando os primeiros passos para utilizar essas ferramentas de controle de versão e colaboração. Explica o que é controle de versão e como ele pode ser usado para gerenciar trabalhos acadêmicos, arquivos pessoais e exercícios. Também destaca a importância do Github no mercado de trabalho.
O documento descreve a história inicial do desenvolvimento do Java. Em 1990, a ideia era criar um dispositivo wireless sensível ao toque para controlar diversos dispositivos, mas o projeto não foi adiante. Em 1995, a equipe decidiu criar um navegador capaz de rodar a linguagem Java, chamado de HotJava. Posteriormente, o Java ganhou popularidade por sua portabilidade, sendo usado em diversas áreas como desenvolvimento web, sistemas Android e desktop.
[38º GURU SP] Automação de Testes Web em Ruby com Cucumber e WebdriverJúlio de Lima
Slides da palestra que seria ministrada no 38º GURU SP, evento promovido pelo grupo de usuários Ruby de São Paulo no dia 07 de novembro de 2015.
Nesta palestra, apresento os frameworks Cucumber e WebDriver, usados para automação de testes em aplicações web usando BDD.
O documento discute as etapas e técnicas para realizar a abertura coronária em molares, incluindo: 1) A importância do conhecimento da anatomia dos molares para escolher o ponto de abertura correto e a forma de contorno; 2) As etapas da abertura coronária como trepanação, remoção do teto e limpeza; 3) Diferenças anatômicas entre molares superiores e inferiores que influenciam a técnica.
O documento descreve a anatomia dentária, definindo as partes do dente e sua estrutura. Os dentes são órgãos calcificados implantados nos maxilares superiores e inferiores, compostos principalmente por esmalte, dentina, polpa, ligamentos e alvéolos. Sua principal função é triturar os alimentos para que possam ser ingeridos e digeridos.
Uma adolescente de 14 anos foi ao dentista para uma profilaxia. O dentista observou manchas brancas nos dentes indicando cárie inicial em diversos dentes. Após remover o tecido cariado, o dentista restaurou os dentes com resina composta. O documento também descreve as etapas da cárie dental e medidas preventivas como escovação, uso de fio dental e dieta.
O documento descreve técnicas de utilização de osteótomos de Summers para remodelar o osso alveolar da mandíbula e maxila. As técnicas incluem expansão e compactação da crista óssea para diferentes tipos de osso, elevação atraumática do seio maxilar com ou sem enxerto ósseo, e preparação de áreas para implantes futuros.
O documento apresenta um guia rápido de referência sobre variáveis, tipos de dados, operadores e fluxos de controle na linguagem Java, incluindo a declaração e inicialização de variáveis, tipos primitivos, constantes, operadores aritméticos, relacionais e lógicos. Também aborda comentários, strings, entrada e saída de dados, e convenções de codificação.
O documento discute a importância do Git e do Github para iniciantes na área de TI, apresentando os primeiros passos para utilizar essas ferramentas de controle de versão e colaboração. Explica o que é controle de versão e como ele pode ser usado para gerenciar trabalhos acadêmicos, arquivos pessoais e exercícios. Também destaca a importância do Github no mercado de trabalho.
O documento descreve a história inicial do desenvolvimento do Java. Em 1990, a ideia era criar um dispositivo wireless sensível ao toque para controlar diversos dispositivos, mas o projeto não foi adiante. Em 1995, a equipe decidiu criar um navegador capaz de rodar a linguagem Java, chamado de HotJava. Posteriormente, o Java ganhou popularidade por sua portabilidade, sendo usado em diversas áreas como desenvolvimento web, sistemas Android e desktop.
[38º GURU SP] Automação de Testes Web em Ruby com Cucumber e WebdriverJúlio de Lima
Slides da palestra que seria ministrada no 38º GURU SP, evento promovido pelo grupo de usuários Ruby de São Paulo no dia 07 de novembro de 2015.
Nesta palestra, apresento os frameworks Cucumber e WebDriver, usados para automação de testes em aplicações web usando BDD.
O documento discute as etapas e técnicas para realizar a abertura coronária em molares, incluindo: 1) A importância do conhecimento da anatomia dos molares para escolher o ponto de abertura correto e a forma de contorno; 2) As etapas da abertura coronária como trepanação, remoção do teto e limpeza; 3) Diferenças anatômicas entre molares superiores e inferiores que influenciam a técnica.
O documento descreve a anatomia dentária, definindo as partes do dente e sua estrutura. Os dentes são órgãos calcificados implantados nos maxilares superiores e inferiores, compostos principalmente por esmalte, dentina, polpa, ligamentos e alvéolos. Sua principal função é triturar os alimentos para que possam ser ingeridos e digeridos.
Uma adolescente de 14 anos foi ao dentista para uma profilaxia. O dentista observou manchas brancas nos dentes indicando cárie inicial em diversos dentes. Após remover o tecido cariado, o dentista restaurou os dentes com resina composta. O documento também descreve as etapas da cárie dental e medidas preventivas como escovação, uso de fio dental e dieta.
O documento descreve técnicas de utilização de osteótomos de Summers para remodelar o osso alveolar da mandíbula e maxila. As técnicas incluem expansão e compactação da crista óssea para diferentes tipos de osso, elevação atraumática do seio maxilar com ou sem enxerto ósseo, e preparação de áreas para implantes futuros.
O documento apresenta um guia rápido de referência sobre variáveis, tipos de dados, operadores e fluxos de controle na linguagem Java, incluindo a declaração e inicialização de variáveis, tipos primitivos, constantes, operadores aritméticos, relacionais e lógicos. Também aborda comentários, strings, entrada e saída de dados, e convenções de codificação.
Introdução da odontologia na saúde hospitalarAnaPaula1962
O documento discute a importância da presença de cirurgiões dentistas em hospitais. Aponta que equipes multidisciplinares em hospitais são incompletas sem dentistas e que sua presença pode agilizar diagnósticos, reduzir infecções e melhorar a qualidade de vida dos pacientes. O objetivo é avaliar os benefícios da implementação de cirurgiões dentistas no ambiente hospitalar.
O documento apresenta uma introdução à programação orientada a objetos na linguagem Java, abordando tópicos como: a história e evolução do Java desde sua criação em 1991; as principais distribuições da linguagem (JSE, JEE, JME); a máquina virtual Java e o compilador; e um exemplo simples de um programa "Hello World" em Java.
O documento descreve os tipos de dados suportados pelo MySQL, incluindo tipos numéricos, de data e hora, e strings. Ele explica as categorias de tipos de dados, requisitos de armazenamento, e como escolher o tipo correto para cada coluna para armazenamento eficiente. O documento também compara os tipos de dados do MySQL com outros sistemas como o MS Access.
O documento define termos como sistema, banco de dados, SGDB, dados e informações. Explica que um banco de dados armazena dados relacionados para criar sentido e é o principal componente de um sistema. Também apresenta exemplos de modelos relacionais e não relacionais de banco de dados e onde estes são armazenados e acessados.
O documento discute arrays em Java, incluindo como criá-los, acessar elementos, percorrê-los e ordená-los. É explicado que arrays são objetos que armazenam múltiplas variáveis do mesmo tipo e que cada elemento tem um índice. Métodos como for, foreach, Arrays.sort(), Arrays.copyOf() e Arrays.fill() são apresentados para manipular arrays.
[1] O documento discute os métodos de isolamento do campo operatório em procedimentos odontológicos restauradores, incluindo isolamento absoluto e relativo. [2] O isolamento absoluto utiliza lençol de borracha fixado aos dentes para isolar totalmente a área, enquanto o isolamento relativo usa algodão e dispositivos para isolar parcialmente. [3] O isolamento absoluto fornece maior proteção e visibilidade, mas tem algumas limitações para certos pacientes.
O documento fornece um glossário de termos técnicos em redes de computadores, definindo termos como "address", "ARP", "ATM", "backbone", "binary", "bit", "bridge", "bus", "byte", "cache", "chipset", "clear", "cloud computing", "close", "CMOS", "copy", entre outros.
O documento discute o tratamento de exceções no Java usando os blocos try/catch. Aprendemos que try monitora blocos de código para erros enquanto catch trata erros capturados. Um exemplo mostra como catch pode lidar com uma exceção ArrayIndexOutOfBounds para permitir a continuação do programa.
Programação Orientada a Objetos (POO) com PHP - Parte 1Israel Messias
O documento apresenta os conceitos básicos de programação orientada a objetos em PHP, incluindo padronização de código, instalação do PHP na linha de comando, execução do servidor embutido, paradigmas de programação, classes, objetos, atributos, métodos, herança, construtores e modificadores de acesso.
Em Java, usamos a classe Thread do pacote java.lang para criarmos linhas de execução paralelas. A classe Thread recebe como argumento um objeto com o código que desejamos rodar.
O documento descreve a técnica anestésica intraligamentar, incluindo suas vantagens, lembretes e os três passos do procedimento anestésico: 1) punção inicial na gengiva, 2) introdução da agulha encostando no dente, e 3) injeção do anestésico no ligamento periodontal. A técnica é indolor, eficaz e indicada para toda a arcada dentária.
Os sistemas adesivos são responsáveis por promover união entre dente e restauração.
A evolução dos materiais restauradores estéticos (compósitos e cerâmicas), associada a busca por abordagens mais conservadoras, conferem a etapa adesiva papel fundamental no sucesso clínico
(Demo code and video available at http://fsharpforfunandprofit.com/cap/)
We all want to produce modular and robust code that is easy to test and refactor, and we have design principles such as SOLID that help us do that.
In this talk I'll look at a very different approach to design using "capabilities" and the principle of least authority. I'll show how using these design techniques throughout your core domain (and not just at your API boundary) also leads to well-designed and modular code.
I'll demonstrate how to design and use a capability based approach, how capabilities can be quickly combined and restricted easily, and how capabilities are a natural fit with a REST API that uses HATEAOS.
O documento discute o desenvolvimento dos dentes em bebês, incluindo que os primeiros dentes começam a se formar entre 3-5 meses de gestação, o primeiro dente geralmente aparece entre 4-8 meses, e sinais comuns como aumento de salivação e irritabilidade. Ele também fornece dicas sobre cuidados com a gengiva e escovação dental de bebês.
O documento discute boas práticas para criar testes automatizados rápidos e robustos com Cypress, como fazer autenticação de forma programática, usar atributos data-* para selecionar elementos e não depender de aplicações externas. Também aborda problemas como testes lentos e instáveis.
O documento discute diferentes sistemas cerâmicos utilizados em restaurações odontológicas, como In-Ceram, IPS e.max Press, IPS e.max CAD e suas propriedades, indicações e contraindicações.
1. O documento descreve o que são matrizes e como elas são representadas em pseudocódigo e Pascal. Matrizes são variáveis bidimensionais que precisam de dois índices para identificar cada elemento.
2. Exemplos mostram como ler e imprimir elementos de uma matriz 2x3 e como criar uma matriz 14x3 para representar jogos de loteria.
3. Seis exercícios propõem problemas envolvendo leitura, cálculo e impressão de elementos de matrizes.
O documento descreve como testar uma API REST chamada Mollom API utilizando Maven e Cucumber. Ele explica como encapsular as chamadas para a API usando um conceito similar ao Page Object e como implementar os testes em Cucumber com exemplos de cenários e passos.
[TDC2015] De unitário a aceitação: Automação de testes com CodeceptionQualister
O documento descreve uma palestra sobre automação de testes com o framework Codeception. A palestra aborda conceitos de testes de unidade, integração e aceitação e como automatizá-los com Codeception, PHPUnit, Guzzle e outros frameworks. Também apresenta exemplos práticos de como escrever testes de unidade, integração e aceitação com Codeception.
Introdução da odontologia na saúde hospitalarAnaPaula1962
O documento discute a importância da presença de cirurgiões dentistas em hospitais. Aponta que equipes multidisciplinares em hospitais são incompletas sem dentistas e que sua presença pode agilizar diagnósticos, reduzir infecções e melhorar a qualidade de vida dos pacientes. O objetivo é avaliar os benefícios da implementação de cirurgiões dentistas no ambiente hospitalar.
O documento apresenta uma introdução à programação orientada a objetos na linguagem Java, abordando tópicos como: a história e evolução do Java desde sua criação em 1991; as principais distribuições da linguagem (JSE, JEE, JME); a máquina virtual Java e o compilador; e um exemplo simples de um programa "Hello World" em Java.
O documento descreve os tipos de dados suportados pelo MySQL, incluindo tipos numéricos, de data e hora, e strings. Ele explica as categorias de tipos de dados, requisitos de armazenamento, e como escolher o tipo correto para cada coluna para armazenamento eficiente. O documento também compara os tipos de dados do MySQL com outros sistemas como o MS Access.
O documento define termos como sistema, banco de dados, SGDB, dados e informações. Explica que um banco de dados armazena dados relacionados para criar sentido e é o principal componente de um sistema. Também apresenta exemplos de modelos relacionais e não relacionais de banco de dados e onde estes são armazenados e acessados.
O documento discute arrays em Java, incluindo como criá-los, acessar elementos, percorrê-los e ordená-los. É explicado que arrays são objetos que armazenam múltiplas variáveis do mesmo tipo e que cada elemento tem um índice. Métodos como for, foreach, Arrays.sort(), Arrays.copyOf() e Arrays.fill() são apresentados para manipular arrays.
[1] O documento discute os métodos de isolamento do campo operatório em procedimentos odontológicos restauradores, incluindo isolamento absoluto e relativo. [2] O isolamento absoluto utiliza lençol de borracha fixado aos dentes para isolar totalmente a área, enquanto o isolamento relativo usa algodão e dispositivos para isolar parcialmente. [3] O isolamento absoluto fornece maior proteção e visibilidade, mas tem algumas limitações para certos pacientes.
O documento fornece um glossário de termos técnicos em redes de computadores, definindo termos como "address", "ARP", "ATM", "backbone", "binary", "bit", "bridge", "bus", "byte", "cache", "chipset", "clear", "cloud computing", "close", "CMOS", "copy", entre outros.
O documento discute o tratamento de exceções no Java usando os blocos try/catch. Aprendemos que try monitora blocos de código para erros enquanto catch trata erros capturados. Um exemplo mostra como catch pode lidar com uma exceção ArrayIndexOutOfBounds para permitir a continuação do programa.
Programação Orientada a Objetos (POO) com PHP - Parte 1Israel Messias
O documento apresenta os conceitos básicos de programação orientada a objetos em PHP, incluindo padronização de código, instalação do PHP na linha de comando, execução do servidor embutido, paradigmas de programação, classes, objetos, atributos, métodos, herança, construtores e modificadores de acesso.
Em Java, usamos a classe Thread do pacote java.lang para criarmos linhas de execução paralelas. A classe Thread recebe como argumento um objeto com o código que desejamos rodar.
O documento descreve a técnica anestésica intraligamentar, incluindo suas vantagens, lembretes e os três passos do procedimento anestésico: 1) punção inicial na gengiva, 2) introdução da agulha encostando no dente, e 3) injeção do anestésico no ligamento periodontal. A técnica é indolor, eficaz e indicada para toda a arcada dentária.
Os sistemas adesivos são responsáveis por promover união entre dente e restauração.
A evolução dos materiais restauradores estéticos (compósitos e cerâmicas), associada a busca por abordagens mais conservadoras, conferem a etapa adesiva papel fundamental no sucesso clínico
(Demo code and video available at http://fsharpforfunandprofit.com/cap/)
We all want to produce modular and robust code that is easy to test and refactor, and we have design principles such as SOLID that help us do that.
In this talk I'll look at a very different approach to design using "capabilities" and the principle of least authority. I'll show how using these design techniques throughout your core domain (and not just at your API boundary) also leads to well-designed and modular code.
I'll demonstrate how to design and use a capability based approach, how capabilities can be quickly combined and restricted easily, and how capabilities are a natural fit with a REST API that uses HATEAOS.
O documento discute o desenvolvimento dos dentes em bebês, incluindo que os primeiros dentes começam a se formar entre 3-5 meses de gestação, o primeiro dente geralmente aparece entre 4-8 meses, e sinais comuns como aumento de salivação e irritabilidade. Ele também fornece dicas sobre cuidados com a gengiva e escovação dental de bebês.
O documento discute boas práticas para criar testes automatizados rápidos e robustos com Cypress, como fazer autenticação de forma programática, usar atributos data-* para selecionar elementos e não depender de aplicações externas. Também aborda problemas como testes lentos e instáveis.
O documento discute diferentes sistemas cerâmicos utilizados em restaurações odontológicas, como In-Ceram, IPS e.max Press, IPS e.max CAD e suas propriedades, indicações e contraindicações.
1. O documento descreve o que são matrizes e como elas são representadas em pseudocódigo e Pascal. Matrizes são variáveis bidimensionais que precisam de dois índices para identificar cada elemento.
2. Exemplos mostram como ler e imprimir elementos de uma matriz 2x3 e como criar uma matriz 14x3 para representar jogos de loteria.
3. Seis exercícios propõem problemas envolvendo leitura, cálculo e impressão de elementos de matrizes.
O documento descreve como testar uma API REST chamada Mollom API utilizando Maven e Cucumber. Ele explica como encapsular as chamadas para a API usando um conceito similar ao Page Object e como implementar os testes em Cucumber com exemplos de cenários e passos.
[TDC2015] De unitário a aceitação: Automação de testes com CodeceptionQualister
O documento descreve uma palestra sobre automação de testes com o framework Codeception. A palestra aborda conceitos de testes de unidade, integração e aceitação e como automatizá-los com Codeception, PHPUnit, Guzzle e outros frameworks. Também apresenta exemplos práticos de como escrever testes de unidade, integração e aceitação com Codeception.
O documento discute as novidades da plataforma Java EE 7, incluindo o foco em serviços de computação em nuvem, auto provisionamento e multi-tenancy. A especificação Java EE 7 também trará melhorias em APIs existentes como JPA, JSF e JAX-RS e novas APIs como JSON-P e WebSocket. O lançamento está previsto para o primeiro semestre de 2013.
Este documento descreve um laboratório prático no qual o estudante deve criar e configurar vários recursos na nuvem do Google Cloud, como instâncias, clusters Kubernetes e balanceadores de carga, para atender às necessidades de um projeto fictício. O estudante deve completar as tarefas dentro do tempo limite para obter a pontuação máxima.
Este documento descreve um laboratório prático no qual o estudante deve criar e configurar vários recursos na nuvem do Google Cloud, como instâncias, clusters Kubernetes e balanceadores de carga, para atender às necessidades de um projeto fictício. O estudante deve completar as tarefas dentro do tempo limite para obter a pontuação máxima.
O documento descreve a plataforma .NET da Microsoft. Resumidamente:
(1) A plataforma .NET é uma iniciativa da Microsoft que visa uma plataforma única para desenvolvimento e execução de sistemas e aplicações; (2) O código é compilado em MSIL e executado na CLR interagindo com o framework .NET; (3) Os principais tipos de compilados .NET são EXE, DLL, ASPX e ASMX.
Paralelize seus testes web e mobile para ter feedbacks mais rápidosElias Nogueira
O documento discute estratégias para executar testes automatizados de forma paralela em web e mobile. Ele apresenta como usar grids com Selenium e Appium para distribuir testes em vários nós, reduzindo o tempo de execução. A solução proposta utiliza containers Docker para criar grids dinâmicas que escalam automaticamente com base na demanda de testes.
Este documento fornece uma introdução ao Selenium, um framework para automação de testes web. Ele descreve as ferramentas Selenium IDE, Selenium Remote Control e Selenium Grid, além de mostrar como gravar, editar e executar testes funcionais com o Selenium IDE.
Introdução À Automação de Testes com Seleniumrodrigogouveia
Palestra sobre automação de testes funcionais utilizando a ferramenta Selenium, realizada em 12/07/2017 para alunos e professores do Instituto Federal da Paraíba(IFPB)
Tópicos cobertos:
- Importância dos testes no desenvolvimento de software
- Selenium IDE
- Selenium WebDriver
- Padrão de projeto Page Object
- Boas práticas
Introduzindo StimulusJS: o novo Framework JavaScript para Ruby On Rails.Sergio Lima
O documento introduz o framework JavaScript StimulusJS e discute como ele pode ser usado com Ruby on Rails. O palestrante descreve sua experiência usando StimulusJS em artigos e projetos, explica o que é StimulusJS e seus benefícios, como funciona usando o padrão Controller-Target-Action, e demonstra sua implementação em um projeto Rails.
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...tdc-globalcode
O documento resume as estratégias e ferramentas para testes de performance, com foco no JMeter. Ele discute porque testar performance é importante, as estratégias de teste de carga, desempenho e estresse. Também demonstra como criar e executar testes no JMeter, interpretar resultados e fornecer dicas de boas práticas.
Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...Edlaine Zamora
O documento resume as estratégias e ferramentas para testes de performance, incluindo: (1) testes de carga, desempenho e stress; (2) a ferramenta JMeter para automatizar testes; (3) exemplos de melhorias detectadas em testes como aumento de hardware e otimização de código.
Palestra sobre Automação de Testes com Rest-AssuredQualister
Este documento resume um treinamento sobre testes em APIs REST utilizando a biblioteca Rest-Assured. O treinamento apresenta o que é REST e como testar APIs REST manualmente e com Rest-Assured, incluindo exemplos de validação de esquema, corpo e cabeçalho das respostas. Além disso, fornece instruções passo-a-passo para a implementação de um projeto de teste com Maven, JUnit e Rest-Assured.
TDC2015: Testes em APIs REST com Rest-AssuredJúlio de Lima
Este documento fornece informações sobre testes em APIs REST utilizando a biblioteca Rest-Assured. Ele resume como testar APIs manualmente e automaticamente, validar respostas e utilizar ferramentas como Maven e JUnit para estruturar e executar os testes. O documento também apresenta um exemplo prático de teste de uma API REST utilizando Rest-Assured.
O documento discute como criar testes de interface do usuário (e2e) que sejam rápidos, robustos e de fácil manutenção. Ele explica a importância da automação de testes, os problemas comuns de testes e2e, e estratégias para torná-los independentes, paralelizados e baseados em padrões de teste.
Como melhoramos a performance dos testes automatizados com py.test e factoryboyLeonardo Galani
O documento discute como a equipe melhorou os testes automatizados usando py.test e factoryboy. Inicialmente, os testes eram desenvolvidos separadamente da equipe de desenvolvimento e erros só eram encontrados no Jenkins. Posteriormente, a equipe adotou py.test e factoryboy para gerar dados de teste e dependências de forma dinâmica, permitindo testes mais completos e integrados ao desenvolvimento. Isso melhorou a qualidade dos testes e facilitou a adoção de padrões de teste na equipe.
Testando sua aplicação asp.net mvc de forma automatizada de ponta a pontatdc-globalcode
Nessa palestra mostrarei como criar uma estrutura de testes automatizados para a sua aplicação ASP.NET MVC cobrindo os principais aspectos do seu sistema.
Automação de Teste para REST, Web e MobileElias Nogueira
O documento apresenta uma introdução à automação de testes para APIs REST, interfaces web e aplicativos móveis, discutindo ferramentas como REST Assured, Selenium WebDriver e Appium.
O documento introduz o Cypress, uma ferramenta para testes de frontend. Ele descreve a instalação e estrutura básica do Cypress, incluindo comandos úteis e exemplos de como escrever testes que interagem com sites reais como o GitHub e o DuckDuckGo.
Similaire à [TDC2016] Ruby in Tests: Automatizando testes de Unidade, API e GUI (Web) (20)
[ATC2021] Distribuição de Testes em Diferentes CamadasJúlio de Lima
O documento discute a distribuição de testes em diferentes camadas de software. É apresentada uma visão geral de camadas como componentes organizados para reduzir a complexidade do sistema, com exemplos de camadas como controller e service. Também são discutidos níveis de teste como unidade, integração e aceitação e como mapear testes a essas camadas para obter benefícios como velocidade e cobertura de testes.
A brand new Test Heuristic created by Júlio de Lima.
Modern web applications are built using components made by hand and this causes a series of failures to arise.
With this in mind, the ALTER FACE heuristic proposes tests that reveal flaws related to the way in which Web applications are built based on their components. In the next slides, we will see in detail what constitutes this brand new heuristic.
Reach me out for doubts or feedbacks:
iam@juliodelima.com.br
[ScrumDay2020] A evolução da responsabilidade em testesJúlio de Lima
O documento descreve a evolução da responsabilidade por testes em diferentes metodologias de desenvolvimento de software, desde a tradicional até a ágil matura. Apresenta modelos onde testes são realizados por uma equipe separada ou incorporados ao time de desenvolvimento, e discute a importância da automação e cultura de teste.
Reducing the scope of load test analysis (STAREast 2020)Júlio de Lima
Load testing execution produces a huge amount of data. Investigation and analysis are time-consuming, and numbers tend to hide important information about issues and trends. using machine learning is a good way to solve data issues by giving meaningful insights about what happened during test execution. Julio Cesar de Lima Costa will show you how to use K-means clustering, a machine learning algorithm, to reduce almost 300,000 records to fewer than 1,000 and still get good insights into load testing results. He will explain K-means clustering, detail what use cases and applications this method can be used in, and give the steps to help you reproduce a K-means clustering experiment in your own projects. You'll learn how to use this machine learning algorithm to reduce the scope of your load testing and getting meaningful analysis from your data faster.
[TDC2019] Inteligência Artificial e Testes in a NutshellJúlio de Lima
O documento discute como a inteligência artificial pode ser aplicada para melhorar os testes de software, incluindo a geração automática de testes, identificação de testes problemáticos e reconhecimento de elementos de interface do usuário. Também explora como a análise de dados de teste usando clustering pode ajudar a identificar falhas no desempenho do sistema.
[GaragemTalks2019] Cultura de Testes e Qualidade de SoftwareJúlio de Lima
Palestra ministrada no GaragemTalks, na Cielo em 26 de abril de 2019.
O objetivo foi de demonstrar como uma cultura de qualidade pode influenciar a entrega de produtos de qualidade. Também, de mostrar como técnicas de teste podem ser aplicadas em áreas não necessáriamente ligadas a desenvolvimento de software.
[MoT SP #1] PRISMA para Testes Baseados em RiscoJúlio de Lima
Palestra ministrada no Ministry of Testing São Paulo, primeira edição.
Fala, principalmente, sobre como usar riscos para digiris seus testes, sejam eles executados a partir de casos de teste ou de testes exploratórios.
Abordagens mencionadas na apresentação:
- Heurísticas (http://testobsessed.com/wp-content/uploads/2011/04/testheuristicscheatsheetv1.pdf)
- Session-Based Test Management (http://www.satisfice.com/sbtm/)
- PRISMA (https://www.bcs.org/upload/pdf/prisma-veenendaal.pdf)
O documento discute o mindset de QA em diferentes contextos como tradicional, ágil e pós-ágil. Ele descreve como o papel do QA muda em cada contexto, passando de descrever casos de teste para desenvolvedores tradicionais para automatizar testes e contribuir para o código em contextos mais ágeis. Ele também discute a transição entre esses contextos e a importância da mudança e do compartilhamento de conhecimento.
[DevelopersBR-2018] Testes de performance usando a nuvemJúlio de Lima
Júlio de Lima apresenta sobre testes de performance usando a nuvem. Ele discute duas estratégias: 1) usar instâncias escravas do Apache JMeter para execução distribuída dos testes localmente e 2) usar ferramentas de teste de performance na nuvem como o BlazeMeter para execução de testes de larga escala.
[7Masters Aug, 2018] Escolhas durante automação de testes de APIJúlio de Lima
O documento discute as escolhas durante a automação de testes de API, incluindo se testar cenários ou endpoints, usar testes funcionais ou baseados em contratos, usar mocks ou integrações, testes de regressão ou smoke, e testes de desempenho ou carga.
[Front in Sampa 2018] Desenvolvendo como QAsJúlio de Lima
O documento apresenta uma discussão sobre testes de software para uma calculadora desenvolvida em React. Ele discute os requisitos funcionais, validação da estrutura dos componentes, integração entre componentes, automação de testes funcionais e de interface gráfica usando bibliotecas como Jest, Chai e Enzyme.
O documento discute as diferentes abordagens de teste de qualidade de software (QA) em contextos tradicionais, ágeis e pós-ágeis. Ele descreve como o papel do QA muda em cada contexto e enfatiza a importância de aprender novas habilidades para acompanhar a transição entre esses contextos. O documento também fornece recomendações gerais para QA, como compartilhar conhecimento e estar aberto a discussões.
[QANinjaConf2017] Testes de Regressão Visual com Galen FrameworkJúlio de Lima
O documento discute testes de regressão visual, introduzindo o framework Galen. Descreve como o Galen pode ser usado para validar posicionamento, tamanhos, textos e outros aspectos visuais de páginas web. Fornece exemplos de comandos e especificações que podem ser usados.
[PHPConference 2016] Criando Mocks com ProphecyJúlio de Lima
Palestra ministrada em 10 de dezembro de 2016 no PHPConference Brasil, o maior evento de PHP da américa latina.
Neste dia, falei e fiz um Live Coding demonstrando conceitos e práticas na criação de Mocks.
Repositório abaixo:
https://github.com/juliodelimas/criando-mocks-prophecy
[QANinjaConference] Carreira em Testes: Ainda vale a pena?Júlio de Lima
A palestra discute se ainda vale a pena seguir carreira em testes de software. Apresenta os desafios enfrentados por testadores tradicionais e contemporâneos, as oportunidades de aprendizagem e especialização, e como os salários para testadores, analistas e automatizadores se comparam ao de desenvolvedores de QA. Defende que a profissão vem sendo reconhecida como indispensável e pode proporcionar satisfação por meio da colaboração, aprendizagem constante e geração de valor.
[QANinjaConference] Automação de Testes com CodeceptionJúlio de Lima
O documento discute a automação de testes com o framework Codeception, apresentando um exemplo de teste de aceitação em PHP usando o DSL do Codeception. Também menciona outros frameworks que podem ser usados para automação de testes como PHPUnit com Guzzle ou WebDriver.
[PHPConferenceBR] Automação de testes com CodeceptionJúlio de Lima
O documento fornece informações sobre automação de testes usando Behavior Driven Development (BDD) e o framework Codeception. Ele discute como o Codeception permite escrever testes de forma orientada a comportamentos em uma Domain Specific Language (DSL) simples. O documento também mostra exemplos de como automatizar testes de unidade e de aceitação com Codeception.
[UNIP2015] Testando a Performance de Aplicações Web com JMeterJúlio de Lima
O documento discute testes de performance de aplicações web usando o Apache JMeter. Explica os principais conceitos como configuração, gravação, execução e monitoramento de testes. Também aborda boas práticas como simular cenários reais e fazer regressão após mudanças na aplicação.
DevOps é um movimento que prega a maximização da comunicação entre equipes de desenvolvimento e operações, além da automação da infraestrutura e monitoração de software. Isso traz benefícios como agilidade nos testes e ambientes confiáveis. Na abordagem DevOps, testadores contribuem automatizando testes e infraestrutura, melhorando a qualidade e velocidade de entrega de software.
[TICNOVA2015] Palestra sobre Automação de TestesJúlio de Lima
Nesta palestra faço uma breve instrodução a automação de teste e os níveis no qual ela pode ser aplicada dentro do ciclo de desenvolvimento e testes de software.
Ao fim, foi feito um hands on demonstrando como automatizar um teste em aplicação Desktop usando TestComplete, assista aqui:
https://www.youtube.com/watch?v=Sey_XY9Yz3c
Em um mundo cada vez mais digital, a segurança da informação tornou-se essencial para proteger dados pessoais e empresariais contra ameaças cibernéticas. Nesta apresentação, abordaremos os principais conceitos e práticas de segurança digital, incluindo o reconhecimento de ameaças comuns, como malware e phishing, e a implementação de medidas de proteção e mitigação para vazamento de senhas.
As classes de modelagem podem ser comparadas a moldes ou
formas que definem as características e os comportamentos dos
objetos criados a partir delas. Vale traçar um paralelo com o projeto de
um automóvel. Os engenheiros definem as medidas, a quantidade de
portas, a potência do motor, a localização do estepe, dentre outras
descrições necessárias para a fabricação de um veículo
A linguagem C# aproveita conceitos de muitas outras linguagens,
mas especialmente de C++ e Java. Sua sintaxe é relativamente fácil, o que
diminui o tempo de aprendizado. Todos os programas desenvolvidos devem
ser compilados, gerando um arquivo com a extensão DLL ou EXE. Isso torna a
execução dos programas mais rápida se comparados com as linguagens de
script (VBScript , JavaScript) que atualmente utilizamos na internet
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...Faga1939
Este artigo tem por objetivo apresentar como ocorreu a evolução do consumo e da produção de energia desde a pré-história até os tempos atuais, bem como propor o futuro da energia requerido para o mundo. Da pré-história até o século XVIII predominou o uso de fontes renováveis de energia como a madeira, o vento e a energia hidráulica. Do século XVIII até a era contemporânea, os combustíveis fósseis predominaram com o carvão e o petróleo, mas seu uso chegará ao fim provavelmente a partir do século XXI para evitar a mudança climática catastrófica global resultante de sua utilização ao emitir gases do efeito estufa responsáveis pelo aquecimento global. Com o fim da era dos combustíveis fósseis virá a era das fontes renováveis de energia quando prevalecerá a utilização da energia hidrelétrica, energia solar, energia eólica, energia das marés, energia das ondas, energia geotérmica, energia da biomassa e energia do hidrogênio. Não existem dúvidas de que as atividades humanas sobre a Terra provocam alterações no meio ambiente em que vivemos. Muitos destes impactos ambientais são provenientes da geração, manuseio e uso da energia com o uso de combustíveis fósseis. A principal razão para a existência desses impactos ambientais reside no fato de que o consumo mundial de energia primária proveniente de fontes não renováveis (petróleo, carvão, gás natural e nuclear) corresponde a aproximadamente 88% do total, cabendo apenas 12% às fontes renováveis. Independentemente das várias soluções que venham a ser adotadas para eliminar ou mitigar as causas do efeito estufa, a mais importante ação é, sem dúvidas, a adoção de medidas que contribuam para a eliminação ou redução do consumo de combustíveis fósseis na produção de energia, bem como para seu uso mais eficiente nos transportes, na indústria, na agropecuária e nas cidades (residências e comércio), haja vista que o uso e a produção de energia são responsáveis por 57% dos gases de estufa emitidos pela atividade humana. Neste sentido, é imprescindível a implantação de um sistema de energia sustentável no mundo. Em um sistema de energia sustentável, a matriz energética mundial só deveria contar com fontes de energia limpa e renováveis (hidroelétrica, solar, eólica, hidrogênio, geotérmica, das marés, das ondas e biomassa), não devendo contar, portanto, com o uso dos combustíveis fósseis (petróleo, carvão e gás natural).
2. Globalcode – Open4education
Objetivo
Ao fim da palestra, você saiba como preparar o
ambiente e escrever scripts de teste automatizados de
unidade, API e GUI (Web) usando frameworks open-
source em Ruby.
3. Globalcode – Open4education
"RubyInTests"
O nome da palestra baseia-se em uma série de artigos
de minha autoria originados de um
#desafioAgileTesters feito pelo amigo Diego Blond
(@PerdidoNoTeste).
Conheçam mais sobre o desafio e a comunidade Agile
Testers:
bit.ly/desafioAgileTesters2016
4. Globalcode – Open4education
O conceito
Unidade API GUI
Métodos de uma classe
que serão testados de
forma isolada
Métodos que utilizam
as unidades de forma
conjunta para receber,
processar e devolver
informações do sistema
Interface gráfica, que
consome as APIs,
apresentando suas
informações de
forma amigável
Application Programming Interface Graphical user interface
6. Globalcode – Open4education
Preparando o ambiente
1. Instale o Ruby 2.0
rubyinstaller.org
* Adicione o diretório do Ruby às variáveis de ambiente
2. Baixe o DevKit na mesma URL e extraia-o em C:Ruby200dk
3. Instale o DevKit executando as linhas abaixo no prompt
ruby C:Ruby200dkdk.rb init
ruby C:Ruby200dkdk.rb install
4. Instale a Gem do Bundler
Digite gem install bundler no prompt de comando
7. Globalcode – Open4education
Preparando o projeto
1. Crie o diretório “RubyInTestTDC” e acesse-o via prompt
2. Execute o comando bundle init
3. Agora o arquivo Gemfile foi criado
Adicionaremos a ele todas os frameworks que utilizaremos
4. Abra o Gemfile e substitua seu conteúdo pelas linhas abaixo:
source "http://rubygems.org"
gem 'rspec', '~> 3.3.0'
gem 'rest-client', '~> 1.8'
gem 'selenium-webdriver', '2.48.1'
gem 'sinatra' # Para o app de teste
5. Execute o comando bundle install
9. Globalcode – Open4education
Automatizando testes de
unidade
# C:RubyInTestTDCavaliacao_class.rb
class Avaliacao
def avaliar(notaprova, notatrabalho)
if (notaprova >= 7)
if (notatrabalho >= 7)
return "Aprovado"
else
return "Exame"
end
else
return "DP"
end
end
end
Para demonstrar este tipo de teste, usaremos a class Avaliação, que
possui um método chamado “avaliar”, que recebe dois parâmetros:
notaprova e notatrabalho.
10. Globalcode – Open4education
Automatizando testes de
unidade
# C:RubyInTestTDCspecunitavaliacao_spec.rb
require_relative "../../avaliacao_class"
describe Avaliacao do
it "alunos com notas maiores ou iguais a 7 são aprovados" do
# Arrange
avaliacao = Avaliacao.new()
# Act
resultado = avaliacao.avaliar(7, 7)
# Assert
expect(resultado).to eq("Aprovado")
end
end
Teríamos que desenvolver três testes de unidade para testar o método
avaliar, eles seguem a mesma estrutura do método abaixo:
11. Globalcode – Open4education
Automatizando testes de
unidade
A execução dos testes de unidade se dá através do comando:
rspec C:RubyInTestTDCspecunitavaliacao_spec.rb --color
Veremos o resultado semelhante ao abaixo:
.
Finished in 0 seconds (files took 0.1716 seconds to load)
1 example, 0 failures
Digamos que tenhamos esquecido que a nota de corte era 7 e então
mudamos no código para 8. Ao rodar, veremos o erro abaixo:
Failure/Error: expect(resultado).to eq("Aprovado")
expected: "Aprovado"
got: "DP"
12. Globalcode – Open4education
Automatizando testes de API
Para demonstrar este tipo de teste, usaremos uma API REST chamada “escola”,
que consome a classe e método que testamos anteriormente.
Ela está disponível no endereço:
http://localhost:4567/escola/api/
Essa API possui apenas um recurso e um método:
POST avaliar
@notaprova (String)
@notatrabalho (String)
Resposta:
@status (String) [fail/success]
@message (String)[Aprovado/Exame/DP]
13. Globalcode – Open4education
Automatizando testes de API
O RSpec fornece suporte a todos os métodos utilizados em API Rest, dentre
eles: GET, POST, PUT, DELETE.
Veremos aqui um exemplo utilizando o método POST, para avaliar o aluno
A resposta proveniente da API, obtido através da propriedade “body" do objeto
"resposta", geralmente vem em formato JSON, semelhante à que temos abaixo:
{"status":"success","message":"Aprovado"}
# Executando a requisição
resposta = RestClient.post(
'http://localhost:4567/escola/api/avaliar',
:notaprova => '7',
:notatrabalho => '7'
)
# Chamando o framework Rest-Client
require 'rest-client'
14. Globalcode – Open4education
Automatizando testes de API
Então é necessário converte-la em objeto estruturado para que possamos ter
acesso à resposta como um objeto, veja:
E, por fim, executamos as validações:
# Executando a requisição
resposta = RestClient.post(
'http://localhost:4567/escola/api/avaliar',
:notaprova => '7',
:notatrabalho => '7'
)
# Convertendo o resultado de JSON para Object
corpo = JSON.parse(resposta.body, object_class: OpenStruct)
# Validando resultados
expect(corpo.status).to eq("success")
expect(corpo.message).to eq("Aprovado")
15. Globalcode – Open4education
Automatizando testes de API
Agora já sabemos como interagir com a API e validar os resultados. O próximo
passo é criar a estrutura do teste usando RSpec, já sabemos como fazer isso:
Observações:
• O require é necessário para podermos utilizar o framework Rest-Client;
• Os contextos facilitam a visualização dos resultados;
require 'rest-client'
describe "Gerenciar API Escola" do
context "/avaliar" do
context "GET" do
it "alunos com notas maiores ou iguais a 7 são aprovados" do
# Interações com a API e validações
end
end
end
end
16. Globalcode – Open4education
Automatizando testes de API
# C:RubyInTestTDCspecapiescola_spec.rb
require 'rest-client'
describe "Gerenciar API Escola" do
context "/avaliar" do
context "GET" do
it "alunos com notas maiores ou iguais a 7 são aprovados" do
# Executando a requisição
resposta = RestClient.post(
'http://localhost:4567/escola/api/avaliar',
:notaprova => '7',
:notatrabalho => '7'
)
# Convertendo o resultado de JSON para Object
corpo = JSON.parse(resposta.body, object_class: OpenStruct
# Validando resultados
expect(corpo.status).to eq("success")
expect(corpo.message).to eq("Aprovado")
end
end
end
end
Código completo:
17. Globalcode – Open4education
Automatizando testes de API
A execução dos testes de API também podem ser executado com o mesmo comando
que usamos para executar os testes de unidade:
rspec C:RubyInTestTDCspecapiescola_spec.rb --color
Mas, como usamos contextos, podemos usar o parâmetro --format documentation,
após o parâmetro --color para que vejamos os resultados no formato de
documentação:
rspec C:RubyInTestTDCspecapiescola_spec.rb --color --format
documentation
E então os resultados aparecerão da seguinte forma:
Gerenciar API Escola
/avaliar
GET
alunos com notas maiores ou iguais a 7 sao aprovados
Finished in 0.0468 seconds (files took 0.5148 seconds to load)
1 example, 0 failures
18. Globalcode – Open4education
Automatizando testes de GUI
Para demonstrar este tipo de teste, usaremos uma aplicação web chamada
“escola”, que consome a API que testamos anteriormente.
Ela está disponível no endereço:
http://localhost:4567/escola/web/
Esta aplicação permite que informemos duas notas e, após clicar no botão
“Avaliar”, nos devolve o status atual do aluno.
Iremos automatizar o seguinte cenário:
1. Abrir e maximizar o browser Firefox;
2. Acessar a aplicação web;
3. Preencher o formulário;
4. Clicar no botão “Avaliar”;
5. Validar que a mensagem “Aprovado" foi apresentada.
19. Globalcode – Open4education
Automatizando testes de GUI
1. Abrir e maximizar o browser Firefox
navegador = Selenium::WebDriver.for :firefox
navegador.manage.window.maximize()
2. Acessar a aplicação web
navegador.get('http://localhost:4567/escola/web/')
3. Preencher o formulário
navegador.find_element(:name, 'notaprova').send_keys("7")
navegador[:name => 'notatrabalho'].send_keys("7")
4. Clicar no botão “Avaliar”;
navegador.find_element(:id, 'avaliar').click()
Outra forma de fazer
find_element
20. Globalcode – Open4education
Automatizando testes de GUI
5. Validar que a mensagem “Aprovado" foi apresentada
expect(navegador.find_element(:id, 'message').text).to
eq("Aprovado")
# Fechar o browser
navegador.close()
Observação:
Não esqueça de adicionar o require ‘selenium-webdriver’ no topo do arquivo
para que seja usado o valor transporte.
require 'selenium-webdriver'
21. Globalcode – Open4education
Automatizando testes de GUI
Código completo:
# C:RubyInTestTDCspecguiescola_spec.rb
require 'selenium-webdriver'
describe "Gerenciar Site Escola" do
context "Avaliar" do
it "alunos com notas maiores ou iguais a 7 são aprovados" do
navegador = Selenium::WebDriver.for :firefox
navegador.manage.window.maximize()
# Acessando a página inicial do QuickLoja
navegador.get('http://localhost:4567/escola/web/')
# Preenchendo o formulário
navegador.find_element(:name, 'notaprova').send_keys("7")
navegador[:name => 'notatrabalho'].send_keys("7")
navegador.find_element(:id, 'avaliar').click()
# Validando que entrou
expect(navegador.find_element(:id, 'message').text).to eq("Aprovado")
# Fechar o browser
navegador.close()
end
end
end
22. Globalcode – Open4education
Relatório em HTML
Uma vez que já automatizamos os testes em todas as camadas, podemos
rodar os testes e obter os resultados em formato HTML. Para isso,
executaremos o comando abaixo:
O resultado será semelhante ao apresentado abaixo:
rspec C:RubyInTestTDCspec --format html --out
C:RubyInTestTDCrelatorio.html