SlideShare a Scribd company logo
DEIXE O TESTE INFECTAR
VOCÊ
AUTOMATIZANDO OS TESTES DE SUAS
APLICA ÕES RUBYÇ
Hercules Lemke Merscher - @hlmerscher
IT'S ME, HERCULES.
DESENVOLVEDOR
CRIADOR DO “DOJO, ONDE?”
http://dojoonde.herculesdev.com.br
Integrante do TUX-ES
POR QUE AUTOMATIZAR?
PORQUE SIM!!!
NÃO É RESPOTA
MOTIVOS
Erros recorrentes
MOTIVOS
O COMPUTADOR TESTA MUITO MAIS RÁPIDO
MOTIVOS
O COMPUTADOR TESTA TUDO SEM CANSAR
MOTIVOS
LEI DE MURPHY
#include<stdio.h>
int main(){
printf("Hello Worldn");
return 0;
}
NO INÍCIO
TESTANDO
$ gcc hello.c -o hello
$ ./hello
Hello World
OK
MAIS UM POUCO
#include<stdio.h>
int soma(int a, int b){
return a + b;
}
int main(){
printf("%dn", soma(2, 2) );
return 0;
}
TESTANDO
$ gcc soma.c -o soma
$ ./soma
4
CARA EXPERTO
#include<stdio.h>
int soma(int a, int b){
return a + b;
}
int main(){
printf("A soma de 2+2 = ");
printf("%dn", soma(2, 2) );
return 0;
}
NOVAMENTE... COM ÉQUIO
$ gcc soma.c -o soma
$ ./soma
A soma de 2+2 = 4
AGORA VAMOS AO MUNDO
REAL?
E SE,
TESTASSEMOS PRIMEIRO?
É POSSÍVEL!
TEST DRIVEN DEVELOPMENT
CICLOS DO TDD
BABY STEPS
FRAMEWORKS DE TESTE
PARA RUBY
Test Unit
http://test-unit.rubyforge.org/
RSpec
http://rspec.info/
Mini Test
http://docs.seattlerb.org/minitest/
INSTALANDO
Test Unit
$ gem install test-unit
RSpec
$ gem install rspec
Mini Test
$ gem install minitest
TEST UNIT
require "test/unit"
require "./calc"
class CalculadoraTest < Test::Unit::TestCase
def test_soma_2_mais_2
calc = Calculadora.new
assert_equal 4, calc.soma(2, 2)
end
end
RED
$ ruby calc_test.rb
Run options:
# Running tests:
E
Finished tests in 0.000854s, 1171.2208 tests/s, 0.0000
assertions/s.
1) Error:
test_soma_2_mais_2(CalculadoraTest):
NameError: uninitialized constant CalculadoraTest::Calculadora
calc_test.rb:5:in `test_soma_2_mais_2'
1 tests, 0 assertions, 0 failures, 1 errors, 0 skips
RED
class Calculadora
end
RED
$ ruby calc_test.rb
Run options:
# Running tests:
E
Finished tests in 0.000807s, 1238.5972 tests/s, 0.0000
assertions/s.
1) Error:
test_soma_2_mais_2(CalculadoraTest):
NoMethodError: undefined method `soma' for
#<Calculadora:0x00000000ef0b00>
calc_test.rb:7:in `test_soma_2_mais_2'
1 tests, 0 assertions, 0 failures, 1 errors, 0 skips
RED
class Calculadora
def soma(a, b)
– end
–
end
RED
$ ruby calc_test.rb
Run options:
# Running tests:
F
Finished tests in 0.001068s, 936.3173 tests/s, 936.3173
assertions/s.
1) Failure:
test_soma_2_mais_2(CalculadoraTest) [calc_test.rb:7]:
<4> expected but was
<nil>.
1 tests, 1 assertions, 1 failures, 0 errors, 0 skips
RED
class Calculadora
def soma(a, b)
4
– end
–
end
GREEN
$ ruby calc_test.rb
Run options:
# Running tests:
.
Finished tests in 0.000806s, 1240.3147
tests/s, 1240.3147 assertions/s.
1 tests, 1 assertions, 0 failures, 0 errors,
0 skips
LEMBRE-SE DO BABY STEPS
GREEN
require "test/unit"
require "./calc"
class CalculadoraTest < Test::Unit::TestCase
– # test_soma_2_mais_2
def test_soma_5_mais_3
calc = Calculadora.new
assert_equal 8, calc.soma(5, 3)
end
end
RED
$ ruby calc_test.rb
Run options:
# Running tests:
.F
Finished tests in 0.001050s, 1903.8843 tests/s, 1903.8843
assertions/s.
1) Failure:
test_soma_5_mais_3(CalculadoraTest) [calc_test.rb:12]:
<8> expected but was
<4>.
2 tests, 2 assertions, 1 failures, 0 errors, 0 skips
RED
class Calculadora
def soma(a, b)
a + b
– end
–
end
GREEN
$ ruby calc_test.rb
Run options:
# Running tests:
..
Finished tests in 0.000776s, 2577.7647
tests/s, 2577.7647 assertions/s.
2 tests, 2 assertions, 0 failures, 0 errors,
0 skips
RSPEC
require "./calc"
describe Calculadora do
it "deve somar 2 + 2" do
calc = Calculadora.new
calc.soma(2,2).should == 4
end
it "deve somar 5 + 3" do
calc = Calculadora.new
calc.soma(5,3).should == 8
end
end
RSPEC
$ rspec calc_spec.rb
FF
Failures:
1) Calculadora deve somar 2 + 2
Failure/Error: calc.soma(2,2).should == 4
expected: 4
got: 0 (using ==)
# ./calc_spec.rb:6:in `block (2 levels) in <top (required)>'
(...)
Finished in 0.00088 seconds
2 examples, 2 failures
Failed examples:
rspec ./calc_spec.rb:4 # Calculadora deve somar 2 + 2
rspec ./calc_spec.rb:9 # Calculadora deve somar 5 + 3
RSPEC
..
Finished in 0.0007 seconds
2 examples, 0 failures
TESTES DE
REGRESSÃO
Que bicho é esse?
ACCEPTANCE TEST DRIVEN
DEVELOPMENT
CAPYBARA NO RAILS
$ gem install capybara
…
require “capybara/rails”
CAPYBARA
$ rails generate integration_test calc
invoke mini_test
create test/integration/calc_test.rb
CAPYBARA
require "test_helper"
class CalcTest < ActionDispatch::IntegrationTest
test "deve somar 2 + 2" do
visit "/"
fill_in "primeiro", with: 2
fill_in "segundo", with: 2
click_on "somar"
assert page.has_content?("resultado = 4")
end
end
CAPYBARA
$ rake minitest
Run options:
# Running tests:
E
Fabulous tests in 0.056458s, 17.7121 tests/s, 0.0000
assertions/s.
1) Error:
test_deve_somar_2_+_2(CalcTest):
ActionController::RoutingError: No route matches [GET]
"/"
...
1 tests, 0 assertions, 0 failures, 1 errors, 0 skips
CAPYBARA
root to: “calc#soma”
CAPYBARA
$ rake minitest
Run options:
# Running tests:
E
Fabulous tests in 0.278528s, 3.5903 tests/s, 0.0000
assertions/s.
1) Error:
test_deve_somar_2_+_2(CalcTest):
ActionView::MissingTemplate: Missing template calculadora/soma,
application/soma with {:locale=>[:en], :formats=>[:html],
:handlers=>[:erb, :builder]}. Searched in:
...
1 tests, 0 assertions, 0 failures, 1 errors, 0 skips
CAPYBARA
$ touch app/views/calc/soma.html.erb
CAPYBARA
$ rake minitest
Run options:
# Running tests:
E
Fabulous tests in 0.278528s, 3.5903 tests/s, 0.0000
assertions/s.
1) Error:
test_deve_somar_2_+_2(CalcTest):
Capybara::ElementNotFound: Unable to find field
"primeiro"
...
1 tests, 0 assertions, 0 failures, 1 errors, 0 skips
CAPYBARA
<%= form_tag("/calc/resultado",
method: “post”) do %>
<%= label_tag(:primeiro, "primeiro") %>
<%= text_field_tag(:primeiro) %>
<% end %>
CAPYBARA
$ rake minitest
Run options:
# Running tests:
E
Fabulous tests in 0.278528s, 3.5903 tests/s, 0.0000
assertions/s.
1) Error:
test_deve_somar_2_+_2(CalcTest):
Capybara::ElementNotFound: Unable to find field "segundo"
...
1 tests, 0 assertions, 0 failures, 1 errors, 0 skips
CAPYBARA
<%= form_tag("/calc/resultado",
method: “post”) do %>
<%= label_tag(:primeiro, "primeiro") %>
<%= text_field_tag(:primeiro) %>
<%= label_tag(:segundo, "segundo") %>
<%= text_field_tag(:segundo) %>
<%= submit_tag(“somar”) %>
<% end %>
CAPYBARA
$ rake minitest
Run options:
# Running tests:
E
Fabulous tests in 0.278528s, 3.5903 tests/s, 0.0000
assertions/s.
1) Error:
test_deve_somar_2_+_2(CalcTest):
ActionView::Template::Error: No route
matches{:controller=>"calc", :action=>"resultado"}
...
1 tests, 0 assertions, 0 failures, 1 errors, 0 skips
CAPYBARA
root to: "calc#soma"
–
post "calc/resultado"
CAPYBARA
$ rake minitest
Run options:
# Running tests:
E
Fabulous tests in 0.278528s, 3.5903 tests/s, 0.0000
assertions/s.
1) Error:
test_deve_somar_2_+_2(CalcTest):
ActionView::MissingTemplate: Missing template calc/resultado,
application/resultado with {:locale=>[:en],
:formats=>[:html], :handlers=>[:erb, :builder]}.
...
1 tests, 0 assertions, 0 failures, 1 errors, 0 skips
CAPYBARA
CONTROLLER
def resultado
primeiro = params[:primeiro].to_i
segundo = params[:segundo].to_i
@resultado = primeiro + segundo
end
VIEW
$ touch app/views/calc/resultado.html.erb
<p> resultado = <%= @resultado %> </p>
CAPYBARA
$ ruby -Itest test/integration/calc_test.rb
Run options:
Run options:
# Running tests:
.
Finished tests in 0.779280s, 1.2832 tests/s, 1.2832
assertions/s.
...
1 tests, 0 assertions, 0 failures, 1 errors, 0 skips
LIVROS
LIVROS
DÚVIDAS?
OBRIGADO!
http://herculesdev.com.br/
hlmerscher@gmail.com
twitter.com/hlmerscher
github.com/hlmerscher

