SlideShare une entreprise Scribd logo
1  sur  117
TEST
TEST




presented by eddie
    2009.1.15
Agenda
Agenda
• Something about Test
Agenda
• Something about Test
    what? why? why not and how to....
Agenda
• Something about Test
    what? why? why not and how to....
• Test in action!
Agenda
• Something about Test
    what? why? why not and how to....
• Test in action!
    Test tools introduction, installation and real
    coding practice.
Agenda
• Something about Test
    what? why? why not and how to....
• Test in action!
    Test tools introduction, installation and real
    coding practice.
    Unit test, Integration test and Acceptance test.
Agenda
• Something about Test
    what? why? why not and how to....
• Test in action!
    Test tools introduction, installation and real
    coding practice.
    Unit test, Integration test and Acceptance test.
• Test in PHP Frameworks
Agenda
• Something about Test
    what? why? why not and how to....
• Test in action!
    Test tools introduction, installation and real
    coding practice.
    Unit test, Integration test and Acceptance test.
• Test in PHP Frameworks
    Zend Framework(still working...)
Agenda
• Something about Test
    what? why? why not and how to....
• Test in action!
    Test tools introduction, installation and real
    coding practice.
    Unit test, Integration test and Acceptance test.
• Test in PHP Frameworks
    Zend Framework(still working...)
    CakePHP(still working...)
What’s Test?
Test != Debug
Why Test?
Every Programmers
 Makes Mistakes!!
Why Not Test?
Why not Test?
Why not Test?
• No Time!
Why not Test?
• No Time!
• Boring!
Why not Test?
• No Time!
• Boring!
• Hey! I’m an experienced programmer!
Advantages
Advantages
• The sooner you test for a mistake, the
  greater your chance of finding it and the
  less it will cost to find and fix.
Advantages
• The sooner you test for a mistake, the
  greater your chance of finding it and the
  less it will cost to find and fix.
• Good software quality.
Advantages
• The sooner you test for a mistake, the
  greater your chance of finding it and the
  less it will cost to find and fix.
• Good software quality.
• More confidence in your product(code)!
Then....
What’s the problem?
Unit Test
Unit Test
• Verify the individual units of source code are
  working properly.
Unit Test
• Verify the individual units of source code are
  working properly.
• A unit is the smallest testable part of an
  application.
Unit Test
• Verify the individual units of source code are
  working properly.
• A unit is the smallest testable part of an
  application.
• May belong to a base/super class, abstract
  class or derived/child class.
Integration Test
Integration Test
• Verify high level components of the
  application work as expected.
Integration Test
• Verify high level components of the
  application work as expected.
• Use mocks, stubs and specialised test classes.
Acceptance Test
Acceptance Test
• Aka “Functional Test”
Acceptance Test
• Aka “Functional Test”
• Ensures that an application behaves as
  expected by the client.
Tools
Test Tools
Test Tools
• PHPUnit(Modelled after JUnit)
Test Tools
• PHPUnit(Modelled after JUnit)
• Selenium Remote-Control
PHPUnit
PHPUnit
• Requirements
PHPUnit
• Requirements
 • PHP 5.1.4 (or greater) is required, PHP 5.2 is
    recommended. PHPUnit 4 will require PHP 5.3.
PHPUnit
• Requirements
 • PHP 5.1.4 (or greater) is required, PHP 5.2 is
    recommended. PHPUnit 4 will require PHP 5.3.
 • more information:
    http://www.phpunit.de/wiki/Requirements
How to Test?
How to Test?
• Setup
How to Test?
• Setup
• Execute
How to Test?
• Setup
• Execute
• Verify
How to Test?
• Setup
• Execute
• Verify
• Teardown
PHPUnit Install
PHPUnit Install
• Install from PEAR or manual installation.
PHPUnit Install
• Install from PEAR or manual installation.
• Manual installation:
PHPUnit Install
• Install from PEAR or manual installation.
• Manual installation:
  1. download source
