SlideShare una empresa de Scribd logo
1 de 51
Descargar para leer sin conexión
An introduction to
Robot Framework
            李亚飞/louieli 00185421
               2012.09.06 v2.0
目录

RF是什么

RF特性介绍

DEMO
好的测试框架应具备
1.易用
2.稳定
3.方便扩展
4.可以很好的组织用例
5.测试执行
6.灵活性
7.调试
8.日志
9.报告
10.框架支持工具
RF是什么
● Generic test automation framework
      – Utilizes the keyword-driven testing approach
● Implemented with Python
        – Jython supported fully and IronPython initially
        – Can be extended natively using Python or Java
        – Other languages supported via XML-RPC based remote
interface
● Open source
      – Apache 2.0 license
      – Sponsored by Nokia Siemens Networks
      – Active development and growing community
      – Hosted on Google Code
RF框架
RF特性—测试用例组成
Table name        Used for                                        Aliases
Setting table     1) Importing test libraries, resource           Setting, Settings, Metadata
                  files and variable files
                  2) Defining metadata for test suites and test
                  cases



Variable table    Defining variables that can be used elsewhere   Variable, Variables
                  in the test data


Test case table   Creating test cases from available keywords     Test Case, Test Cases



Keyword table     Creating user keywords from existing lower-     Keyword, Keywords, User
                  level keywords                                  Keyword, User Keywords
RF特性—简单易用的表格语法
Test Case           Action                Argument   Argument
Valid Login         Open Login Page

                    Input Name            demo
                    Input Password        mode

                    Submit Credentials

                    Welcome Page Should
                    Be Open


Setting Variables   Do Something          first      second argument
                                          argument
                    ${value} =            Get Some
                                          Value
                    Should Be Equal       ${value}   Expected value
RF特性—支持多种文件格式
html格式
Test Case      Action            Argument       Argument
My Test        [Documentation]   Example test


               Log               ${MESSAGE}


               My Keyword        /tmp


Another Test   Should Be Equal   ${MESSAGE}     Hello, world!
RF特性—支持多种文件格式
         *Setting*      *Value*            *Value*        *Value*
         Library        OperatingSystem
TSV 格式
         *Variable*     *Value*            *Value*        *Value*
         ${MESSAGE}     Hello, world!



         *Test Case*    *Action*           *Argument*     *Argument*
         My Test        [Documentation]    Example test
                        Log                ${MESSAGE}
                        My Keyword         /tmp

         Another Test   Should Be Equal    ${MESSAGE}     Hello, world!



         *Keyword*      *Action*           *Argument*     *Argument*
         My Keyword     [Arguments]        ${path}
                        Directory Should   ${path}
                        Exist
RF特性—支持多种文件格式
文本格式
RF特性—支持多种文件格式
reStructuredText format



 可以方便的用python读取,不常用
RF特性—支持多种用例风格
Keyword-driven style



 前面已经讲过了
RF特性—支持多种用例风格
Data-driven style
Test Case        User Name       Password
Invalid Password [Template]      Login with invalid credentials should
                                 fail
                 invalid         ${VALID PASSWORD}

                 ${VALID USER}   invalid
                 invalid         whatever
                 ${EMPTY}        ${VALID PASSWORD}

                 ${VALID USER}   ${EMPTY}

                 ${EMPTY}        ${EMPTY}
RF特性—支持多种用例风格
Data-driven style
RF特性—支持多种用例风格
Behavior-driven style
Test Case               Step
Valid Login             Given login page is open
                        When valid username and
                        password are inserted
                        and credentials are
                        submitted
                        Then welcome page should
                        be open
RF特性—灵活的用例组织

目录是Test Suite


文件是Test Suite


文件中Test Cases部分才是真正的
Test Case
RF特性—灵活的用例组织
Initialization files
RF特性—Variables
1.用例中的测试数据经常变动
2.用例需要跨平台、跨浏览器
3.需要更复杂的对像,而不仅仅是数字或字符串
4.不同关键字之间、测试库之间、用例之间的通信
5.用例中需要操作的值很长很复杂
RF特性—Variables
Variable types Scalar variables   List variables   Environment variables
                 ${NAME}          @{USER}          %{USER}
                 ${OBJ}           @{USER}[0]       %{JAVA_HOME}
                                  @{items}


 Using list variables as scalars
 Test Case Action                      Argument      Argument     Argument
 Example     @{items} =                Create List first          second
             Length Should Be          ${items}    2

             Append To List            ${items}      third

             Length Should Be          ${items}      3

             Log Many                  @{items}