More Related Content

What's hot

Compatibility Detector Tool of Chrome extensions
Compatibility Detector Tool of Chrome extensionsCompatibility Detector Tool of Chrome extensions
Compatibility Detector Tool of Chrome extensionsKai Cui
 
Django’s nasal passage
Django’s nasal passageDjango’s nasal passage
Django’s nasal passageErik Rose
 
Metaprogramming 101
Metaprogramming 101Metaprogramming 101
Metaprogramming 101Nando Vieira
 
Javascript Testing with Jasmine 101
Javascript Testing with Jasmine 101Javascript Testing with Jasmine 101
Javascript Testing with Jasmine 101
Roy Yu
 
ZendCon 2017 - Build a Bot Workshop - Async Primer
ZendCon 2017 - Build a Bot Workshop - Async PrimerZendCon 2017 - Build a Bot Workshop - Async Primer
ZendCon 2017 - Build a Bot Workshop - Async Primer
Adam Englander
 
Deploying Straight to Production
Deploying Straight to ProductionDeploying Straight to Production
Deploying Straight to Production
Mark Baker
 
Perl Sucks - and what to do about it
Perl Sucks - and what to do about itPerl Sucks - and what to do about it
Perl Sucks - and what to do about it
2shortplanks
 
(Meta 2.3) figura de auto con simbolos dev c++
(Meta 2.3) figura de auto con simbolos dev c++ (Meta 2.3) figura de auto con simbolos dev c++
(Meta 2.3) figura de auto con simbolos dev c++ Eli Diaz
 