PHPUnit Install
• Install from PEAR or manual installation.
• Manual installation:
  1. download source
  2. extract and put library in include_path
PHPUnit Install
• Install from PEAR or manual installation.
• Manual installation:
  1. download source
  2. extract and put library in include_path
  3. minor modifications:
PHPUnit Install
• Install from PEAR or manual installation.
• Manual installation:
  1. download source
  2. extract and put library in include_path
  3. minor modifications:
       CLI : phpunit
PHPUnit Install
• Install from PEAR or manual installation.
• Manual installation:
  1. download source
  2. extract and put library in include_path
  3. minor modifications:
       CLI : phpunit
       utils/fileloader.php
Conventions
Conventions
• Function test*() without arguments
  ex: testArray(), testmyfunction()
Conventions
• Function test*() without arguments
  ex: testArray(), testmyfunction()
• Define in docblock:
  ex: @test
Conventions
• Function test*() without arguments
  ex: testArray(), testmyfunction()
• Define in docblock:
  ex: @test
• Test functions have to be PUBLIC
Remember!!
Remember!!
Comments(docblock) are MEANINGFUL !
Assert Method
Assert Method
They are methods for automatically checking
values and reporting discrepancies.
Test Skeleton
 Generator
Test Skeleton
          Generator
• Generate a test class file from classes.
Test Skeleton
          Generator
• Generate a test class file from classes.
• Usage:
  phpunit --skeleton-test testname(.php)
And....vise versa
And....vise versa
• Generate a class skeleton from test case
  classes.
And....vise versa
• Generate a class skeleton from test case
  classes.
• Usage:
  phpunit --skeleton-class classname(.php)
And....vise versa
• Generate a class skeleton from test case
  classes.
• Usage:
  phpunit --skeleton-class classname(.php)
• Test-Driven Developement.
Test Case Extensions
Test Case Extensions
• Tests for Output
Test Case Extensions
• Tests for Output
• Tests for Performance
Test Case Extensions
• Tests for Output
• Tests for Performance
• Tests for Database
Not finish yet...
Not finish yet...
• Incompleted Tests
Not finish yet...
• Incompleted Tests
• Skip Tests
Unit Test
Unit Test
Unit Test
<?php
require_once 'PHPUnit/Framework.php';
require_once 'testcal.php';
class testcalTest extends PHPUnit_Framework_TestCase
{
   protected $object;
   protected function setUp()
   {
      $this->object = new testcal;
   }

    public function testAdd()
    {
      $this->assertEquals(2, $this->object->add(1, 1));
    }
}
Easy Way...
Easy Way...
<?php
class Calculator
{

    /**

    * @assert (0,0) == 0

    * @assert (0,1) == 1

    * @assert (1,0) == 1

    * @assert (1,1) == 2

    * @assert (1,2) != 3
     */

    public function add($a, $b)

    {
       
 return $a + $b;

    }
}
Compose your Tests
Compose your Tests
• Test Function(phpunit --filter testFunc)
Compose your Tests
• Test Function(phpunit --filter testFunc)
• Test Case
Compose your Tests
• Test Function(phpunit --filter testFunc)
• Test Case
• Test Suite(setUp(), tearDown())
Integration Test
Test Double
Test Double
•   When some other components cannot be used in
    the test environment...
Test Double
•   When some other components cannot be used in
    the test environment...

•   The Test Double doesn't have to behave exactly
    like the real components; it merely has to provide
    the same API as the real one so that just let the
    test procedure thinks it is the real one!
Acceptance Test
Selenium RC
Selenium RC
• Selenium Remote-Control(RC) is a test
  tool that allows you to write automated
  user-interface tests for web applications in
  any programming language against any
  HTTP website using any mainstream
  browser.
Selenium RC
• Selenium Remote-Control(RC) is a test
  tool that allows you to write automated
  user-interface tests for web applications in
  any programming language against any
  HTTP website using any mainstream
  browser.