RF特性—Variables
 Setting variables in command line
 --variable EXAMPLE:value
 --variable HOST:localhost:7272 --variable USER:robot
 --variable ESCAPED:Qquotes_and_spacesQ --escape quot:Q --escape space:_

 Built-in variables
Variable     Explanation
${CURDIR}    An absolute path to the directory where the test data file is located. This variable is
             case-sensitive.
${TEMPDIR}   An absolute path to the system temporary directory. In UNIX-like systems this is
             typically /tmp, and in Windows c:Documents and Settings<user>Local
             SettingsTemp.
${EXECDIR}   An absolute path to the directory where test execution was started from. New in
             Robot Framework 2.1.
${/}         The system directory path separator. / in UNIX-like systems,  in Windows.

${:}         The system path element separator. : in UNIX-like systems and ; in Windows.
RF特性—Variables
Variable Priorities


     1.Variables from the command line
     2.Variable table in a test case file
     3.Imported resource and variable files
     4.Variables set during test execution
     5.Built-in variables
RF特性—Variables
                                      1. set from the command line
  Variable Scopes                     2. BuiltIn keyword Set Global Variable
                                      3. Built-in variables
                                      推荐大写
  1. Global scope
  2. Test suite scope                 1. from the return values of keywords
  3. Test case scope                  2. BuiltIn keyword Set Test Variable
  4. User keyword scope               推荐小写



User keywords get their own     1. created in Variable tables
variables                       2. imported from resource and variable files
from arguments passed to them   3. BuiltIn keyword Set Suite Variable
and return values
from the keywords they use      4. test suite scope is not recursive
推荐小写                            推荐大写
RF特性—自定义关键字
RF特性—Resource and Variable files
  通过Resource files 可以很方便的共享测试设置、公
  共变量、用户自定义关键字。



  Variable files 提供了更强大的机制,复杂变量的创
  建变得如此简单。Variable files被视为python 代码,
  所以想创建什么就创建什么。
RF特性—Resource files

Importing resource files
Setting     Value                     Value
Resource    myresources.html
Resource    ../data/resources.html
Resource    ${RESOURCES}/common.tsv
Resource    ../common_resource.txt
RF特性—Resource files
RF特性—Variable files
Importing a variable file
Setting     Value                    Value     Value
Variables   myvariables.py
Variables   ../data/variables.py
Variables   ${RESOURCES}/common.py
Variables   taking_arguments.py      arg1      ${ARG2}

Command line

--variablefile myvariables.py
--variablefile path/variables.py
--variablefile /absolute/path/common.py
--variablefile taking_arguments.py:arg1:arg2
RF特性—Variable files
           导入这段代码就会得到
           AREA1和AREA2两个变量
RF特性—Variable files
Extended variable syntax
RF特性—Variable files
Extended variable syntax

   1.搜索全名变量(OBJECT.name),若没找到则启用扩展变量语法
   2.创建一个基本变量${OJBECT}
   3.搜索变量OBJECT,若没找到,抛异常,用例失败
   4.大括号中的内容作为python代码执行,若执行出错,
     抛异常,用例失败
   5.设置扩展变量的值python代码的执行结果
RF特性—Variable files
Extended variable assignment
RF特性—Variable files
Extended variable assignment

 1.要赋值的变量(${OBJECT.age})必须是标量,变量名字必须包含至少一个点。
 否则按普通赋值处理
 2.如果要赋值的变量(${OBJECT.age})已经存在,用新值覆盖旧值
 3.创建基本变量${OBJECT}
 4.创建属性变量name
 5.搜索变量OBJECT,若没找到,${OBJECT.age}按普通赋值处理
 6.如果找到的OBJECT变量是string或number,扩展语法不启用,
 ${OBJECT.age}按普通赋值处理
 7.如果以上6步全部满足,设置属性变量。如果设置失败,抛异常,用例失败
RF特性—循环
Test Case   Action   Argument    Argument    Argument   Arguments

Example 1   :FOR     ${animal}   IN          cat        dog
                     Log         ${animal}
                     Log         2nd
                                 keyword
            Log      Outside
                     loop

Example 2   :FOR     ${var}      IN          one        two

            ...      three       four        five       six
            ...      seven
                     Log         ${var}