Unlock The Mystery Of PHPUnit (Wave PHP 2018)
Unlock The Mystery Of PHPUnit (Wave PHP 2018)Unlock The Mystery Of PHPUnit (Wave PHP 2018)
Unlock The Mystery Of PHPUnit (Wave PHP 2018)
ENDelt260
 
Testing Javascript with Jasmine
Testing Javascript with JasmineTesting Javascript with Jasmine
Testing Javascript with Jasmine
Tim Tyrrell
 
Good karma: UX Patterns and Unit Testing in Angular with Karma
Good karma: UX Patterns and Unit Testing in Angular with KarmaGood karma: UX Patterns and Unit Testing in Angular with Karma
Good karma: UX Patterns and Unit Testing in Angular with Karma
ExoLeaders.com
 
Practical Ext JS Debugging
Practical Ext JS DebuggingPractical Ext JS Debugging
Practical Ext JS Debugging
Shea Frederick
 
From typing the test to testing the type
From typing the test to testing the typeFrom typing the test to testing the type
From typing the test to testing the type
Wim Godden
 
Getting Started with Maven and Cucumber in Eclipse
Getting Started with Maven and Cucumber in EclipseGetting Started with Maven and Cucumber in Eclipse
Getting Started with Maven and Cucumber in EclipseTom Arend
 