• More infomation:
  http://seleniumhq.org
How it works?
How it works?
More details....
More details....
Code Coverage
Code Coverage
• phpunit --coverage-html <reportDIR>
  testClass(.php)
Code Coverage
• phpunit --coverage-html <reportDIR>
  testClass(.php)
• xdebug is required
Test-Driven
Development
Test-Driven
        Development
• Test before coding.
Test-Driven
        Development
• Test before coding.
• Well-designed architecture and APIs.
Test for
PHP Frameworks
Test for
Zend Framework
Test for
    Zend Framework
• Application Login TestCase Example.
• Test Case:
    The login page should contain one login form
    and be displayed to non-authenticated users.
    When a user logs in, they should be redirected
    to their profile page, and that profile page
    should show relevant information.
Test for
CakePHP
Test for
            CakePHP
• To be Continued...
References
References
• Manual:
  •   PHPUnit Manual V3.3

• Articles:
  •   PHPUnit:
      •   An Introduction to the Art of Unit Testing in PHP
      •   Check your PHP code at every level with unit tests
      •   Acceptance Testing of Web Applications with PHP

  •   Zend Framework:
      •   Zend_Test_PHPUnit
Debugging Sucks,
 Testing Rocks!
Thank you :)

Contenu connexe

Tendances

Acceptance & Functional Testing with Codeception - Devspace 2015
Acceptance & Functional Testing with Codeception - Devspace 2015 Acceptance & Functional Testing with Codeception - Devspace 2015
Acceptance & Functional Testing with Codeception - Devspace 2015
Joe Ferguson
 

Tendances (20)

Cursus phpunit
Cursus phpunitCursus phpunit
Cursus phpunit
 
Codeception Testing Framework -- English #phpkansai
Codeception Testing Framework -- English #phpkansaiCodeception Testing Framework -- English #phpkansai
Codeception Testing Framework -- English #phpkansai
 
Acceptance & Functional Testing with Codeception - SunshinePHP 2016
Acceptance & Functional Testing with Codeception - SunshinePHP 2016Acceptance & Functional Testing with Codeception - SunshinePHP 2016
Acceptance & Functional Testing with Codeception - SunshinePHP 2016
 
Integration testing with spring @JAX Mainz
Integration testing with spring @JAX MainzIntegration testing with spring @JAX Mainz
Integration testing with spring @JAX Mainz
 
Codeception: introduction to php testing
Codeception: introduction to php testingCodeception: introduction to php testing
Codeception: introduction to php testing
 
Laravel Unit Testing
Laravel Unit TestingLaravel Unit Testing
Laravel Unit Testing
 
CI / CD w/ Codeception
CI / CD w/ CodeceptionCI / CD w/ Codeception
CI / CD w/ Codeception
 
Test Automation and Keyword-driven testing af Brian Nielsen, CISS/AAU
Test Automation and Keyword-driven testing af Brian Nielsen, CISS/AAUTest Automation and Keyword-driven testing af Brian Nielsen, CISS/AAU
Test Automation and Keyword-driven testing af Brian Nielsen, CISS/AAU
 
Integration Testing in Python
Integration Testing in PythonIntegration Testing in Python
Integration Testing in Python
 
Efficient JavaScript Unit Testing, JavaOne China 2013
Efficient JavaScript Unit Testing, JavaOne China 2013Efficient JavaScript Unit Testing, JavaOne China 2013
Efficient JavaScript Unit Testing, JavaOne China 2013
 
Automated testing in Python and beyond
Automated testing in Python and beyondAutomated testing in Python and beyond
Automated testing in Python and beyond
 
Testing PHP with Codeception
Testing PHP with CodeceptionTesting PHP with Codeception
Testing PHP with Codeception
 
Acceptance & Functional Testing with Codeception - Devspace 2015
Acceptance & Functional Testing with Codeception - Devspace 2015 Acceptance & Functional Testing with Codeception - Devspace 2015
Acceptance & Functional Testing with Codeception - Devspace 2015
 