RF特性—循环
Test Case   Action    Argument            Argument         Argument            Arguments
Example     :FOR      ${element}          IN               @{ELEMENTS}
                      Start Element       ${element}

Test Case      Action   Argument               Argument             Argument
Exit Example   :FOR     ${var}                 IN                   @{SOME LIST}
                        Run Keyword If         '${var}' == 'EXIT'   Exit For Loop
                        Do Something           ${var}

Test Case   Action               Argument       Argument            Argument    Argument
Example     Repeat Keyword       5              Some Keyword        arg1        arg2
            Repeat Keyword       42 times       My Keyword
            Repeat Keyword       ${var}         Another KW          argument
pybot --argumentfile default_options.txt --name example my_tests.html




                                    RF特性—测试执行
pybot [options] datasources
jybot [options] datasources
interpreter /path/to/robot/runner.py [options] datasources
java -jar robotframework-<version>.jar [options] datasources


jybot --include smoke --variable HOST:10.0.0.42 path/to/tests/
pybot --variable BROWSER:IE --name IE --log none --report none
       --output out/ie.xml login
pybot --argumentfile default_options.txt --name example
my_tests.html
pybot --argumentfile default_options.txt --name example my_tests.html




                                   RF特性—测试执行
--test Example
--test mytest --test yourtest
--test example*
--test mysuite.mytest
--test *.suite.mytest
--suite example-??
--suite mysuite --test mytest --test your*
--suite parent.child --suite myhouse.myhousemusic --test jack*
--include example
--exclude not_ready
--include regression --exclude long_lasting
pybot --argumentfile default_options.txt --name example my_tests.html




                                   RF特性—测试执行
--xunitfile 生成Xunit compatiable result file
加时间戳
pybot --timestampoutputs --log mylog.html --report NONE tests.html
设置title
pybot --logtitle Smoke_Test_Log --reporttitle Smoke_Test_Report
      --include smoke my_tests/
设置颜色
--reportbackground blue:red
--reportbackground green:yellow:red
--reportbackground #00E:#E00
pybot --argumentfile default_options.txt --name example my_tests.html




                                              RF特性—RIDE
pybot --argumentfile default_options.txt --name example my_tests.html




                          RF特性—丰富的测试库
pybot --argumentfile default_options.txt --name example my_tests.html




                RF特性—创建自己的测试库

                         Python                                         Java

                                                     Remote library
                                                     Any languages

                Static API                                                     Hybrid API
                                                        Dynamic API
pybot --argumentfile default_options.txt --name example my_tests.html




                RF特性—创建自己的测试库
pybot --argumentfile default_options.txt --name example my_tests.html




                RF特性—创建自己的测试库
pybot --argumentfile default_options.txt --name example my_tests.html




                RF特性—创建自己的测试库




           Setting          Value             Value                     Value       Value
           Library          Remote            http://localhost:8270     WITH NAME   Example1
           Library          Remote            http://10.0.0.42:7777     WITH NAME   Example2
pybot --argumentfile default_options.txt --name example my_tests.html




                    RF特性—Listener Interface
pybot --argumentfile default_options.txt --name example my_tests.html




                              RF特性—活跃的社区
pybot --argumentfile default_options.txt --name example my_tests.html




                                                         DEMO
pybot --argumentfile default_options.txt --name example my_tests.html




                               For more information

    http://code.google.com/p/robotframework/
    http://robotframework.googlecode.com/hg/doc/quickstart/quickstart.html
    http://www.virtuousprogrammer.com/?p=264
    http://code.google.com/p/robotframework/wiki/UserGuide
    http://code.google.com/p/robotframework/wiki/PythonTutorial

Más contenido relacionado

La actualidad más candente

Perl 101 - The Basics of Perl Programming
Perl  101 - The Basics of Perl ProgrammingPerl  101 - The Basics of Perl Programming
Perl 101 - The Basics of Perl Programming
Utkarsh Sengar
 
Java tutorials
Java tutorialsJava tutorials
Java tutorials
saryu2011
 

La actualidad más candente (19)

WEB PROGRAMMING UNIT VI BY BHAVSINGH MALOTH
WEB PROGRAMMING UNIT VI BY BHAVSINGH MALOTHWEB PROGRAMMING UNIT VI BY BHAVSINGH MALOTH
WEB PROGRAMMING UNIT VI BY BHAVSINGH MALOTH
 
Unix
UnixUnix
Unix
 