CoffeeScript: JavaScript, but Better!
CoffeeScript: JavaScript, but Better! CoffeeScript: JavaScript, but Better!
CoffeeScript: JavaScript, but Better!
Jack Franklin
 
How Danga::Socket handles asynchronous processing and how to write asynchrono...
How Danga::Socket handles asynchronous processing and how to write asynchrono...How Danga::Socket handles asynchronous processing and how to write asynchrono...
How Danga::Socket handles asynchronous processing and how to write asynchrono...Gosuke Miyashita
 
PHPUnit best practices presentation
PHPUnit best practices presentationPHPUnit best practices presentation
PHPUnit best practices presentation
Thanh Robi
 
PhpUnit Best Practices
PhpUnit Best PracticesPhpUnit Best Practices
PhpUnit Best Practices
Edorian
 
Cramp websockets
Cramp websocketsCramp websockets
Cramp websockets
Antônio Roberto Silva
 

What's hot (20)

Compatibility Detector Tool of Chrome extensions
Compatibility Detector Tool of Chrome extensionsCompatibility Detector Tool of Chrome extensions
Compatibility Detector Tool of Chrome extensions
 
Django’s nasal passage
Django’s nasal passageDjango’s nasal passage
Django’s nasal passage
 
Metaprogramming 101
Metaprogramming 101Metaprogramming 101
Metaprogramming 101
 
Javascript Testing with Jasmine 101
Javascript Testing with Jasmine 101Javascript Testing with Jasmine 101
Javascript Testing with Jasmine 101
 
ZendCon 2017 - Build a Bot Workshop - Async Primer
ZendCon 2017 - Build a Bot Workshop - Async PrimerZendCon 2017 - Build a Bot Workshop - Async Primer
ZendCon 2017 - Build a Bot Workshop - Async Primer
 
Deploying Straight to Production
Deploying Straight to ProductionDeploying Straight to Production
Deploying Straight to Production
 
Perl Sucks - and what to do about it
Perl Sucks - and what to do about itPerl Sucks - and what to do about it
Perl Sucks - and what to do about it
 