Unit Testing from Setup to Deployment
Unit Testing from Setup to DeploymentUnit Testing from Setup to Deployment
Unit Testing from Setup to Deployment
 
PgTAP Best Practices
PgTAP Best PracticesPgTAP Best Practices
PgTAP Best Practices
 
TDD in Python With Pytest
TDD in Python With PytestTDD in Python With Pytest
TDD in Python With Pytest
 
Don't Be Mocked by your Mocks - Best Practices using Mocks
Don't Be Mocked by your Mocks - Best Practices using MocksDon't Be Mocked by your Mocks - Best Practices using Mocks
Don't Be Mocked by your Mocks - Best Practices using Mocks
 
JavaFX8 TestFX - CDI
JavaFX8   TestFX - CDIJavaFX8   TestFX - CDI
JavaFX8 TestFX - CDI
 
Codeception presentation
Codeception presentationCodeception presentation
Codeception presentation
 
Unit testing for WordPress
Unit testing for WordPressUnit testing for WordPress
Unit testing for WordPress
 

Similaire à Test

Unit testing php-unit - phing - selenium_v2
Unit testing   php-unit - phing - selenium_v2Unit testing   php-unit - phing - selenium_v2
Unit testing php-unit - phing - selenium_v2
Tricode (part of Dept)
 
Quality Assurance in PHP projects - Sebastian Bergmann
Quality Assurance in PHP projects - Sebastian BergmannQuality Assurance in PHP projects - Sebastian Bergmann
Quality Assurance in PHP projects - Sebastian Bergmann
dpc
 

Similaire à Test (20)

Leveling Up With Unit Testing - LonghornPHP 2022
Leveling Up With Unit Testing - LonghornPHP 2022Leveling Up With Unit Testing - LonghornPHP 2022
Leveling Up With Unit Testing - LonghornPHP 2022
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
Automated Unit Testing
Automated Unit TestingAutomated Unit Testing
Automated Unit Testing
 
Joomla! Testing - J!DD Germany 2016
Joomla! Testing - J!DD Germany 2016Joomla! Testing - J!DD Germany 2016
Joomla! Testing - J!DD Germany 2016
 
Just Java2007 - Daniel Wildt - Tools For Java Test Automation
Just Java2007 - Daniel Wildt - Tools For Java Test AutomationJust Java2007 - Daniel Wildt - Tools For Java Test Automation
Just Java2007 - Daniel Wildt - Tools For Java Test Automation
 
PHPUnit
PHPUnitPHPUnit
PHPUnit
 
PHPUnit with CakePHP and Yii
PHPUnit with CakePHP and YiiPHPUnit with CakePHP and Yii
PHPUnit with CakePHP and Yii
 
Leveling Up With Unit Testing - php[tek] 2023
Leveling Up With Unit Testing - php[tek] 2023Leveling Up With Unit Testing - php[tek] 2023
Leveling Up With Unit Testing - php[tek] 2023
 
Unit Test Your Database
Unit Test Your DatabaseUnit Test Your Database
Unit Test Your Database
 
Php unit (eng)
Php unit (eng)Php unit (eng)
Php unit (eng)
 
Test Driven Development Introduction
Test Driven Development IntroductionTest Driven Development Introduction
Test Driven Development Introduction
 
Static Analysis Techniques For Testing Application Security - Houston Tech Fest
Static Analysis Techniques For Testing Application Security - Houston Tech FestStatic Analysis Techniques For Testing Application Security - Houston Tech Fest
Static Analysis Techniques For Testing Application Security - Houston Tech Fest
 
Enterprise PHP (php|works 2008)
Enterprise PHP (php|works 2008)Enterprise PHP (php|works 2008)
Enterprise PHP (php|works 2008)
 
Unit testing php-unit - phing - selenium_v2
Unit testing   php-unit - phing - selenium_v2Unit testing   php-unit - phing - selenium_v2
Unit testing php-unit - phing - selenium_v2
 