Java tutorials
Java tutorialsJava tutorials
Java tutorials
 
Unit v
Unit vUnit v
Unit v
 
WEB PROGRAMMING UNIT IV NOTES BY BHAVSINGH MALOTH
WEB PROGRAMMING UNIT IV NOTES BY BHAVSINGH MALOTHWEB PROGRAMMING UNIT IV NOTES BY BHAVSINGH MALOTH
WEB PROGRAMMING UNIT IV NOTES BY BHAVSINGH MALOTH
 
Creating Domain Specific Languages in Python
Creating Domain Specific Languages in PythonCreating Domain Specific Languages in Python
Creating Domain Specific Languages in Python
 
Java For Automation
Java   For AutomationJava   For Automation
Java For Automation
 
Java SE 8 best practices
Java SE 8 best practicesJava SE 8 best practices
Java SE 8 best practices
 
Java Programming Guide Quick Reference
Java Programming Guide Quick ReferenceJava Programming Guide Quick Reference
Java Programming Guide Quick Reference
 
Project Coin
Project CoinProject Coin
Project Coin
 
Gdb cheat sheet
Gdb cheat sheetGdb cheat sheet
Gdb cheat sheet
 
Cheat Sheet java
Cheat Sheet javaCheat Sheet java
Cheat Sheet java
 
JavaParser - A tool to generate, analyze and refactor Java code
JavaParser - A tool to generate, analyze and refactor Java codeJavaParser - A tool to generate, analyze and refactor Java code
JavaParser - A tool to generate, analyze and refactor Java code
 
XSLT 1 and XPath Quick Reference (from mulberrytech.com)
XSLT 1 and XPath Quick Reference (from mulberrytech.com)XSLT 1 and XPath Quick Reference (from mulberrytech.com)
XSLT 1 and XPath Quick Reference (from mulberrytech.com)
 
Perl 101 - The Basics of Perl Programming
Perl  101 - The Basics of Perl ProgrammingPerl  101 - The Basics of Perl Programming
Perl 101 - The Basics of Perl Programming
 
Java tutorials
Java tutorialsJava tutorials
Java tutorials
 
Scala in a nutshell by venkat
Scala in a nutshell by venkatScala in a nutshell by venkat
Scala in a nutshell by venkat
 