(Meta 2.3) figura de auto con simbolos dev c++
(Meta 2.3) figura de auto con simbolos dev c++ (Meta 2.3) figura de auto con simbolos dev c++
(Meta 2.3) figura de auto con simbolos dev c++
 
Unlock The Mystery Of PHPUnit (Wave PHP 2018)
Unlock The Mystery Of PHPUnit (Wave PHP 2018)Unlock The Mystery Of PHPUnit (Wave PHP 2018)
Unlock The Mystery Of PHPUnit (Wave PHP 2018)
 
Testing Javascript with Jasmine
Testing Javascript with JasmineTesting Javascript with Jasmine
Testing Javascript with Jasmine
 
Good karma: UX Patterns and Unit Testing in Angular with Karma
Good karma: UX Patterns and Unit Testing in Angular with KarmaGood karma: UX Patterns and Unit Testing in Angular with Karma
Good karma: UX Patterns and Unit Testing in Angular with Karma
 
Practical Ext JS Debugging
Practical Ext JS DebuggingPractical Ext JS Debugging
Practical Ext JS Debugging
 
Perlbal Tutorial
Perlbal TutorialPerlbal Tutorial
Perlbal Tutorial
 
From typing the test to testing the type
From typing the test to testing the typeFrom typing the test to testing the type
From typing the test to testing the type
 
Getting Started with Maven and Cucumber in Eclipse
Getting Started with Maven and Cucumber in EclipseGetting Started with Maven and Cucumber in Eclipse
Getting Started with Maven and Cucumber in Eclipse
 
CoffeeScript: JavaScript, but Better!
CoffeeScript: JavaScript, but Better! CoffeeScript: JavaScript, but Better!
CoffeeScript: JavaScript, but Better!
 
How Danga::Socket handles asynchronous processing and how to write asynchrono...
How Danga::Socket handles asynchronous processing and how to write asynchrono...How Danga::Socket handles asynchronous processing and how to write asynchrono...
How Danga::Socket handles asynchronous processing and how to write asynchrono...
 
PHPUnit best practices presentation
PHPUnit best practices presentationPHPUnit best practices presentation
PHPUnit best practices presentation
 
PhpUnit Best Practices
PhpUnit Best PracticesPhpUnit Best Practices
PhpUnit Best Practices
 
Cramp websockets
Cramp websocketsCramp websockets
Cramp websockets
 

Viewers also liked

RSpec - Testando suas aplicações Ruby on Rails
RSpec - Testando suas aplicações Ruby on RailsRSpec - Testando suas aplicações Ruby on Rails
RSpec - Testando suas aplicações Ruby on Rails
Hercules Lemke Merscher
 
Linux Desktop (Campus Party Recife)
Linux Desktop (Campus Party Recife)Linux Desktop (Campus Party Recife)
Linux Desktop (Campus Party Recife)
Adriano Melo
 
Programação funcional no dia a dia
Programação funcional no dia a diaProgramação funcional no dia a dia
Programação funcional no dia a dia
Hercules Lemke Merscher
 
Workshop Ubuntu
Workshop UbuntuWorkshop Ubuntu
Workshop Ubuntu
Hercules Lemke Merscher
 
Projeto codigo de processo civil quadro comparativo
Projeto codigo de processo civil   quadro comparativoProjeto codigo de processo civil   quadro comparativo
Projeto codigo de processo civil quadro comparativoPedro Kurbhi
 
Desenvolvimento incremental e iterativo
Desenvolvimento incremental e iterativoDesenvolvimento incremental e iterativo
Desenvolvimento incremental e iterativo
Hercules Lemke Merscher
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
Hercules Lemke Merscher
 

Viewers also liked (7)

RSpec - Testando suas aplicações Ruby on Rails
RSpec - Testando suas aplicações Ruby on RailsRSpec - Testando suas aplicações Ruby on Rails
RSpec - Testando suas aplicações Ruby on Rails
 