Extracting Plugins And Gems From Rails Apps
Extracting Plugins And Gems From Rails AppsExtracting Plugins And Gems From Rails Apps
Extracting Plugins And Gems From Rails Apps
 
Enterprise PHP Development - ZendCon 2008
Enterprise PHP Development - ZendCon 2008Enterprise PHP Development - ZendCon 2008
Enterprise PHP Development - ZendCon 2008
 
Quality Assurance in PHP projects - Sebastian Bergmann
Quality Assurance in PHP projects - Sebastian BergmannQuality Assurance in PHP projects - Sebastian Bergmann
Quality Assurance in PHP projects - Sebastian Bergmann
 
[EclipseCon NA 2014] Integration tests for RCP made easy with SWTBot and Tycho
[EclipseCon NA 2014] Integration tests for RCP made easy with SWTBot and Tycho[EclipseCon NA 2014] Integration tests for RCP made easy with SWTBot and Tycho
[EclipseCon NA 2014] Integration tests for RCP made easy with SWTBot and Tycho
 
WebTest - Efficient Functional Web Testing with HtmlUnit and Beyond
WebTest - Efficient Functional Web Testing with HtmlUnit and BeyondWebTest - Efficient Functional Web Testing with HtmlUnit and Beyond
WebTest - Efficient Functional Web Testing with HtmlUnit and Beyond
 
UPC Plone Testing Talk
UPC Plone Testing TalkUPC Plone Testing Talk
UPC Plone Testing Talk
 

Plus de Eddie Kao (20)

Rails girls in Taipei
Rails girls in TaipeiRails girls in Taipei
Rails girls in Taipei
 
Rails Girls in Taipei
Rails Girls in TaipeiRails Girls in Taipei
Rails Girls in Taipei
 
Let's Learn Ruby - Basic
Let's Learn Ruby - BasicLet's Learn Ruby - Basic
Let's Learn Ruby - Basic
 
iOS app development and Open Source
iOS app development and Open SourceiOS app development and Open Source
iOS app development and Open Source
 
Vim
VimVim
Vim
 
from Ruby to Objective-C
from Ruby to Objective-Cfrom Ruby to Objective-C
from Ruby to Objective-C
 
Code Reading
Code ReadingCode Reading
Code Reading
 
CreateJS - from Flash to Javascript
CreateJS - from Flash to JavascriptCreateJS - from Flash to Javascript
CreateJS - from Flash to Javascript
 
May the source_be_with_you
May the source_be_with_youMay the source_be_with_you
May the source_be_with_you
 
Why I use Vim
Why I use VimWhy I use Vim
Why I use Vim
 
There is something about Event
There is something about EventThere is something about Event
There is something about Event
 
Flash Ecosystem and Open Source
Flash Ecosystem and Open SourceFlash Ecosystem and Open Source
Flash Ecosystem and Open Source
 
Happy Programming with CoffeeScript
Happy Programming with CoffeeScriptHappy Programming with CoffeeScript
Happy Programming with CoffeeScript
 
Ruby without rails
Ruby without railsRuby without rails
Ruby without rails
 
CoffeeScript-Ruby-Tuesday
CoffeeScript-Ruby-TuesdayCoffeeScript-Ruby-Tuesday
CoffeeScript-Ruby-Tuesday
 
CoffeeScript
CoffeeScriptCoffeeScript
CoffeeScript
 
API Design
API DesignAPI Design
API Design
 
測試
測試測試
測試
 
3rd AS Study Group
3rd AS Study Group3rd AS Study Group
3rd AS Study Group
 
iOS Game Development with Cocos2d
iOS Game Development with Cocos2diOS Game Development with Cocos2d
iOS Game Development with Cocos2d
 

Dernier

Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 

Dernier (20)

[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
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
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
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
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
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...
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
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
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
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...
 

Test

Notes de l'éditeur