Python Programming - IV. Program Components (Functions, Classes, Modules, Pac...
Python Programming - IV. Program Components (Functions, Classes, Modules, Pac...Python Programming - IV. Program Components (Functions, Classes, Modules, Pac...
Python Programming - IV. Program Components (Functions, Classes, Modules, Pac...
 
Unix processes
Unix processesUnix processes
Unix processes
 

Destacado

Bandwidth dan throughput
Bandwidth dan throughputBandwidth dan throughput
Bandwidth dan throughput
slamet01
 
Metlifewebsitepresentation
MetlifewebsitepresentationMetlifewebsitepresentation
Metlifewebsitepresentation
ashleymannes
 
Soko test-2
Soko test-2Soko test-2
Soko test-2
Soko_92
 
хүн орчин
хүн орчинхүн орчин
хүн орчин
buzuuhai
 
Eksamen1
Eksamen1Eksamen1
Eksamen1
mvaage
 
Ns dsc1110 a-10-0197_v2_web_english_final_lr
Ns dsc1110 a-10-0197_v2_web_english_final_lrNs dsc1110 a-10-0197_v2_web_english_final_lr
Ns dsc1110 a-10-0197_v2_web_english_final_lr
emteemt
 
ILC-UK and the Actuarial Profession Debate: The Economics of Promoting Person...
ILC-UK and the Actuarial Profession Debate: The Economics of Promoting Person...ILC-UK and the Actuarial Profession Debate: The Economics of Promoting Person...
ILC-UK and the Actuarial Profession Debate: The Economics of Promoting Person...
ILC- UK
 
цахим үзүүлэн
цахим үзүүлэнцахим үзүүлэн
цахим үзүүлэн
Zaya80
 
Chapter3.3
Chapter3.3Chapter3.3
Chapter3.3
nglaze10
 

Destacado (20)

Marcus Graham: Community Strategy for Content Platforms
Marcus Graham: Community Strategy for Content PlatformsMarcus Graham: Community Strategy for Content Platforms
Marcus Graham: Community Strategy for Content Platforms
 
Struggling to surrender dr jeffrey lang
Struggling to surrender dr jeffrey langStruggling to surrender dr jeffrey lang
Struggling to surrender dr jeffrey lang
 
Bandwidth dan throughput
Bandwidth dan throughputBandwidth dan throughput
Bandwidth dan throughput
 
iTeller Preview
iTeller PreviewiTeller Preview
iTeller Preview
 
Metlifewebsitepresentation
MetlifewebsitepresentationMetlifewebsitepresentation
Metlifewebsitepresentation
 
Long term care funding in the UK: The Dilnot Commission and the co-existence ...
Long term care funding in the UK: The Dilnot Commission and the co-existence ...Long term care funding in the UK: The Dilnot Commission and the co-existence ...
Long term care funding in the UK: The Dilnot Commission and the co-existence ...
 
Soko test-2
Soko test-2Soko test-2
Soko test-2
 
хүн орчин
хүн орчинхүн орчин
хүн орчин
 
Getting More Business from Your Members with Electronic Strategies (Credit Un...
Getting More Business from Your Members with Electronic Strategies (Credit Un...Getting More Business from Your Members with Electronic Strategies (Credit Un...
Getting More Business from Your Members with Electronic Strategies (Credit Un...
 
Prueba de ofiamtica
Prueba de ofiamticaPrueba de ofiamtica
Prueba de ofiamtica
 
Ken's digital images
Ken's digital imagesKen's digital images
Ken's digital images
 
Ejemplo cambio climático
Ejemplo cambio climáticoEjemplo cambio climático
Ejemplo cambio climático
 
Eksamen1
Eksamen1Eksamen1
Eksamen1
 
2012 Chevrolet Tahoe For Sale NE | Chevrolet Dealer Near Omaha
2012 Chevrolet Tahoe For Sale NE | Chevrolet Dealer Near Omaha2012 Chevrolet Tahoe For Sale NE | Chevrolet Dealer Near Omaha
2012 Chevrolet Tahoe For Sale NE | Chevrolet Dealer Near Omaha
 
Ns dsc1110 a-10-0197_v2_web_english_final_lr
Ns dsc1110 a-10-0197_v2_web_english_final_lrNs dsc1110 a-10-0197_v2_web_english_final_lr
Ns dsc1110 a-10-0197_v2_web_english_final_lr
 
ILC-UK and the Actuarial Profession Debate: The Economics of Promoting Person...
ILC-UK and the Actuarial Profession Debate: The Economics of Promoting Person...ILC-UK and the Actuarial Profession Debate: The Economics of Promoting Person...
ILC-UK and the Actuarial Profession Debate: The Economics of Promoting Person...
 
Differentiation Strategies through Self-service Retail Delivery Options (Cred...
Differentiation Strategies through Self-service Retail Delivery Options (Cred...Differentiation Strategies through Self-service Retail Delivery Options (Cred...
Differentiation Strategies through Self-service Retail Delivery Options (Cred...
 
цахим үзүүлэн
цахим үзүүлэнцахим үзүүлэн
цахим үзүүлэн
 
Chapter3.3
Chapter3.3Chapter3.3
Chapter3.3
 
Using LinkedIn to Generate Business
Using LinkedIn to Generate BusinessUsing LinkedIn to Generate Business
Using LinkedIn to Generate Business
 

Similar a Rf介绍

Puppet Camp Amsterdam 2015: The Power of Puppet 4 (Beginner)
Puppet Camp Amsterdam 2015: The Power of Puppet 4 (Beginner) Puppet Camp Amsterdam 2015: The Power of Puppet 4 (Beginner)
Puppet Camp Amsterdam 2015: The Power of Puppet 4 (Beginner)
Puppet
 
Rubyforjavaprogrammers 1210167973516759-9
Rubyforjavaprogrammers 1210167973516759-9Rubyforjavaprogrammers 1210167973516759-9
Rubyforjavaprogrammers 1210167973516759-9
sagaroceanic11
 
Rubyforjavaprogrammers 1210167973516759-9
Rubyforjavaprogrammers 1210167973516759-9Rubyforjavaprogrammers 1210167973516759-9
Rubyforjavaprogrammers 1210167973516759-9
sagaroceanic11
 
Mobile Software Engineering Crash Course - C02 Java Primer
Mobile Software Engineering Crash Course - C02 Java PrimerMobile Software Engineering Crash Course - C02 Java Primer
Mobile Software Engineering Crash Course - C02 Java Primer
Mohammad Shaker
 
Rubyspec y el largo camino hacia Ruby 1.9
Rubyspec y el largo camino hacia Ruby 1.9Rubyspec y el largo camino hacia Ruby 1.9
Rubyspec y el largo camino hacia Ruby 1.9
David Calavera
 
Puppet camp chicago-automated_testing2
Puppet camp chicago-automated_testing2Puppet camp chicago-automated_testing2
Puppet camp chicago-automated_testing2
nottings
 

Similar a Rf介绍 (20)

UNIX - Class4 - Advance Shell Scripting-P1
UNIX - Class4 - Advance Shell Scripting-P1UNIX - Class4 - Advance Shell Scripting-P1
UNIX - Class4 - Advance Shell Scripting-P1
 
Integration Group - Robot Framework
Integration Group - Robot Framework Integration Group - Robot Framework
Integration Group - Robot Framework
 
Puppet Camp Paris 2015: Power of Puppet 4 (Beginner)
Puppet Camp Paris 2015: Power of Puppet 4 (Beginner) Puppet Camp Paris 2015: Power of Puppet 4 (Beginner)
Puppet Camp Paris 2015: Power of Puppet 4 (Beginner)
 
Licão 13 functions
Licão 13 functionsLicão 13 functions
Licão 13 functions
 
Power of Puppet 4
Power of Puppet 4Power of Puppet 4
Power of Puppet 4
 
Puppet Camp Amsterdam 2015: The Power of Puppet 4 (Beginner)
Puppet Camp Amsterdam 2015: The Power of Puppet 4 (Beginner) Puppet Camp Amsterdam 2015: The Power of Puppet 4 (Beginner)
Puppet Camp Amsterdam 2015: The Power of Puppet 4 (Beginner)
 
Robotframework
RobotframeworkRobotframework
Robotframework
 
Class 3 - PHP Functions
Class 3 - PHP FunctionsClass 3 - PHP Functions
Class 3 - PHP Functions
 
Rubyforjavaprogrammers 1210167973516759-9
Rubyforjavaprogrammers 1210167973516759-9Rubyforjavaprogrammers 1210167973516759-9
Rubyforjavaprogrammers 1210167973516759-9
 
Rubyforjavaprogrammers 1210167973516759-9
Rubyforjavaprogrammers 1210167973516759-9Rubyforjavaprogrammers 1210167973516759-9
Rubyforjavaprogrammers 1210167973516759-9
 
Rack Middleware
Rack MiddlewareRack Middleware
Rack Middleware
 
Improved Developer Productivity In JDK8
Improved Developer Productivity In JDK8Improved Developer Productivity In JDK8
Improved Developer Productivity In JDK8
 
Mobile Software Engineering Crash Course - C02 Java Primer
Mobile Software Engineering Crash Course - C02 Java PrimerMobile Software Engineering Crash Course - C02 Java Primer
Mobile Software Engineering Crash Course - C02 Java Primer
 
Advanced Perl Techniques
Advanced Perl TechniquesAdvanced Perl Techniques
Advanced Perl Techniques
 
Rubyspec y el largo camino hacia Ruby 1.9
Rubyspec y el largo camino hacia Ruby 1.9Rubyspec y el largo camino hacia Ruby 1.9
Rubyspec y el largo camino hacia Ruby 1.9
 
Supercharging WordPress Development in 2018
Supercharging WordPress Development in 2018Supercharging WordPress Development in 2018
Supercharging WordPress Development in 2018
 
Automated Puppet Testing - PuppetCamp Chicago '12 - Scott Nottingham
Automated Puppet Testing - PuppetCamp Chicago '12 - Scott NottinghamAutomated Puppet Testing - PuppetCamp Chicago '12 - Scott Nottingham
Automated Puppet Testing - PuppetCamp Chicago '12 - Scott Nottingham
 
Puppet camp chicago-automated_testing2
Puppet camp chicago-automated_testing2Puppet camp chicago-automated_testing2
Puppet camp chicago-automated_testing2
 
Ruby on Rails: Coding Guideline
Ruby on Rails: Coding GuidelineRuby on Rails: Coding Guideline
Ruby on Rails: Coding Guideline
 
Let's start with Java- Basic Concepts
Let's start with Java- Basic ConceptsLet's start with Java- Basic Concepts
Let's start with Java- Basic Concepts
 

Último

Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

Último (20)

Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 

Rf介绍