Linux Desktop (Campus Party Recife)
Linux Desktop (Campus Party Recife)Linux Desktop (Campus Party Recife)
Linux Desktop (Campus Party Recife)
 
Programação funcional no dia a dia
Programação funcional no dia a diaProgramação funcional no dia a dia
Programação funcional no dia a dia
 
Workshop Ubuntu
Workshop UbuntuWorkshop Ubuntu
Workshop Ubuntu
 
Projeto codigo de processo civil quadro comparativo
Projeto codigo de processo civil   quadro comparativoProjeto codigo de processo civil   quadro comparativo
Projeto codigo de processo civil quadro comparativo
 
Desenvolvimento incremental e iterativo
Desenvolvimento incremental e iterativoDesenvolvimento incremental e iterativo
Desenvolvimento incremental e iterativo
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 

Similar to Deixe o teste infectar você

Tdd for BT E2E test community
Tdd for BT E2E test communityTdd for BT E2E test community
Tdd for BT E2E test communityKerry Buckley
 
How To Test Everything
How To Test EverythingHow To Test Everything
How To Test Everything
noelrap
 
Pro Java Fx – Developing Enterprise Applications
Pro Java Fx – Developing Enterprise ApplicationsPro Java Fx – Developing Enterprise Applications
Pro Java Fx – Developing Enterprise Applications
Stephen Chin
 
Rails Testing
Rails TestingRails Testing
Rails Testing
mikeblake
 
New Features Of Test Unit 2.x
New Features Of Test Unit 2.xNew Features Of Test Unit 2.x
New Features Of Test Unit 2.x
djberg96
 
Ruby on Rails testing with Rspec
Ruby on Rails testing with RspecRuby on Rails testing with Rspec
Ruby on Rails testing with Rspec
Bunlong Van
 
Test driven development_for_php
Test driven development_for_phpTest driven development_for_php
Test driven development_for_php
Lean Teams Consultancy
 
Test Drive Development in Ruby On Rails
Test Drive Development in Ruby On RailsTest Drive Development in Ruby On Rails
Test Drive Development in Ruby On Rails
Nyros Technologies
 
Testing Legacy Rails Apps
Testing Legacy Rails AppsTesting Legacy Rails Apps
Testing Legacy Rails Apps
Rabble .
 
Ruby Metaprogramming
Ruby MetaprogrammingRuby Metaprogramming
Ruby Metaprogramming
Thaichor Seng
 
Ch ch-changes cake php2
Ch ch-changes cake php2Ch ch-changes cake php2
Ch ch-changes cake php2
markstory
 
Test Coverage in Rails
Test Coverage in RailsTest Coverage in Rails
Test Coverage in Rails
James Gray
 
Test-driven Development no Rails
Test-driven Development no RailsTest-driven Development no Rails
Test-driven Development no Railselliando dias
 
Testing Code and Assuring Quality
Testing Code and Assuring QualityTesting Code and Assuring Quality
Testing Code and Assuring Quality
Kent Cowgill
 
Rails and security
Rails and securityRails and security
Rails and security
Andrey Tokarchuk
 
Oracle APEX Performance
Oracle APEX PerformanceOracle APEX Performance
Oracle APEX Performance
Scott Wesley
 
We Are All Testers Now: The Testing Pyramid and Front-End Development
We Are All Testers Now: The Testing Pyramid and Front-End DevelopmentWe Are All Testers Now: The Testing Pyramid and Front-End Development
We Are All Testers Now: The Testing Pyramid and Front-End Development
All Things Open
 
Surviving javascript.pptx
Surviving javascript.pptxSurviving javascript.pptx
Surviving javascript.pptx
Tamas Rev
 

Similar to Deixe o teste infectar você (20)

Tdd for BT E2E test community
Tdd for BT E2E test communityTdd for BT E2E test community
Tdd for BT E2E test community
 
Hidden Gems of Ruby 1.9
Hidden Gems of Ruby 1.9Hidden Gems of Ruby 1.9
Hidden Gems of Ruby 1.9
 
