SlideShare une entreprise Scribd logo
1  sur  22
Télécharger pour lire hors ligne
Confidentiel SILICOM
© 2017
© Silicom 2019
1
Modifiez le style du titre
© Silicom 2019
SILICOM
FaSilET² : End To End Tester
Multifunction Tool for Developers and QA
Confidentiel SILICOM
© 2017
© Silicom 2019
2
§ Framework and tool for developers and quality assurance
§ Interact with code in production conditions
§ No need to insert test-only code or stubs
§ Act like a human tester
FaSilET² : Main concepts
Confidentiel SILICOM
© 2017
© Silicom 2019
3
§ Actuators :
Scripts launched in a pre-established order defined in a config file.
Simulate human interactions through GUI or CLI and catch their returns.
May be launched in parallel to simulate multiple users at the same time, using
LXC containers.
Examples :
§ Web interface interaction simulation using Selenium
§ Writing into files using ssh or telnet
§ Database modification
§ Physical buttons action simulation using /proc or /sys
§ Etc.
FaSilET² : Vocabulary
Confidentiel SILICOM
© 2017
© Silicom 2019
4
§ Validators :
Get information on changes resulting from actuators activities
Zero to many validators for every actuator
Launched in parallel in LXC container prior to the corresponding actuator
Store validation results until needed
Return status PASSED, FAILED, TIMEOUT
FaSilET² : Vocabulary
Confidentiel SILICOM
© 2017
© Silicom 2019
5
§ Validators :
Exemples :
§ Reading local or remote logs
§ Database queries
§ Email reception
§ Etc.
FaSilET² : Vocabulary
Confidentiel SILICOM
© 2017
© Silicom 2019
6
§ Monitors :
Monitor one or more machine components during actuators execution.
Launched in parallel in LXC containers prior to test session start.
Stopped after the end of the whole process
Timestamped logs to compare with actuator activity
Exemples :
§ CPU usage
§ RAM usage
§ Disk space
§ Etc.
FaSilET² : Vocabulary
Confidentiel SILICOM
© 2017
© Silicom 2019
7
FaSilET² is currently a little better than a proof of concept.
Core is ready
Some modules are at production level
Validators :
§ Logs reader using ssh connections
§ Databases reader
Actuators :
§ Web (Selenium)
FaSilET² : Current development status
Confidentiel SILICOM
© 2017
© Silicom 2019
8
Current version
FaSilET² : Current architecture
Validator
1
Validator
n
GUI or system
under
tests
Logs
server
L
X
C
Action
GUI returns
Other
(mail, etc.)
Results
Centralization
(JSON file)
Results
analysis
Actuators
Validator
2
Exécute
Database
Monitor
1
Monitor
n
L
X
C
L
X
C
Confidentiel SILICOM
© 2017
© Silicom 2019
9
Dynamic operation in list
FaSilET² : Architecture
Actuator
parsing
Containers
creation for
validators
and
monitoring
Validators
and
monitors
started
Actuator
started
Waiting for
validators
Getting and
storing
results
Next
actuator
Other
actuator in
list
?
Et2.pl
JSON
export
Confidentiel SILICOM
© 2017
© Silicom 2019
10
§ Scripts based
Operation based on Perl scripts
Use abstraction modules
For exemple :
§ ET2::Web::Selenium
§ ET2::Utils::Report
§ ET2::Validators::SSHLogs
§ Etc.
FaSilET² : Operation
Confidentiel SILICOM
© 2017
© Silicom 2019
11
§ Directory layout
Testing scripts must be put into directories like this :
test
├── actuators
│ ├── activate_equipment.pl
│ ├── badlogin.pl
│ ├── finish.pl
│ ├── login.pl
│ ├── ntp.pl
│ └── share.pl
├── et2.conf
├── monitors
│ └── CPU1.pl
└── validators
├── Log1.pl
├── Log2.pl
└── LogNTP.pl
And the main script named et2.pl is called with the top directory as parameter
Execution order of actuators is given in configuration file et2.conf. This file is a simple “ini” format
one.
FaSilET² : Operation
Confidentiel SILICOM
© 2017
© Silicom 2019
12
§ Results
Test results are stored in two JSON files :
§ Results from actuators
§ Results from validators
A graphical analysis solution development is planned.
Results are stamped with UIDs
UID format : <actuator_number>-<action_number>-<start_ts>-<stop_ts>
FaSilET² : Running
Confidentiel SILICOM
© 2017
© Silicom 2019
13
§ Actuator result example
{
"actuators" : {
"login" : {
"results" : {
"wait_for_text" : {
"main" : "SUCCESS",
"description" : "Waiting for error message",
"UID" : "0001-0001-20190425132501-20190425132512"
}
}
},
"ntp" : {
"results" : {
"change_ntp_server" : {
"main" : "SUCCESS",
"description" : "Checking NTP server is the one entered previously",
"comment" : "NTP server read : 0.debian.pool.ntp.org",
"UID" : "0002-0001-20190425132602-20190425132623"
}
}
},
…
FaSilET² : Running
Confidentiel SILICOM
© 2017
© Silicom 2019
14
§ Validator result example{
"maintitle" : "SG4000",
"maindescription" : "SG4000 end to end tests",
"actuators" : {
"ntp" : {
"description" : "Change NTP server address",
"results" : {
"LogNTP" : {
"status" : "PASSED",
"data" : [],
"params_ERROR" : null,
"params_OK" : "server 0.debian.pool.ntp.org",
"UID" : "0002-0001-20190425132400-20190425132730",
"name" : "LogNTP"
}
},
"status" : {
"LogNTP" : "ok"
}
},
"login" : {
"status" : {
"Log1" : "ok"
},
"description" : "Good login tests",
"results" : {
"Log1" : {
"status" : "PASSED",
"params_OK" : "WARN admin_vpn0: connection",
"name" : "Log1",
"UID" : "0001-0001-20190425132412-20190425132842",
"data" : [
"2019/03/25 15:44:15 WARN admin_vpn0: connection "
],
"params_ERROR" : null
}
}
},
…
FaSilET² : Running
Confidentiel SILICOM
© 2017
© Silicom 2019
15
FaSilET² : Screenshot
Confidentiel SILICOM
© 2017
© Silicom 2019
16
§ Providing a VM image (OVA), LXC or LXD template
§ Add network scanning modules (nmap, wireshark…)
§ Add IA modules
§ GUI to generate actuator and validator scripts
§ Other ways to use this framework :
§ Cyber security (attack and defense)
§ Quality Assurance
§ …
FaSilET² : Near future
Improvements
Confidentiel SILICOM
© 2017
© Silicom 2019
17
Modifiez le style du titre
© Silicom 2019
Thank you
Any questions ?
Sources available on gitlab : https://gitlab.com/silicom/fasilet
Confidentiel SILICOM
© 2017
© Silicom 2019
18
Actuator example :
FaSilET² : Scripts exemple
#!/usr/bin/perl
use 5.20.0;
use File::Basename;
my $dirname = dirname(__FILE__);
require "$dirname/share.pl";
…
use ET2::Web::Selenium;
use ET2::Utils::Report;
our @VALIDATORS = ( 'Log1' );
…
if(!defined($sel))
{
$sel = ET2::Web::Selenium->new(
host => "https://$host",
driver => "firefox",
encoding => 'latin1',
);
$sel->setname("Sel1");
$sel->start();
}
if(!defined($report))
{
$report = ET2::Utils::Report->new(
title => 'VPN tests',
description => 'End to end tests for VPN project'
);
}
Confidentiel SILICOM
© 2017
© Silicom 2019
19
FaSilET² : Scripts example
$sel->goto('/');
$sel->write(name => "username", value =>
"admin_vpn0");
$sel->write(name => "password", value =>
"admin_vpn1");
$sel->clickbtn(class_name => "btn");
$ret = $sel->waitforpage(
timeout => 2,
url =>
'https://10.10.2.4/#/configuration/localnetwork/
ipconfig'
);
if($ret > 0)
{
say “Login : TIMEOUT”;
}
else
{
$rettitle = $sel->gettitle();
$returl = $sel->geturl();
if(($returl =~ /config$/) && ($rettitle =~ /^Param/))
{
say “Login : TEST SUCCESSFUL";
}
else
{
say “Login : TEST FAILED";
}
}
Confidentiel SILICOM
© 2017
© Silicom 2019
20
Validator example :
FaSilET² : Scripts example
#!/usr/bin/perl
use 5.20.0;
…
use ET2::Validator::SSHLogs;
sub run
{
my $vlog = new ET2::Validators::SSHLogs(
host => $host,
port => 10022,
key => '/home/cedric/Developpement/keys/ssh.key',
logfile => '/var/log/diags.log',
timeout => '0..20',
autostart => 1,
user => "root"
);
Confidentiel SILICOM
© 2017
© Silicom 2019
21
FaSilET² : Scripts example
return undef if(!defined($vlog));
$vlog->setregexok("WARNsw+s: connection");
$vlog->setname("Log1");
$vlog->tail();
return $vlog->getresults();
}
run();
Confidentiel SILICOM
© 2017
© Silicom 2019
22
FaSilET² : Why such a name ?
• ET² stands for End To End Testing = ETET = (ET) ²
• Sil stands for Silicom
• Fa(r) is a long, long way to run… because we can do many
things with it, mainly a name one can easily remember J

Contenu connexe

Tendances

What’s cool in the new and updated OSGi specs (DS, Cloud and more) - David Bo...
What’s cool in the new and updated OSGi specs (DS, Cloud and more) - David Bo...What’s cool in the new and updated OSGi specs (DS, Cloud and more) - David Bo...
What’s cool in the new and updated OSGi specs (DS, Cloud and more) - David Bo...
mfrancis
 
Continuous Integration (CI) and Continuous Delivery (CD) using Jenkins & Docker
 Continuous Integration (CI) and Continuous Delivery (CD) using Jenkins & Docker Continuous Integration (CI) and Continuous Delivery (CD) using Jenkins & Docker
Continuous Integration (CI) and Continuous Delivery (CD) using Jenkins & Docker
IndicThreads
 

Tendances (20)

Software Composition Analysis in PHP
Software Composition Analysis in PHP Software Composition Analysis in PHP
Software Composition Analysis in PHP
 
What’s cool in the new and updated OSGi specs (DS, Cloud and more) - David Bo...
What’s cool in the new and updated OSGi specs (DS, Cloud and more) - David Bo...What’s cool in the new and updated OSGi specs (DS, Cloud and more) - David Bo...
What’s cool in the new and updated OSGi specs (DS, Cloud and more) - David Bo...
 
Deploying Flink on Kubernetes - David Anderson
 Deploying Flink on Kubernetes - David Anderson Deploying Flink on Kubernetes - David Anderson
Deploying Flink on Kubernetes - David Anderson
 
Application Automation with Habitat
Application Automation with HabitatApplication Automation with Habitat
Application Automation with Habitat
 
Social Connections 14 - Kubernetes Basics for Connections Admins
Social Connections 14 - Kubernetes Basics for Connections AdminsSocial Connections 14 - Kubernetes Basics for Connections Admins
Social Connections 14 - Kubernetes Basics for Connections Admins
 
Vault - Enhancement for K8S secret security
Vault - Enhancement for K8S secret securityVault - Enhancement for K8S secret security
Vault - Enhancement for K8S secret security
 
Signalilo: Visualizing Prometheus alerts in Icinga2 - Icinga Camp Zurich 2019
Signalilo: Visualizing Prometheus alerts in Icinga2 - Icinga Camp Zurich 2019Signalilo: Visualizing Prometheus alerts in Icinga2 - Icinga Camp Zurich 2019
Signalilo: Visualizing Prometheus alerts in Icinga2 - Icinga Camp Zurich 2019
 
Kubernetes persistence 101
Kubernetes persistence 101Kubernetes persistence 101
Kubernetes persistence 101
 
カエルと実践するコンテナ
カエルと実践するコンテナカエルと実践するコンテナ
カエルと実践するコンテナ
 
Debugging Complex Issues in Web Applications
Debugging Complex Issues in Web ApplicationsDebugging Complex Issues in Web Applications
Debugging Complex Issues in Web Applications
 
DevOpsDaysRiga 2018: Andrew Martin - Continuous Kubernetes Security
DevOpsDaysRiga 2018: Andrew Martin - Continuous Kubernetes Security DevOpsDaysRiga 2018: Andrew Martin - Continuous Kubernetes Security
DevOpsDaysRiga 2018: Andrew Martin - Continuous Kubernetes Security
 
Effective Kubernetes - Is Kubernetes the new Linux? Is the new Application Se...
Effective Kubernetes - Is Kubernetes the new Linux? Is the new Application Se...Effective Kubernetes - Is Kubernetes the new Linux? Is the new Application Se...
Effective Kubernetes - Is Kubernetes the new Linux? Is the new Application Se...
 
Gatekeeper: API gateway
Gatekeeper: API gatewayGatekeeper: API gateway
Gatekeeper: API gateway
 
Continuous Integration (CI) and Continuous Delivery (CD) using Jenkins & Docker
 Continuous Integration (CI) and Continuous Delivery (CD) using Jenkins & Docker Continuous Integration (CI) and Continuous Delivery (CD) using Jenkins & Docker
Continuous Integration (CI) and Continuous Delivery (CD) using Jenkins & Docker
 
Kubernetes &amp; the 12 factor cloud apps
Kubernetes &amp; the 12 factor cloud appsKubernetes &amp; the 12 factor cloud apps
Kubernetes &amp; the 12 factor cloud apps
 
Spring Boot—Production Boost
Spring Boot—Production BoostSpring Boot—Production Boost
Spring Boot—Production Boost
 
Kubernetes Ingress 101
Kubernetes Ingress 101Kubernetes Ingress 101
Kubernetes Ingress 101
 
Compliance as Code: Velocity with Security - Fraser Pollock, Chef
Compliance as Code: Velocity with Security - Fraser Pollock, ChefCompliance as Code: Velocity with Security - Fraser Pollock, Chef
Compliance as Code: Velocity with Security - Fraser Pollock, Chef
 
Spring Data JDBC: Beyond the Obvious
Spring Data JDBC: Beyond the ObviousSpring Data JDBC: Beyond the Obvious
Spring Data JDBC: Beyond the Obvious
 
Running eZ Platform on Kubernetes (presented by Björn Dieding at eZ Conferenc...
Running eZ Platform on Kubernetes (presented by Björn Dieding at eZ Conferenc...Running eZ Platform on Kubernetes (presented by Björn Dieding at eZ Conferenc...
Running eZ Platform on Kubernetes (presented by Björn Dieding at eZ Conferenc...
 

Similaire à FaSilET² full end-to-end testing solution presented at OW2con'19, June 12-13, 2019, Paris.

Developing html5 mobile applications using cold fusion 11
Developing html5 mobile applications using cold fusion 11Developing html5 mobile applications using cold fusion 11
Developing html5 mobile applications using cold fusion 11
ColdFusionConference
 
Command central 9.6 - Features Overview
Command central 9.6 - Features OverviewCommand central 9.6 - Features Overview
Command central 9.6 - Features Overview
Software AG
 

Similaire à FaSilET² full end-to-end testing solution presented at OW2con'19, June 12-13, 2019, Paris. (20)

Building 12 factor apps with ASP.NET Core, Сергій Калинець
Building 12 factor apps with ASP.NET Core, Сергій КалинецьBuilding 12 factor apps with ASP.NET Core, Сергій Калинець
Building 12 factor apps with ASP.NET Core, Сергій Калинець
 
Integrated, Automated Video Room Systems - Webex Devices - Cisco Live Orlando...
Integrated, Automated Video Room Systems - Webex Devices - Cisco Live Orlando...Integrated, Automated Video Room Systems - Webex Devices - Cisco Live Orlando...
Integrated, Automated Video Room Systems - Webex Devices - Cisco Live Orlando...
 
GE Predix 新手入门 赵锴 物联网_IoT
GE Predix 新手入门 赵锴 物联网_IoTGE Predix 新手入门 赵锴 物联网_IoT
GE Predix 新手入门 赵锴 物联网_IoT
 
Microservices & Serverless Architecture Principles Applied - Cisco Live Orlan...
Microservices & Serverless Architecture Principles Applied - Cisco Live Orlan...Microservices & Serverless Architecture Principles Applied - Cisco Live Orlan...
Microservices & Serverless Architecture Principles Applied - Cisco Live Orlan...
 
DevOps Sydney: Chef Automate
DevOps Sydney: Chef AutomateDevOps Sydney: Chef Automate
DevOps Sydney: Chef Automate
 
Apic dc api deep dive
Apic dc api deep dive Apic dc api deep dive
Apic dc api deep dive
 
OSGi Enterprise R6 specs are out! - David Bosschaert & Carsten Ziegeler
OSGi Enterprise R6 specs are out! - David Bosschaert & Carsten ZiegelerOSGi Enterprise R6 specs are out! - David Bosschaert & Carsten Ziegeler
OSGi Enterprise R6 specs are out! - David Bosschaert & Carsten Ziegeler
 
Webex Devices xAPI - DEVNET_2071 - Cisco Live - San Diego 2019
Webex Devices xAPI - DEVNET_2071 - Cisco Live - San Diego 2019Webex Devices xAPI - DEVNET_2071 - Cisco Live - San Diego 2019
Webex Devices xAPI - DEVNET_2071 - Cisco Live - San Diego 2019
 
Bay Area Chef Meetup February
Bay Area Chef Meetup FebruaryBay Area Chef Meetup February
Bay Area Chef Meetup February
 
Improving the Accumulo User Experience
 Improving the Accumulo User Experience Improving the Accumulo User Experience
Improving the Accumulo User Experience
 
Pivotal Platform - December Release A First Look
Pivotal Platform - December Release A First LookPivotal Platform - December Release A First Look
Pivotal Platform - December Release A First Look
 
Developing html5 mobile applications using cold fusion 11
Developing html5 mobile applications using cold fusion 11Developing html5 mobile applications using cold fusion 11
Developing html5 mobile applications using cold fusion 11
 
Pyramid deployment
Pyramid deploymentPyramid deployment
Pyramid deployment
 
Command central 9.6 - Features Overview
Command central 9.6 - Features OverviewCommand central 9.6 - Features Overview
Command central 9.6 - Features Overview
 
Will hall - Accelerating Infrastructure as Code and Configuration Management ...
Will hall - Accelerating Infrastructure as Code and Configuration Management ...Will hall - Accelerating Infrastructure as Code and Configuration Management ...
Will hall - Accelerating Infrastructure as Code and Configuration Management ...
 
Accelerating Infrastructure as Code with CI in AWS.
Accelerating Infrastructure as Code with CI in AWS.Accelerating Infrastructure as Code with CI in AWS.
Accelerating Infrastructure as Code with CI in AWS.
 
Intro to Git Devnet-1080 Cisco Live 2018
Intro to Git Devnet-1080 Cisco Live 2018Intro to Git Devnet-1080 Cisco Live 2018
Intro to Git Devnet-1080 Cisco Live 2018
 
When to use Serverless? When to use Kubernetes?
When to use Serverless? When to use Kubernetes?When to use Serverless? When to use Kubernetes?
When to use Serverless? When to use Kubernetes?
 
SpringBoot and Spring Cloud Service for MSA
SpringBoot and Spring Cloud Service for MSASpringBoot and Spring Cloud Service for MSA
SpringBoot and Spring Cloud Service for MSA
 
Eclipse summit-2010
Eclipse summit-2010Eclipse summit-2010
Eclipse summit-2010
 

Plus de OW2

OW2 Association Européenne aux racines grenobloises, transformer l'industrie ...
OW2 Association Européenne aux racines grenobloises, transformer l'industrie ...OW2 Association Européenne aux racines grenobloises, transformer l'industrie ...
OW2 Association Européenne aux racines grenobloises, transformer l'industrie ...
OW2
 
Enabling DevOps for IoT software development, powered by Open Source, OW2onli...
Enabling DevOps for IoT software development, powered by Open Source, OW2onli...Enabling DevOps for IoT software development, powered by Open Source, OW2onli...
Enabling DevOps for IoT software development, powered by Open Source, OW2onli...
OW2
 

Plus de OW2 (20)

OW2 and RIOS teaming up to boost the open source impact, Nov. 2022 in Roma
OW2 and RIOS teaming up to boost the open source impact, Nov. 2022 in RomaOW2 and RIOS teaming up to boost the open source impact, Nov. 2022 in Roma
OW2 and RIOS teaming up to boost the open source impact, Nov. 2022 in Roma
 
The Open Source Good Governance Initiative presented at RIOS OS Week, Nov. 20...
The Open Source Good Governance Initiative presented at RIOS OS Week, Nov. 20...The Open Source Good Governance Initiative presented at RIOS OS Week, Nov. 20...
The Open Source Good Governance Initiative presented at RIOS OS Week, Nov. 20...
 
GLPi v.10, les fonctionnalités principales et l'offre cloud
GLPi v.10, les fonctionnalités principales et l'offre cloudGLPi v.10, les fonctionnalités principales et l'offre cloud
GLPi v.10, les fonctionnalités principales et l'offre cloud
 
Centreon: superviser le Cloud et le Legacy à partir d'une même plateforme, po...
Centreon: superviser le Cloud et le Legacy à partir d'une même plateforme, po...Centreon: superviser le Cloud et le Legacy à partir d'une même plateforme, po...
Centreon: superviser le Cloud et le Legacy à partir d'une même plateforme, po...
 
FusionIAM : la gestion des identités et des accés open source
FusionIAM : la gestion des identités et des accés open sourceFusionIAM : la gestion des identités et des accés open source
FusionIAM : la gestion des identités et des accés open source
 
OW2 Association Européenne aux racines grenobloises, transformer l'industrie ...
OW2 Association Européenne aux racines grenobloises, transformer l'industrie ...OW2 Association Européenne aux racines grenobloises, transformer l'industrie ...
OW2 Association Européenne aux racines grenobloises, transformer l'industrie ...
 
SFScon'20 Bringing the User into the Equation
SFScon'20 Bringing the User into the EquationSFScon'20 Bringing the User into the Equation
SFScon'20 Bringing the User into the Equation
 
Towards a sustainable solution to open source sustainability, OW2online20, Ju...
Towards a sustainable solution to open source sustainability, OW2online20, Ju...Towards a sustainable solution to open source sustainability, OW2online20, Ju...
Towards a sustainable solution to open source sustainability, OW2online20, Ju...
 
Advanced proactive and polymorphing cloud application adaptation with MORPHEM...
Advanced proactive and polymorphing cloud application adaptation with MORPHEM...Advanced proactive and polymorphing cloud application adaptation with MORPHEM...
Advanced proactive and polymorphing cloud application adaptation with MORPHEM...
 
Open Source governance and the Eclipse Foundation, OW2online, June 2020
Open Source governance and the Eclipse Foundation, OW2online, June 2020Open Source governance and the Eclipse Foundation, OW2online, June 2020
Open Source governance and the Eclipse Foundation, OW2online, June 2020
 
Open source contribution policies, OW2online, June 2020
Open source contribution policies, OW2online, June 2020Open source contribution policies, OW2online, June 2020
Open source contribution policies, OW2online, June 2020
 
Software development at scale, pandemic lockdown and oss ecosystems, OW2onlin...
Software development at scale, pandemic lockdown and oss ecosystems, OW2onlin...Software development at scale, pandemic lockdown and oss ecosystems, OW2onlin...
Software development at scale, pandemic lockdown and oss ecosystems, OW2onlin...
 
Overview of the OpenChain Reference Tooling Work Group, OW2online20, June 2020
Overview of the OpenChain Reference Tooling Work Group, OW2online20, June 2020Overview of the OpenChain Reference Tooling Work Group, OW2online20, June 2020
Overview of the OpenChain Reference Tooling Work Group, OW2online20, June 2020
 
Open Source Compliance at Orange, OW2online, June 2020
Open Source Compliance at Orange, OW2online, June 2020Open Source Compliance at Orange, OW2online, June 2020
Open Source Compliance at Orange, OW2online, June 2020
 
Ideas, methods and tools for OSS Compliance assessment, OW2online, June 2020
Ideas, methods and tools for OSS Compliance assessment, OW2online, June 2020Ideas, methods and tools for OSS Compliance assessment, OW2online, June 2020
Ideas, methods and tools for OSS Compliance assessment, OW2online, June 2020
 
Intelligent package management with FASTEN, OW2online, June 2020
Intelligent package management with FASTEN, OW2online, June 2020Intelligent package management with FASTEN, OW2online, June 2020
Intelligent package management with FASTEN, OW2online, June 2020
 
DECODER, a Smarter Environment for DevOps Teams , OW2online, June 2020
DECODER, a Smarter Environment for DevOps Teams , OW2online, June 2020DECODER, a Smarter Environment for DevOps Teams , OW2online, June 2020
DECODER, a Smarter Environment for DevOps Teams , OW2online, June 2020
 
Enabling DevOps for IoT software development, powered by Open Source, OW2onli...
Enabling DevOps for IoT software development, powered by Open Source, OW2onli...Enabling DevOps for IoT software development, powered by Open Source, OW2onli...
Enabling DevOps for IoT software development, powered by Open Source, OW2onli...
 
Upcoming Challenges in Artificial Intelligence Research and Development, OW2o...
Upcoming Challenges in Artificial Intelligence Research and Development, OW2o...Upcoming Challenges in Artificial Intelligence Research and Development, OW2o...
Upcoming Challenges in Artificial Intelligence Research and Development, OW2o...
 
Cacti and Big Data at Orange France, OW2online, June 2020
Cacti and Big Data at Orange France, OW2online, June 2020Cacti and Big Data at Orange France, OW2online, June 2020
Cacti and Big Data at Orange France, OW2online, June 2020
 

Dernier

+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@
 

Dernier (20)

Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
+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...
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
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...
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
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
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
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
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
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
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
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
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 

FaSilET² full end-to-end testing solution presented at OW2con'19, June 12-13, 2019, Paris.

  • 1. Confidentiel SILICOM © 2017 © Silicom 2019 1 Modifiez le style du titre © Silicom 2019 SILICOM FaSilET² : End To End Tester Multifunction Tool for Developers and QA
  • 2. Confidentiel SILICOM © 2017 © Silicom 2019 2 § Framework and tool for developers and quality assurance § Interact with code in production conditions § No need to insert test-only code or stubs § Act like a human tester FaSilET² : Main concepts
  • 3. Confidentiel SILICOM © 2017 © Silicom 2019 3 § Actuators : Scripts launched in a pre-established order defined in a config file. Simulate human interactions through GUI or CLI and catch their returns. May be launched in parallel to simulate multiple users at the same time, using LXC containers. Examples : § Web interface interaction simulation using Selenium § Writing into files using ssh or telnet § Database modification § Physical buttons action simulation using /proc or /sys § Etc. FaSilET² : Vocabulary
  • 4. Confidentiel SILICOM © 2017 © Silicom 2019 4 § Validators : Get information on changes resulting from actuators activities Zero to many validators for every actuator Launched in parallel in LXC container prior to the corresponding actuator Store validation results until needed Return status PASSED, FAILED, TIMEOUT FaSilET² : Vocabulary
  • 5. Confidentiel SILICOM © 2017 © Silicom 2019 5 § Validators : Exemples : § Reading local or remote logs § Database queries § Email reception § Etc. FaSilET² : Vocabulary
  • 6. Confidentiel SILICOM © 2017 © Silicom 2019 6 § Monitors : Monitor one or more machine components during actuators execution. Launched in parallel in LXC containers prior to test session start. Stopped after the end of the whole process Timestamped logs to compare with actuator activity Exemples : § CPU usage § RAM usage § Disk space § Etc. FaSilET² : Vocabulary
  • 7. Confidentiel SILICOM © 2017 © Silicom 2019 7 FaSilET² is currently a little better than a proof of concept. Core is ready Some modules are at production level Validators : § Logs reader using ssh connections § Databases reader Actuators : § Web (Selenium) FaSilET² : Current development status
  • 8. Confidentiel SILICOM © 2017 © Silicom 2019 8 Current version FaSilET² : Current architecture Validator 1 Validator n GUI or system under tests Logs server L X C Action GUI returns Other (mail, etc.) Results Centralization (JSON file) Results analysis Actuators Validator 2 Exécute Database Monitor 1 Monitor n L X C L X C
  • 9. Confidentiel SILICOM © 2017 © Silicom 2019 9 Dynamic operation in list FaSilET² : Architecture Actuator parsing Containers creation for validators and monitoring Validators and monitors started Actuator started Waiting for validators Getting and storing results Next actuator Other actuator in list ? Et2.pl JSON export
  • 10. Confidentiel SILICOM © 2017 © Silicom 2019 10 § Scripts based Operation based on Perl scripts Use abstraction modules For exemple : § ET2::Web::Selenium § ET2::Utils::Report § ET2::Validators::SSHLogs § Etc. FaSilET² : Operation
  • 11. Confidentiel SILICOM © 2017 © Silicom 2019 11 § Directory layout Testing scripts must be put into directories like this : test ├── actuators │ ├── activate_equipment.pl │ ├── badlogin.pl │ ├── finish.pl │ ├── login.pl │ ├── ntp.pl │ └── share.pl ├── et2.conf ├── monitors │ └── CPU1.pl └── validators ├── Log1.pl ├── Log2.pl └── LogNTP.pl And the main script named et2.pl is called with the top directory as parameter Execution order of actuators is given in configuration file et2.conf. This file is a simple “ini” format one. FaSilET² : Operation
  • 12. Confidentiel SILICOM © 2017 © Silicom 2019 12 § Results Test results are stored in two JSON files : § Results from actuators § Results from validators A graphical analysis solution development is planned. Results are stamped with UIDs UID format : <actuator_number>-<action_number>-<start_ts>-<stop_ts> FaSilET² : Running
  • 13. Confidentiel SILICOM © 2017 © Silicom 2019 13 § Actuator result example { "actuators" : { "login" : { "results" : { "wait_for_text" : { "main" : "SUCCESS", "description" : "Waiting for error message", "UID" : "0001-0001-20190425132501-20190425132512" } } }, "ntp" : { "results" : { "change_ntp_server" : { "main" : "SUCCESS", "description" : "Checking NTP server is the one entered previously", "comment" : "NTP server read : 0.debian.pool.ntp.org", "UID" : "0002-0001-20190425132602-20190425132623" } } }, … FaSilET² : Running
  • 14. Confidentiel SILICOM © 2017 © Silicom 2019 14 § Validator result example{ "maintitle" : "SG4000", "maindescription" : "SG4000 end to end tests", "actuators" : { "ntp" : { "description" : "Change NTP server address", "results" : { "LogNTP" : { "status" : "PASSED", "data" : [], "params_ERROR" : null, "params_OK" : "server 0.debian.pool.ntp.org", "UID" : "0002-0001-20190425132400-20190425132730", "name" : "LogNTP" } }, "status" : { "LogNTP" : "ok" } }, "login" : { "status" : { "Log1" : "ok" }, "description" : "Good login tests", "results" : { "Log1" : { "status" : "PASSED", "params_OK" : "WARN admin_vpn0: connection", "name" : "Log1", "UID" : "0001-0001-20190425132412-20190425132842", "data" : [ "2019/03/25 15:44:15 WARN admin_vpn0: connection " ], "params_ERROR" : null } } }, … FaSilET² : Running
  • 15. Confidentiel SILICOM © 2017 © Silicom 2019 15 FaSilET² : Screenshot
  • 16. Confidentiel SILICOM © 2017 © Silicom 2019 16 § Providing a VM image (OVA), LXC or LXD template § Add network scanning modules (nmap, wireshark…) § Add IA modules § GUI to generate actuator and validator scripts § Other ways to use this framework : § Cyber security (attack and defense) § Quality Assurance § … FaSilET² : Near future Improvements
  • 17. Confidentiel SILICOM © 2017 © Silicom 2019 17 Modifiez le style du titre © Silicom 2019 Thank you Any questions ? Sources available on gitlab : https://gitlab.com/silicom/fasilet
  • 18. Confidentiel SILICOM © 2017 © Silicom 2019 18 Actuator example : FaSilET² : Scripts exemple #!/usr/bin/perl use 5.20.0; use File::Basename; my $dirname = dirname(__FILE__); require "$dirname/share.pl"; … use ET2::Web::Selenium; use ET2::Utils::Report; our @VALIDATORS = ( 'Log1' ); … if(!defined($sel)) { $sel = ET2::Web::Selenium->new( host => "https://$host", driver => "firefox", encoding => 'latin1', ); $sel->setname("Sel1"); $sel->start(); } if(!defined($report)) { $report = ET2::Utils::Report->new( title => 'VPN tests', description => 'End to end tests for VPN project' ); }
  • 19. Confidentiel SILICOM © 2017 © Silicom 2019 19 FaSilET² : Scripts example $sel->goto('/'); $sel->write(name => "username", value => "admin_vpn0"); $sel->write(name => "password", value => "admin_vpn1"); $sel->clickbtn(class_name => "btn"); $ret = $sel->waitforpage( timeout => 2, url => 'https://10.10.2.4/#/configuration/localnetwork/ ipconfig' ); if($ret > 0) { say “Login : TIMEOUT”; } else { $rettitle = $sel->gettitle(); $returl = $sel->geturl(); if(($returl =~ /config$/) && ($rettitle =~ /^Param/)) { say “Login : TEST SUCCESSFUL"; } else { say “Login : TEST FAILED"; } }
  • 20. Confidentiel SILICOM © 2017 © Silicom 2019 20 Validator example : FaSilET² : Scripts example #!/usr/bin/perl use 5.20.0; … use ET2::Validator::SSHLogs; sub run { my $vlog = new ET2::Validators::SSHLogs( host => $host, port => 10022, key => '/home/cedric/Developpement/keys/ssh.key', logfile => '/var/log/diags.log', timeout => '0..20', autostart => 1, user => "root" );
  • 21. Confidentiel SILICOM © 2017 © Silicom 2019 21 FaSilET² : Scripts example return undef if(!defined($vlog)); $vlog->setregexok("WARNsw+s: connection"); $vlog->setname("Log1"); $vlog->tail(); return $vlog->getresults(); } run();
  • 22. Confidentiel SILICOM © 2017 © Silicom 2019 22 FaSilET² : Why such a name ? • ET² stands for End To End Testing = ETET = (ET) ² • Sil stands for Silicom • Fa(r) is a long, long way to run… because we can do many things with it, mainly a name one can easily remember J