How To Test Everything
How To Test EverythingHow To Test Everything
How To Test Everything
 
Pro Java Fx – Developing Enterprise Applications
Pro Java Fx – Developing Enterprise ApplicationsPro Java Fx – Developing Enterprise Applications
Pro Java Fx – Developing Enterprise Applications
 
Rails Testing
Rails TestingRails Testing
Rails Testing
 
New Features Of Test Unit 2.x
New Features Of Test Unit 2.xNew Features Of Test Unit 2.x
New Features Of Test Unit 2.x
 
Ruby on Rails testing with Rspec
Ruby on Rails testing with RspecRuby on Rails testing with Rspec
Ruby on Rails testing with Rspec
 
Test driven development_for_php
Test driven development_for_phpTest driven development_for_php
Test driven development_for_php
 
Test Drive Development in Ruby On Rails
Test Drive Development in Ruby On RailsTest Drive Development in Ruby On Rails
Test Drive Development in Ruby On Rails
 
Testing Legacy Rails Apps
Testing Legacy Rails AppsTesting Legacy Rails Apps
Testing Legacy Rails Apps
 
Ruby Metaprogramming
Ruby MetaprogrammingRuby Metaprogramming
Ruby Metaprogramming
 
Ch ch-changes cake php2
Ch ch-changes cake php2Ch ch-changes cake php2
Ch ch-changes cake php2
 
Test Coverage in Rails
Test Coverage in RailsTest Coverage in Rails
Test Coverage in Rails
 
Test-driven Development no Rails
Test-driven Development no RailsTest-driven Development no Rails
Test-driven Development no Rails
 
Testing Code and Assuring Quality
Testing Code and Assuring QualityTesting Code and Assuring Quality
Testing Code and Assuring Quality
 
Thomas Fuchs Presentation
Thomas Fuchs PresentationThomas Fuchs Presentation
Thomas Fuchs Presentation
 
Rails and security
Rails and securityRails and security
Rails and security
 
Oracle APEX Performance
Oracle APEX PerformanceOracle APEX Performance
Oracle APEX Performance
 
We Are All Testers Now: The Testing Pyramid and Front-End Development
We Are All Testers Now: The Testing Pyramid and Front-End DevelopmentWe Are All Testers Now: The Testing Pyramid and Front-End Development
We Are All Testers Now: The Testing Pyramid and Front-End Development
 
Surviving javascript.pptx
Surviving javascript.pptxSurviving javascript.pptx
Surviving javascript.pptx
 

Recently uploaded

Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Aggregage
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
Ana-Maria Mihalceanu
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
Neo4j
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems S.M.S.A.
 
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Nexer Digital
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
KatiaHIMEUR1
 
Building RAG with self-deployed Milvus vector database and Snowpark Container...
Building RAG with self-deployed Milvus vector database and Snowpark Container...Building RAG with self-deployed Milvus vector database and Snowpark Container...
Building RAG with self-deployed Milvus vector database and Snowpark Container...
Zilliz
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
Matthew Sinclair
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
Matthew Sinclair
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
Quotidiano Piemontese
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
sonjaschweigert1
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Albert Hoitingh
 
Large Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial ApplicationsLarge Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial Applications
Rohit Gautam
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
DianaGray10
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
Matthew Sinclair
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
SOFTTECHHUB
 
By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
Pierluigi Pugliese
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
mikeeftimakis1
 
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex ProofszkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
Alex Pruden
 

Recently uploaded (20)

Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
 
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
 
Building RAG with self-deployed Milvus vector database and Snowpark Container...
Building RAG with self-deployed Milvus vector database and Snowpark Container...Building RAG with self-deployed Milvus vector database and Snowpark Container...
Building RAG with self-deployed Milvus vector database and Snowpark Container...
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
 
Large Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial ApplicationsLarge Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial Applications
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
 
By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
 
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex ProofszkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
 

Deixe o teste infectar você