SlideShare a Scribd company logo
Testing in
the world of
Internet of
Things
Dawid Pacia
Tomasz Janiszewski
“
The best way to predict the future
is to invent it.
Alan Kay, Xerox PARC, 1971
What is IoT?
The Internet of Things (IoT) is the
network of physical objects - devices,
vehicles, buildings and other items
embedded with electronics, software,
sensors, and network connectivity - that
enables these objects to collect and
exchange data.
https://en.wikipedia.org/wiki/Internet_of_Things
What is going to be the next
"big thing"? IoT?
Silvair products
● Based on TI CC2540/41 &
Nordic nRF51/52
● Bluetooth Low Energy v4.0
● Radio range: up to 500 meters
Silvair products
Silvair products
● Android 5.0+ app
● iOS 9.0+ app
Testing Scope &
Challenges
Hardware
○ Drivers
○ Switches
○ Sensors
○ Luminaries
○ Motors
○ Light sources / bulbs
○ Multi-protocol
gateways
Firmware
○ Bluetooth Low
Energy v4.0
protocol support
○ Silvair Smart Mesh
protocol support
○ Provisioning
○ Discovery
○ Groups and Scenes
○ OTAU
○ High Security
Software
○ Network setup
○ On / Off, dimming, color change
○ Associations
○ Factory Reset
○ OTAU
○ Cloud
“In the beginning there was
only Chaos”
● Event-driven development (for CES, BT World, etc.)
● Chaotic environment with constantly changing
priorities (on a daily basis)
● Lack of time to test SF/HW/FW on all test levels
● Ignoring product/project risk analysis
● No TDD/FDD/XP, lack of Unit tests
● PoC….. PoC everywhere
● No documentation
● Not enough testers!
Main focus
● Building and maintaining test environment
● Test automation
● Helping other teams with their testing activities
Let’s imagine a simple test
scenario...
Story: The user turns on a light bulb from an app
and turns it off from a wireless switch
Step 1: Launch mobile app and create a home
network with 1x wireless switch and 2x light
bulbs
Step 2: Turn on the bulbs from an app
Step 3: Turn off the bulbs from a switch
Flashing
App
installation
Devices
pre-configuration
START Init
Test scenario flow:
Changing
bulb state
(Step 2)
Switch
control
(Step 3)
Test suite
execution
Closure
activities
Creating “Home”
network
(Step 1)
END
Simple… right?
Well... not quite...
○ How to flash a BLE module with the firmware
which is inside a bulb or a switch?
○ How to control hardware buttons on a switch on
demand?
○ How to verify whenever a bulb has been turned on
or not?
○ How to verify if desired color, brightness, color
temperature or saturation level has been reached?
Challenges:
○ How to combine the results from multiple
sources (mobile app, firmware, hardware, cloud)
and be sure that the test cases is passed and
functionality under test is working as expected?
○ How to to know which component has failed
and when?
○ How to detect potential problems like
unpleasant LED flickering while dimming?
○ How to reset everything to default state at the
end of the test scenario?
Challenges:
Hardware
Firmware
Embedded
platforms
Cloud
Vision
system
Continuous
integration
Electric
circuits
Mobile
applications
AUTOMATIZATIONAutomatic
reporting
REST
Multiple
platform
s
Want big
impact?
Use big image.
THEY SAID THIS JOB WOULD BE EASY
YOU GOTTA BE KITTEN ME
Let’s make it
step by
step !
● Following common methodology
● Facilitating external processes
● Automation tools freedom
● Considered architecture
● Brainstorming sessions
● Team autonomy
“...Possibilities kills creativity...”
Requirements of IoT E2E Test
Environment
● Dirt-cheap!
● Simplicity - built with a KISS
("Keep it simple, stupid!")
methodology, extremely
low entry point for system
newcomers
● Modularity - the system
should handle flawlessly a
multiple of different DUT’s
(Devices Under Test)
Requirements of IoT E2E Test
Environment
● Scalability - a multiple
instances of DUT modules
and Test Arbiters should be
able to operate
simultaneously without any
hassle
● Reliability and stability - the
testing environment should
be able to operate with a
MTBF of 7 days
“...Possibilities kills creativity...”
Let’s prototype!
Every engineering
starts with LEGO
Cloud
REST API
SSH
UART
Module Flashing
M
A
S
T
E
R
SSH
REST
API
B
L
E
DEBUGGER UART
FW DB
AUTH
TOKEN
/ REST
B
L
E
DEBUGGER
Switch Control
class switchTest(unittest.TestCase):
self.authorization = ["rpi-devDav.local","qateam","123"]
…
self.channelOff2 = self.config["channelOff2"]
def testOnOff(self):
switch = switchLib(self.config["switchAddress"], self.config["login"],
self.config["password"], self.config["platform"], self.channelOn1,
self.channelOn2, self.channelOff1)
switch.switchClick(self.channelOn1)
…
switch.switchHold(self.channelOn1,3)
switch.switchHold(self.channelOff1,3)
switch.switchWakeUp()
switch.factortReset()
def tearDown(self):
pass
Switch Control
Vision System
The very first thing - prepare your
workstation!
● Unchangeable
conditions
○ Lighting (!)
○ Filters
● Stability (!)
● Usability
○ Effort in
reconfiguration
○ Reusage
● Costs
The very first thing - prepare your workstation!
Trigger
signal
Set proper
parameters /
disable automatic
Send
output
How it really looks like:
Take a snapshot,
image
preprocessing
(filtering)
Kill the
processIs camera
buffer
released?
Image
processing (blob
detection, check
elements, etc.)
Thresholding
Create
binary ROI
matrix
Trigger
signal
Gather value
matrix
Send
output
How we would like it:
Vision System
v4l2-ctl -c exposure_auto=1 | v4l2-ctl -c exposure_auto_priority=0 | v4l2-ctl
-c white_balance_temperature_auto=0 | v4l2-ctl -c absolute_exposure=171
Set proper parameters
(always manually!)
*Collection of libraries which adds a thin abstraction layer on top of video4linux2 devices. The purpose is to make it easy for
application writers to support a wide variety of devices without having to write seperate code for different devices in the same class.
brightness (int) : min=0 max=255 step=1 default=128 value=128
contrast (int) : min=0 max=255 step=1 default=32 value=32
saturation (int) : min=0 max=255 step=1 default=32 value=32
white_balance_temperature_auto(bool) : default=1 value=0
gain (int) : min=0 max=255 step=1 default=0 value=0
power_line_frequency (menu) : min=0 max=2 default=2 value=2
white_balance_temperature (int) : min=0 max=10000 default=4000 value=4000
sharpness (int) : min=0 max=255 step=1 default=24 value=24
backlight_compensation (int) : min=0 max=1 step=1 default=1 value=1
exposure_auto (menu) : min=0 max=3 default=3 value=1
exposure_absolute (int) : min=1 max=10000 default=166 value=171
exposure_auto_priority (bool) : default=0 value=0
...and this is why
[109, 5, 2,
6, 2, 3,
3, 3, 104]
Good Exposure
(value 171)
[173, 58, 33,
54, 47, 51,
38, 48, 169]
Overexposure
(value 800)
Image preprocessing
(filtering)
filtering (blur),
thresholding
noise reduction,
morphological
(erosion)
(146, 193, 255)
(255, 64, 17)
Response analysis
Purpose of the extended
blob detection
# Filter by Area.
params.filterByArea = True
params.minArea = 1500
# Filter by Circularity
# (4 * PI * Area) / (Perimeter^2)
params.filterByCircularity = True
params.minCircularity = 0.6
# Filter by Inertia
# It measures how elongated a shape is
params.filterByInertia = True
params.minInertiaRatio = 0.8
# Filter by Convexity
# Area of the Blob / Area of its
# convex hull
params.filterByConvexity = True
params.minConvexity = 0.87
Purpose of the extended
blob detection - example
BAD VERY BAD OK
QA CI
Environment
Test Arbiter
JIRA TEST
RESULTS
iOS iOS
APK APK Cloud
TEST
RESULTS
E2E Test
Environment
Appium Appium
Test Arbiter
class Silvair(unittest.TestCase):
driver = None
app = None
@classmethod
def setUpClass(cls):
…
…
cls.restAPIClientBulb1 =
RestAPIClient(cls.config["restAPI_IP_bulb1"],cls.usernameRestAPI,cls.passwordRestAPI,
cls.projectName)
cls.restAPIClientBulb2 =
RestAPIClient(cls.config["restAPI_IP_bulb2"],cls.usernameRestAPI,cls.passwordRestAPI,
cls.projectName)
cls.restAPIClientSwitch =
RestAPIClient(cls.config["restAPI_IP_switch"],cls.usernameRestAPI,cls.passwordRestAP
I,cls.projectName)
cls.restAPIClientBulb1.fullFlashingFlow(cls.config["bulbOrderID"])
cls.restAPIClientBulb2.fullFlashingFlow(cls.config["bulbOrderID"])
cls.restAPIClientSwitch.fullFlashingFlow(cls.config["switchOrderID"])
Test Arbiter
...
print("[LOG] " + datetime.now().strftime("%Y-%m-%d %H:%M:%S") + " Appium
server started.")
downloadFromS3(cls.config["s3ApkPath"],
os.path.dirname(os.path.dirname(os.path.realpath(__file__))) + "/apk",
cls.config["APP_NAME"])
cls.driver = create_driver('Android', configFile, bool(int(cls.config["reinstall_app"])))
cls.driver.implicitly_wait(5)
cls.bulbMac1 = cls.config["bulbMac1"]
cls.bulbMac2 = cls.config["bulbMac2"]
cls.switchMac = cls.config["switchMac"]
cls.retryNumber = int(cls.config["retryNumber"])
cls.bulbSlot1 = int(cls.config["bulbSlot1"])
cls.bulbSlot2 = int(cls.config["bulbSlot2"])
cls.bulbProvisioningWorkaround = cls.config["bulbProvisioningWorkaround"]
cls.factoryResetWorkaround = cls.config["factoryResetWorkaround"]
cls.HWbulbWorkaround = cls.config["HWbulbWorkaround"]
Test Arbiter
...
cls.androidLib = android(cls.driver)
cls.bulbEnv = BulbEnv(cls.config["deviceNumber"],
cls.config["resolutionX"], cls.config["resolutionY"], cls.config["rowsNum"],
cls.config["columnsNum"])
cls.switchEnv = switchLib(cls.config["switchAddress"], cls.config["login"],
cls.config["password"], cls.config["platform"], cls.config["channelOn1"],
cls.config["channelOn2"], cls.config["channelOff1"])
cls.app = Pages(cls.driver, cls.switchEnv)
cls.e2eEnv = e2eLib(cls.app, cls.bulbEnv, cls.switchEnv,
cls.config["minThreshold_on"], cls.config["maxThreshold_on"])
Number of commits 212
Number of code lines added 69293
Number of code lines deleted 46028
Number of Github
contributors
3
Number of Jenkins jobs 18
Number of builds 777
QA CI Environment
QA CI
Environment
Test Arbiter
JIRA
TEST
RESULTS
TEST
RESULTS
DUT DUT DUT
def test12_associations(self):
self.app.clickDeviceOnAddedList(self.switchMac)
self.switchEnv.switchWakeUp()
self.e2eEnv.switch_turnOffBulbs(self.config["channelOff2"], [self.bulbSlot1,
self.bulbSlot2], 0, self.retryNumber)
self.app.doAssociation(self.switchMac, 0, "none")
self.switchEnv.switchWakeUp()
self.e2eEnv.switch_turnOffBulbs(self.config["channelOff2"], [self.bulbSlot1,
self.bulbSlot2], 0, self.retryNumber)
self.app.swipeUp()
self.app.doAssociation(self.switchMac, 1, self.bulbMac1, "Lightness")
self.driver.back()
Tests creation? Couldn’t be
simplier !
def test18_FRswitchHW(self):
self.androidLib.resetBT()
self.switchEnv.switchWakeUp()
self.app.addDevice(self.switchMac)
self.app.findAddedDeviceOnList(self.switchMac)
self.e2eEnv.switch_FR(self.switchMac, 5)
def test08_provisioningOfNodOn(self):
self.switchEnv.switchFactoryReset()
self.switchEnv.switchWakeUp()
self.app.addDevice(self.switchMac)
self.app.findAddedDeviceOnList(self.switchMac)
Tests creation? Couldn’t be
simplier !
def test14_sharing(self):
self.app.share("Gmail")
self.app.share("Save to Drive")
USEYOURBRAIN!
IoT BAT
● Long time SSH connection (fast switch state
change)
● PWM high frequency (UART testing)
● Electrostatic Discharge
● Busy camera buffer
● Appium server / flashing / setting devices test
steps timeouts
● Different screen sizes / language versions /
platforms
but where is a problem...
Just a few problems met...
● Long time SSH connection
● PWM high frequency (UART
testing)
● Electrostatic Discharge
● Busy camera buffer
● Appium server / flashing /
setting devices test steps
timeouts
● Different screen sizes /
language versions /
platforms
...there is a solution !
● Cert
Authorization
● I/O stream log
deletion
● Humidifier
● Monitoring camera
process and usage
● Moved as
set-up activity
● Gather necessary
informations and
determine while class
initiation
… unfortunately, not for all
of them :(
Performance Mobile Phone
Number of ADV packets received from a Bulb
within 15 minutes The percentage of
packets received
[%]Clean RF environment
Noisy RF environment
(1200 packets per
second)
VERY GOOD Galaxy Tab 7.0 (T230) 3921 2312 59
GOOD
LG G2 3395 1594 47
Nexus 6 5294 1948 37
Samsung Galaxy S6 5818 2130 37
AVERAGE
Samsung Galaxy Note 4 5070 1607 32
Nexus 9 5377 1541 29
Sony Xperia Z2 5862 1604 27
Samsung Galaxy S5 5784 1494 26
Nexus 5 5964 1518 25
BAD
Samsung Galaxy S5 mini 6397 1197 19
Samsung Galaxy Note 10.1 5268 751 14
Samsung Galaxy S3 6018 641 11
VERY BAD
Xiaomi Mi3 3237 278 9
LG G2 mini 4081 328 8
Samsung Galaxy A3 4050 319 8
Samsung Galaxy S4 mini 4037 329 8
HTC One M8 3868 279 7
Sony Xperia T3 4040 283 7
Takeaway...
● Does Scrum really work? Yes, it does!
● Think big, but act small
● Iterate and refine
● Unleash team creativity
● Focus on interoperability
● Modularity is the key
● Incorporate RBT - focus on risky functionalities,
e.g. OTAU
● Physics is ruthless
● IoT is also hardware
● Security!
Want to know more about IoT protocols? Just grab
our free ebook at: https://silvair.com/media
Thanks!
Any questions?
You can find us at:
Dawid Pacia:
◎ e-mail: paciadawid@gmail.com
◎ / paciadawid
Tomasz Janiszewski:
◎ e-mail: janiszewski.tomasz@gmail.com
◎ / tjaniszewski
https://silvair.com/careers

More Related Content

What's hot

HITBSecConf 2016-Create Your Own Bad Usb
HITBSecConf 2016-Create Your Own Bad UsbHITBSecConf 2016-Create Your Own Bad Usb
HITBSecConf 2016-Create Your Own Bad Usb
Seunghun han
 
Arduino experimenters guide hq
Arduino experimenters guide hqArduino experimenters guide hq
Arduino experimenters guide hq
Andreis Santos
 
HITBSecConf 2017-Shadow-Box-the Practical and Omnipotent Sandbox
HITBSecConf 2017-Shadow-Box-the Practical and Omnipotent SandboxHITBSecConf 2017-Shadow-Box-the Practical and Omnipotent Sandbox
HITBSecConf 2017-Shadow-Box-the Practical and Omnipotent Sandbox
Seunghun han
 
BlackHat Asia 2017-Myth and Truth about Hypervisor-Based Kernel Protector
BlackHat Asia 2017-Myth and Truth about Hypervisor-Based Kernel ProtectorBlackHat Asia 2017-Myth and Truth about Hypervisor-Based Kernel Protector
BlackHat Asia 2017-Myth and Truth about Hypervisor-Based Kernel Protector
Seunghun han
 
Arduino Model's
Arduino Model'sArduino Model's
Arduino Model's
Ali Izmir
 
ROBOTICS - Introduction to Robotics Microcontroller
ROBOTICS -  Introduction to Robotics MicrocontrollerROBOTICS -  Introduction to Robotics Microcontroller
ROBOTICS - Introduction to Robotics Microcontroller
Vibrant Technologies & Computers
 
JCrete Embedded Java Workshop
JCrete Embedded Java WorkshopJCrete Embedded Java Workshop
JCrete Embedded Java Workshop
Stephen Chin
 
IOT Talking to Webserver - how to
IOT Talking to Webserver - how to IOT Talking to Webserver - how to
IOT Talking to Webserver - how to
Indraneel Ganguli
 
Ardx experimenters-guide-web
Ardx experimenters-guide-webArdx experimenters-guide-web
Ardx experimenters-guide-web
Jhonny Wladimir Peñaloza Cabello
 
DeviceHub - First steps using Intel Edison
DeviceHub - First steps using Intel EdisonDeviceHub - First steps using Intel Edison
DeviceHub - First steps using Intel Edison
Gabriel Arnautu
 
Remote temperature monitor (DHT11)
Remote temperature monitor (DHT11)Remote temperature monitor (DHT11)
Remote temperature monitor (DHT11)
Parshwadeep Lahane
 
Introduction to Arduino with ArduBlock & SparkFun LilyPad
Introduction to Arduino with ArduBlock & SparkFun LilyPadIntroduction to Arduino with ArduBlock & SparkFun LilyPad
Introduction to Arduino with ArduBlock & SparkFun LilyPad
Brian Huang
 
Introduction to Arduino
Introduction to ArduinoIntroduction to Arduino
Introduction to Arduino
Luki B. Subekti
 
Html5 game, websocket e arduino
Html5 game, websocket e arduinoHtml5 game, websocket e arduino
Html5 game, websocket e arduino
monksoftwareit
 
Introduction to Arduino and Circuits
Introduction to Arduino and CircuitsIntroduction to Arduino and Circuits
Introduction to Arduino and Circuits
Jason Griffey
 
Logic Blox primitive user manual
Logic Blox primitive user manualLogic Blox primitive user manual
Logic Blox primitive user manual
Michael Hogan
 
Core Audio in iOS 6 (CocoaConf Chicago, March 2013)
Core Audio in iOS 6 (CocoaConf Chicago, March 2013)Core Audio in iOS 6 (CocoaConf Chicago, March 2013)
Core Audio in iOS 6 (CocoaConf Chicago, March 2013)
Chris Adamson
 
Arduino Workshop Day 1 - Basic Arduino
Arduino Workshop Day 1 - Basic ArduinoArduino Workshop Day 1 - Basic Arduino
Arduino Workshop Day 1 - Basic Arduino
Vishnu
 
Everything About Bluetooth (淺談藍牙 4.0) - Peripheral 篇
Everything About Bluetooth (淺談藍牙 4.0) - Peripheral 篇Everything About Bluetooth (淺談藍牙 4.0) - Peripheral 篇
Everything About Bluetooth (淺談藍牙 4.0) - Peripheral 篇
Johnny Sung
 
An Hour of Arduino and Ardublock
An Hour of Arduino and ArdublockAn Hour of Arduino and Ardublock
An Hour of Arduino and Ardublock
Things Lab
 

What's hot (20)

HITBSecConf 2016-Create Your Own Bad Usb
HITBSecConf 2016-Create Your Own Bad UsbHITBSecConf 2016-Create Your Own Bad Usb
HITBSecConf 2016-Create Your Own Bad Usb
 
Arduino experimenters guide hq
Arduino experimenters guide hqArduino experimenters guide hq
Arduino experimenters guide hq
 
HITBSecConf 2017-Shadow-Box-the Practical and Omnipotent Sandbox
HITBSecConf 2017-Shadow-Box-the Practical and Omnipotent SandboxHITBSecConf 2017-Shadow-Box-the Practical and Omnipotent Sandbox
HITBSecConf 2017-Shadow-Box-the Practical and Omnipotent Sandbox
 
BlackHat Asia 2017-Myth and Truth about Hypervisor-Based Kernel Protector
BlackHat Asia 2017-Myth and Truth about Hypervisor-Based Kernel ProtectorBlackHat Asia 2017-Myth and Truth about Hypervisor-Based Kernel Protector
BlackHat Asia 2017-Myth and Truth about Hypervisor-Based Kernel Protector
 
Arduino Model's
Arduino Model'sArduino Model's
Arduino Model's
 
ROBOTICS - Introduction to Robotics Microcontroller
ROBOTICS -  Introduction to Robotics MicrocontrollerROBOTICS -  Introduction to Robotics Microcontroller
ROBOTICS - Introduction to Robotics Microcontroller
 
JCrete Embedded Java Workshop
JCrete Embedded Java WorkshopJCrete Embedded Java Workshop
JCrete Embedded Java Workshop
 
IOT Talking to Webserver - how to
IOT Talking to Webserver - how to IOT Talking to Webserver - how to
IOT Talking to Webserver - how to
 
Ardx experimenters-guide-web
Ardx experimenters-guide-webArdx experimenters-guide-web
Ardx experimenters-guide-web
 
DeviceHub - First steps using Intel Edison
DeviceHub - First steps using Intel EdisonDeviceHub - First steps using Intel Edison
DeviceHub - First steps using Intel Edison
 
Remote temperature monitor (DHT11)
Remote temperature monitor (DHT11)Remote temperature monitor (DHT11)
Remote temperature monitor (DHT11)
 
Introduction to Arduino with ArduBlock & SparkFun LilyPad
Introduction to Arduino with ArduBlock & SparkFun LilyPadIntroduction to Arduino with ArduBlock & SparkFun LilyPad
Introduction to Arduino with ArduBlock & SparkFun LilyPad
 
Introduction to Arduino
Introduction to ArduinoIntroduction to Arduino
Introduction to Arduino
 
Html5 game, websocket e arduino
Html5 game, websocket e arduinoHtml5 game, websocket e arduino
Html5 game, websocket e arduino
 
Introduction to Arduino and Circuits
Introduction to Arduino and CircuitsIntroduction to Arduino and Circuits
Introduction to Arduino and Circuits
 
Logic Blox primitive user manual
Logic Blox primitive user manualLogic Blox primitive user manual
Logic Blox primitive user manual
 
Core Audio in iOS 6 (CocoaConf Chicago, March 2013)
Core Audio in iOS 6 (CocoaConf Chicago, March 2013)Core Audio in iOS 6 (CocoaConf Chicago, March 2013)
Core Audio in iOS 6 (CocoaConf Chicago, March 2013)
 
Arduino Workshop Day 1 - Basic Arduino
Arduino Workshop Day 1 - Basic ArduinoArduino Workshop Day 1 - Basic Arduino
Arduino Workshop Day 1 - Basic Arduino
 
Everything About Bluetooth (淺談藍牙 4.0) - Peripheral 篇
Everything About Bluetooth (淺談藍牙 4.0) - Peripheral 篇Everything About Bluetooth (淺談藍牙 4.0) - Peripheral 篇
Everything About Bluetooth (淺談藍牙 4.0) - Peripheral 篇
 
An Hour of Arduino and Ardublock
An Hour of Arduino and ArdublockAn Hour of Arduino and Ardublock
An Hour of Arduino and Ardublock
 

Viewers also liked

KraQA #22, Filip Cynarski - Selenium Grid w chmurze Amazon Web Services
KraQA #22, Filip Cynarski -  Selenium Grid w chmurze Amazon Web ServicesKraQA #22, Filip Cynarski -  Selenium Grid w chmurze Amazon Web Services
KraQA #22, Filip Cynarski - Selenium Grid w chmurze Amazon Web Services
kraqa
 
Monika Braun - Agile Test Team
Monika Braun - Agile Test TeamMonika Braun - Agile Test Team
Monika Braun - Agile Test Team
kraqa
 
Monika Braun - "Tester i frameworki agilowe - rola testera w różnych metodyka...
Monika Braun - "Tester i frameworki agilowe - rola testera w różnych metodyka...Monika Braun - "Tester i frameworki agilowe - rola testera w różnych metodyka...
Monika Braun - "Tester i frameworki agilowe - rola testera w różnych metodyka...
kraqa
 
Interoperability Testing
Interoperability TestingInteroperability Testing
Interoperability Testing
kraqa
 
Wydajność aplikacji Web z perspektywy użytkownika
Wydajność aplikacji Web z perspektywy użytkownikaWydajność aplikacji Web z perspektywy użytkownika
Wydajność aplikacji Web z perspektywy użytkownika
Jacek Okrojek
 
Artur Górski - “Czy jesteśmy w stanie kontrolować wynik skuteczności testowan...
Artur Górski - “Czy jesteśmy w stanie kontrolować wynik skuteczności testowan...Artur Górski - “Czy jesteśmy w stanie kontrolować wynik skuteczności testowan...
Artur Górski - “Czy jesteśmy w stanie kontrolować wynik skuteczności testowan...
kraqa
 
Więcej testów/mniej kodu - Michał Gaworski, kraQA 13
Więcej testów/mniej kodu - Michał Gaworski, kraQA 13Więcej testów/mniej kodu - Michał Gaworski, kraQA 13
Więcej testów/mniej kodu - Michał Gaworski, kraQA 13
kraqa
 
Continuous Delivery - kolejny krok na drodze do Agile - Quality Excites 2014
Continuous Delivery - kolejny krok na drodze do Agile - Quality Excites 2014Continuous Delivery - kolejny krok na drodze do Agile - Quality Excites 2014
Continuous Delivery - kolejny krok na drodze do Agile - Quality Excites 2014
Wiktor Żołnowski
 
Abe 2012
Abe 2012Abe 2012
Frameworki agilowe w obszarze testow - Monika Braun
Frameworki agilowe w obszarze testow - Monika BraunFrameworki agilowe w obszarze testow - Monika Braun
Frameworki agilowe w obszarze testow - Monika Braun
Women in Technology Poland
 
A little bird told me... about a good page in your user guide
A little bird told me... about a good page in your user guideA little bird told me... about a good page in your user guide
A little bird told me... about a good page in your user guide
Sarah Maddox
 
Stickies on the wall will not help you if you are building crappy software
Stickies on the wall will not help you if you are building crappy softwareStickies on the wall will not help you if you are building crappy software
Stickies on the wall will not help you if you are building crappy software
Wiktor Żołnowski
 
Sqa days2013
Sqa days2013Sqa days2013
Sqa days2013
Wiktor Żołnowski
 
Xp days ukraine 2012
Xp days ukraine 2012Xp days ukraine 2012
Xp days ukraine 2012
Wiktor Żołnowski
 
Bogna Majchrzak, Magda Traciłowska - Tester jako strażnik jakości oprogramowania
Bogna Majchrzak, Magda Traciłowska - Tester jako strażnik jakości oprogramowaniaBogna Majchrzak, Magda Traciłowska - Tester jako strażnik jakości oprogramowania
Bogna Majchrzak, Magda Traciłowska - Tester jako strażnik jakości oprogramowaniaGeek Girls Carrots Poznan
 
Bdd and Agile Requirements Boiling Frogs 2016
Bdd and Agile Requirements Boiling Frogs 2016Bdd and Agile Requirements Boiling Frogs 2016
Bdd and Agile Requirements Boiling Frogs 2016
Wiktor Żołnowski
 
selenium grid & docker
selenium grid & dockerselenium grid & docker
selenium grid & docker
Łukasz Rosłonek
 
Scrum and Kanban are not enough - Agile Slovenia 2013
Scrum and Kanban are not enough - Agile Slovenia 2013Scrum and Kanban are not enough - Agile Slovenia 2013
Scrum and Kanban are not enough - Agile Slovenia 2013
Wiktor Żołnowski
 
Artur Górski - How many defects are left
Artur Górski - How many defects are leftArtur Górski - How many defects are left
Artur Górski - How many defects are left
kraqa
 
Let's tests! Prezentacja Moniki Braun w trakcie warsztatów "Let's go to IT"
Let's tests! Prezentacja Moniki Braun w trakcie warsztatów "Let's go to IT"Let's tests! Prezentacja Moniki Braun w trakcie warsztatów "Let's go to IT"
Let's tests! Prezentacja Moniki Braun w trakcie warsztatów "Let's go to IT"
mamopracuj
 

Viewers also liked (20)

KraQA #22, Filip Cynarski - Selenium Grid w chmurze Amazon Web Services
KraQA #22, Filip Cynarski -  Selenium Grid w chmurze Amazon Web ServicesKraQA #22, Filip Cynarski -  Selenium Grid w chmurze Amazon Web Services
KraQA #22, Filip Cynarski - Selenium Grid w chmurze Amazon Web Services
 
Monika Braun - Agile Test Team
Monika Braun - Agile Test TeamMonika Braun - Agile Test Team
Monika Braun - Agile Test Team
 
Monika Braun - "Tester i frameworki agilowe - rola testera w różnych metodyka...
Monika Braun - "Tester i frameworki agilowe - rola testera w różnych metodyka...Monika Braun - "Tester i frameworki agilowe - rola testera w różnych metodyka...
Monika Braun - "Tester i frameworki agilowe - rola testera w różnych metodyka...
 
Interoperability Testing
Interoperability TestingInteroperability Testing
Interoperability Testing
 
Wydajność aplikacji Web z perspektywy użytkownika
Wydajność aplikacji Web z perspektywy użytkownikaWydajność aplikacji Web z perspektywy użytkownika
Wydajność aplikacji Web z perspektywy użytkownika
 
Artur Górski - “Czy jesteśmy w stanie kontrolować wynik skuteczności testowan...
Artur Górski - “Czy jesteśmy w stanie kontrolować wynik skuteczności testowan...Artur Górski - “Czy jesteśmy w stanie kontrolować wynik skuteczności testowan...
Artur Górski - “Czy jesteśmy w stanie kontrolować wynik skuteczności testowan...
 
Więcej testów/mniej kodu - Michał Gaworski, kraQA 13
Więcej testów/mniej kodu - Michał Gaworski, kraQA 13Więcej testów/mniej kodu - Michał Gaworski, kraQA 13
Więcej testów/mniej kodu - Michał Gaworski, kraQA 13
 
Continuous Delivery - kolejny krok na drodze do Agile - Quality Excites 2014
Continuous Delivery - kolejny krok na drodze do Agile - Quality Excites 2014Continuous Delivery - kolejny krok na drodze do Agile - Quality Excites 2014
Continuous Delivery - kolejny krok na drodze do Agile - Quality Excites 2014
 
Abe 2012
Abe 2012Abe 2012
Abe 2012
 
Frameworki agilowe w obszarze testow - Monika Braun
Frameworki agilowe w obszarze testow - Monika BraunFrameworki agilowe w obszarze testow - Monika Braun
Frameworki agilowe w obszarze testow - Monika Braun
 
A little bird told me... about a good page in your user guide
A little bird told me... about a good page in your user guideA little bird told me... about a good page in your user guide
A little bird told me... about a good page in your user guide
 
Stickies on the wall will not help you if you are building crappy software
Stickies on the wall will not help you if you are building crappy softwareStickies on the wall will not help you if you are building crappy software
Stickies on the wall will not help you if you are building crappy software
 
Sqa days2013
Sqa days2013Sqa days2013
Sqa days2013
 
Xp days ukraine 2012
Xp days ukraine 2012Xp days ukraine 2012
Xp days ukraine 2012
 
Bogna Majchrzak, Magda Traciłowska - Tester jako strażnik jakości oprogramowania
Bogna Majchrzak, Magda Traciłowska - Tester jako strażnik jakości oprogramowaniaBogna Majchrzak, Magda Traciłowska - Tester jako strażnik jakości oprogramowania
Bogna Majchrzak, Magda Traciłowska - Tester jako strażnik jakości oprogramowania
 
Bdd and Agile Requirements Boiling Frogs 2016
Bdd and Agile Requirements Boiling Frogs 2016Bdd and Agile Requirements Boiling Frogs 2016
Bdd and Agile Requirements Boiling Frogs 2016
 
selenium grid & docker
selenium grid & dockerselenium grid & docker
selenium grid & docker
 
Scrum and Kanban are not enough - Agile Slovenia 2013
Scrum and Kanban are not enough - Agile Slovenia 2013Scrum and Kanban are not enough - Agile Slovenia 2013
Scrum and Kanban are not enough - Agile Slovenia 2013
 
Artur Górski - How many defects are left
Artur Górski - How many defects are leftArtur Górski - How many defects are left
Artur Górski - How many defects are left
 
Let's tests! Prezentacja Moniki Braun w trakcie warsztatów "Let's go to IT"
Let's tests! Prezentacja Moniki Braun w trakcie warsztatów "Let's go to IT"Let's tests! Prezentacja Moniki Braun w trakcie warsztatów "Let's go to IT"
Let's tests! Prezentacja Moniki Braun w trakcie warsztatów "Let's go to IT"
 

Similar to TestowanieIoT2016

Iot for smart agriculture
Iot for smart agricultureIot for smart agriculture
Iot for smart agriculture
Atit Patumvan
 
iBeacons - the new low-powered way of location awareness
iBeacons - the new low-powered way of location awarenessiBeacons - the new low-powered way of location awareness
iBeacons - the new low-powered way of location awareness
Stefano Zanetti
 
Protocol T50: Five months later... So what?
Protocol T50: Five months later... So what?Protocol T50: Five months later... So what?
Protocol T50: Five months later... So what?
Nelson Brito
 
Controlling Bluetooth Low Energy Devices
Controlling Bluetooth Low Energy DevicesControlling Bluetooth Low Energy Devices
Controlling Bluetooth Low Energy Devices
Keerati Torach
 
Lucas apa pacsec slides
Lucas apa pacsec slidesLucas apa pacsec slides
Lucas apa pacsec slides
PacSecJP
 
L1_Introduction.ppt
L1_Introduction.pptL1_Introduction.ppt
L1_Introduction.ppt
Varsha506533
 
Design for Test [DFT]-1 (1).pdf DESIGN DFT
Design for Test [DFT]-1 (1).pdf DESIGN DFTDesign for Test [DFT]-1 (1).pdf DESIGN DFT
Design for Test [DFT]-1 (1).pdf DESIGN DFT
jayasreenimmakuri777
 
Hacker's and painters Hardware Hacking 101 - 10th Oct 2014
Hacker's and painters Hardware Hacking 101 - 10th Oct 2014Hacker's and painters Hardware Hacking 101 - 10th Oct 2014
Hacker's and painters Hardware Hacking 101 - 10th Oct 2014
Takeda Pharmaceuticals
 
Usability lab design proposal
Usability lab design proposal Usability lab design proposal
Usability lab design proposal
Kent State University
 
Sobanski odl summit_2015
Sobanski odl summit_2015Sobanski odl summit_2015
Sobanski odl summit_2015
John Sobanski
 
Develop a portal to manage your IoT Hub solution
 Develop a portal to manage your IoT Hub solution Develop a portal to manage your IoT Hub solution
Develop a portal to manage your IoT Hub solution
Marco Parenzan
 
Ntcip Device Tester
Ntcip Device TesterNtcip Device Tester
Ntcip Device Tester
Peter Ashley
 
Using Smalltalk for controlling robotics systems
Using Smalltalk for controlling robotics systemsUsing Smalltalk for controlling robotics systems
Using Smalltalk for controlling robotics systems
Serge Stinckwich
 
Managing Large-scale Networks with Trigger
Managing Large-scale Networks with TriggerManaging Large-scale Networks with Trigger
Managing Large-scale Networks with Trigger
jathanism
 
SIGFOX Makers Tour - Dublin
SIGFOX Makers Tour - DublinSIGFOX Makers Tour - Dublin
SIGFOX Makers Tour - Dublin
Nicolas Lesconnec
 
Design and development of automated tests for the IoT
Design and development of automated tests for the IoTDesign and development of automated tests for the IoT
Design and development of automated tests for the IoT
Axel Rennoch
 
20081114 Friday Food iLabt Bart Joris
20081114 Friday Food iLabt Bart Joris20081114 Friday Food iLabt Bart Joris
20081114 Friday Food iLabt Bart Joris
imec.archive
 
SIGFOX Makers Tour - Porto
SIGFOX Makers Tour - PortoSIGFOX Makers Tour - Porto
SIGFOX Makers Tour - Porto
Nicolas Lesconnec
 
IoT on azure
IoT on azureIoT on azure
IoT on azure
Joanna Lamch
 
[HES2013] Hacking apple accessories to pown iDevices – Wake up Neo! Your phon...
[HES2013] Hacking apple accessories to pown iDevices – Wake up Neo! Your phon...[HES2013] Hacking apple accessories to pown iDevices – Wake up Neo! Your phon...
[HES2013] Hacking apple accessories to pown iDevices – Wake up Neo! Your phon...
Hackito Ergo Sum
 

Similar to TestowanieIoT2016 (20)

Iot for smart agriculture
Iot for smart agricultureIot for smart agriculture
Iot for smart agriculture
 
iBeacons - the new low-powered way of location awareness
iBeacons - the new low-powered way of location awarenessiBeacons - the new low-powered way of location awareness
iBeacons - the new low-powered way of location awareness
 
Protocol T50: Five months later... So what?
Protocol T50: Five months later... So what?Protocol T50: Five months later... So what?
Protocol T50: Five months later... So what?
 
Controlling Bluetooth Low Energy Devices
Controlling Bluetooth Low Energy DevicesControlling Bluetooth Low Energy Devices
Controlling Bluetooth Low Energy Devices
 
Lucas apa pacsec slides
Lucas apa pacsec slidesLucas apa pacsec slides
Lucas apa pacsec slides
 
L1_Introduction.ppt
L1_Introduction.pptL1_Introduction.ppt
L1_Introduction.ppt
 
Design for Test [DFT]-1 (1).pdf DESIGN DFT
Design for Test [DFT]-1 (1).pdf DESIGN DFTDesign for Test [DFT]-1 (1).pdf DESIGN DFT
Design for Test [DFT]-1 (1).pdf DESIGN DFT
 
Hacker's and painters Hardware Hacking 101 - 10th Oct 2014
Hacker's and painters Hardware Hacking 101 - 10th Oct 2014Hacker's and painters Hardware Hacking 101 - 10th Oct 2014
Hacker's and painters Hardware Hacking 101 - 10th Oct 2014
 
Usability lab design proposal
Usability lab design proposal Usability lab design proposal
Usability lab design proposal
 
Sobanski odl summit_2015
Sobanski odl summit_2015Sobanski odl summit_2015
Sobanski odl summit_2015
 
Develop a portal to manage your IoT Hub solution
 Develop a portal to manage your IoT Hub solution Develop a portal to manage your IoT Hub solution
Develop a portal to manage your IoT Hub solution
 
Ntcip Device Tester
Ntcip Device TesterNtcip Device Tester
Ntcip Device Tester
 
Using Smalltalk for controlling robotics systems
Using Smalltalk for controlling robotics systemsUsing Smalltalk for controlling robotics systems
Using Smalltalk for controlling robotics systems
 
Managing Large-scale Networks with Trigger
Managing Large-scale Networks with TriggerManaging Large-scale Networks with Trigger
Managing Large-scale Networks with Trigger
 
SIGFOX Makers Tour - Dublin
SIGFOX Makers Tour - DublinSIGFOX Makers Tour - Dublin
SIGFOX Makers Tour - Dublin
 
Design and development of automated tests for the IoT
Design and development of automated tests for the IoTDesign and development of automated tests for the IoT
Design and development of automated tests for the IoT
 
20081114 Friday Food iLabt Bart Joris
20081114 Friday Food iLabt Bart Joris20081114 Friday Food iLabt Bart Joris
20081114 Friday Food iLabt Bart Joris
 
SIGFOX Makers Tour - Porto
SIGFOX Makers Tour - PortoSIGFOX Makers Tour - Porto
SIGFOX Makers Tour - Porto
 
IoT on azure
IoT on azureIoT on azure
IoT on azure
 
[HES2013] Hacking apple accessories to pown iDevices – Wake up Neo! Your phon...
[HES2013] Hacking apple accessories to pown iDevices – Wake up Neo! Your phon...[HES2013] Hacking apple accessories to pown iDevices – Wake up Neo! Your phon...
[HES2013] Hacking apple accessories to pown iDevices – Wake up Neo! Your phon...
 

More from kraqa

RestAssured w sluzbie testow API
RestAssured w sluzbie testow APIRestAssured w sluzbie testow API
RestAssured w sluzbie testow API
kraqa
 
Postman - podstawy testowania REST API
Postman - podstawy testowania REST APIPostman - podstawy testowania REST API
Postman - podstawy testowania REST API
kraqa
 
Stanislaw potoczny kra_qa_21.01.20
Stanislaw potoczny kra_qa_21.01.20Stanislaw potoczny kra_qa_21.01.20
Stanislaw potoczny kra_qa_21.01.20
kraqa
 
Machine learning powered regression - KraQA 42 - Pawel Dyrek
Machine learning powered regression - KraQA 42 - Pawel Dyrek Machine learning powered regression - KraQA 42 - Pawel Dyrek
Machine learning powered regression - KraQA 42 - Pawel Dyrek
kraqa
 
Kontrakt testy - KraQA 42 - Slawomir Radzyminski
Kontrakt testy - KraQA 42 - Slawomir RadzyminskiKontrakt testy - KraQA 42 - Slawomir Radzyminski
Kontrakt testy - KraQA 42 - Slawomir Radzyminski
kraqa
 
KraQA#41 - PageFactory
KraQA#41 - PageFactoryKraQA#41 - PageFactory
KraQA#41 - PageFactory
kraqa
 
KraQA#39 - Jak testowac tool do testow
KraQA#39 - Jak testowac tool do testowKraQA#39 - Jak testowac tool do testow
KraQA#39 - Jak testowac tool do testow
kraqa
 
Hyperion - wystarczy jeden shake
Hyperion - wystarczy jeden shakeHyperion - wystarczy jeden shake
Hyperion - wystarczy jeden shake
kraqa
 
Wybor urzadzen mobilnych do testow
Wybor urzadzen mobilnych do testowWybor urzadzen mobilnych do testow
Wybor urzadzen mobilnych do testow
kraqa
 
Continuous security
Continuous securityContinuous security
Continuous security
kraqa
 
Let s meet inside
Let s meet insideLet s meet inside
Let s meet inside
kraqa
 
O wezu przy kawie
O wezu przy kawieO wezu przy kawie
O wezu przy kawie
kraqa
 
Strategia do automatów
Strategia do automatówStrategia do automatów
Strategia do automatów
kraqa
 
Z czym do api
Z czym do apiZ czym do api
Z czym do api
kraqa
 
Jenkins pipelines
Jenkins pipelinesJenkins pipelines
Jenkins pipelines
kraqa
 
Testy UI
Testy UITesty UI
Testy UI
kraqa
 
Tester w pułapce myślenia
Tester w pułapce myśleniaTester w pułapce myślenia
Tester w pułapce myślenia
kraqa
 
Kiedy tester zostaje managerem
Kiedy tester zostaje manageremKiedy tester zostaje managerem
Kiedy tester zostaje managerem
kraqa
 
KraQA#32 - RODO
KraQA#32 - RODOKraQA#32 - RODO
KraQA#32 - RODO
kraqa
 
SkładQA 2018 - Daniel Dec
SkładQA 2018 - Daniel DecSkładQA 2018 - Daniel Dec
SkładQA 2018 - Daniel Dec
kraqa
 

More from kraqa (20)

RestAssured w sluzbie testow API
RestAssured w sluzbie testow APIRestAssured w sluzbie testow API
RestAssured w sluzbie testow API
 
Postman - podstawy testowania REST API
Postman - podstawy testowania REST APIPostman - podstawy testowania REST API
Postman - podstawy testowania REST API
 
Stanislaw potoczny kra_qa_21.01.20
Stanislaw potoczny kra_qa_21.01.20Stanislaw potoczny kra_qa_21.01.20
Stanislaw potoczny kra_qa_21.01.20
 
Machine learning powered regression - KraQA 42 - Pawel Dyrek
Machine learning powered regression - KraQA 42 - Pawel Dyrek Machine learning powered regression - KraQA 42 - Pawel Dyrek
Machine learning powered regression - KraQA 42 - Pawel Dyrek
 
Kontrakt testy - KraQA 42 - Slawomir Radzyminski
Kontrakt testy - KraQA 42 - Slawomir RadzyminskiKontrakt testy - KraQA 42 - Slawomir Radzyminski
Kontrakt testy - KraQA 42 - Slawomir Radzyminski
 
KraQA#41 - PageFactory
KraQA#41 - PageFactoryKraQA#41 - PageFactory
KraQA#41 - PageFactory
 
KraQA#39 - Jak testowac tool do testow
KraQA#39 - Jak testowac tool do testowKraQA#39 - Jak testowac tool do testow
KraQA#39 - Jak testowac tool do testow
 
Hyperion - wystarczy jeden shake
Hyperion - wystarczy jeden shakeHyperion - wystarczy jeden shake
Hyperion - wystarczy jeden shake
 
Wybor urzadzen mobilnych do testow
Wybor urzadzen mobilnych do testowWybor urzadzen mobilnych do testow
Wybor urzadzen mobilnych do testow
 
Continuous security
Continuous securityContinuous security
Continuous security
 
Let s meet inside
Let s meet insideLet s meet inside
Let s meet inside
 
O wezu przy kawie
O wezu przy kawieO wezu przy kawie
O wezu przy kawie
 
Strategia do automatów
Strategia do automatówStrategia do automatów
Strategia do automatów
 
Z czym do api
Z czym do apiZ czym do api
Z czym do api
 
Jenkins pipelines
Jenkins pipelinesJenkins pipelines
Jenkins pipelines
 
Testy UI
Testy UITesty UI
Testy UI
 
Tester w pułapce myślenia
Tester w pułapce myśleniaTester w pułapce myślenia
Tester w pułapce myślenia
 
Kiedy tester zostaje managerem
Kiedy tester zostaje manageremKiedy tester zostaje managerem
Kiedy tester zostaje managerem
 
KraQA#32 - RODO
KraQA#32 - RODOKraQA#32 - RODO
KraQA#32 - RODO
 
SkładQA 2018 - Daniel Dec
SkładQA 2018 - Daniel DecSkładQA 2018 - Daniel Dec
SkładQA 2018 - Daniel Dec
 

Recently uploaded

GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
Neo4j
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
Adtran
 
20 Comprehensive Checklist of Designing and Developing a Website
20 Comprehensive Checklist of Designing and Developing a Website20 Comprehensive Checklist of Designing and Developing a Website
20 Comprehensive Checklist of Designing and Developing a Website
Pixlogix Infotech
 
Data structures and Algorithms in Python.pdf
Data structures and Algorithms in Python.pdfData structures and Algorithms in Python.pdf
Data structures and Algorithms in Python.pdf
TIPNGVN2
 
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
 
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
SOFTTECHHUB
 
Full-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalizationFull-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalization
Zilliz
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
Aftab Hussain
 
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
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
Kari Kakkonen
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
Neo4j
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
名前 です男
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Malak Abu Hammad
 
How to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For FlutterHow to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For Flutter
Daiki Mogmet Ito
 
“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”
Claudio Di Ciccio
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
ControlCase
 
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
Edge AI and Vision Alliance
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
Alpen-Adria-Universität
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
innovationoecd
 
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with SlackLet's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
shyamraj55
 

Recently uploaded (20)

GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
 
20 Comprehensive Checklist of Designing and Developing a Website
20 Comprehensive Checklist of Designing and Developing a Website20 Comprehensive Checklist of Designing and Developing a Website
20 Comprehensive Checklist of Designing and Developing a Website
 
Data structures and Algorithms in Python.pdf
Data structures and Algorithms in Python.pdfData structures and Algorithms in Python.pdf
Data structures and Algorithms in Python.pdf
 
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
 
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
 
Full-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalizationFull-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalization
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
 
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...
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
 
How to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For FlutterHow to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For Flutter
 
“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
 
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
 
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with SlackLet's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
 

TestowanieIoT2016

  • 1. Testing in the world of Internet of Things Dawid Pacia Tomasz Janiszewski
  • 2. “ The best way to predict the future is to invent it. Alan Kay, Xerox PARC, 1971
  • 3. What is IoT? The Internet of Things (IoT) is the network of physical objects - devices, vehicles, buildings and other items embedded with electronics, software, sensors, and network connectivity - that enables these objects to collect and exchange data. https://en.wikipedia.org/wiki/Internet_of_Things
  • 4. What is going to be the next "big thing"? IoT?
  • 5. Silvair products ● Based on TI CC2540/41 & Nordic nRF51/52 ● Bluetooth Low Energy v4.0 ● Radio range: up to 500 meters
  • 7. Silvair products ● Android 5.0+ app ● iOS 9.0+ app
  • 8. Testing Scope & Challenges Hardware ○ Drivers ○ Switches ○ Sensors ○ Luminaries ○ Motors ○ Light sources / bulbs ○ Multi-protocol gateways Firmware ○ Bluetooth Low Energy v4.0 protocol support ○ Silvair Smart Mesh protocol support ○ Provisioning ○ Discovery ○ Groups and Scenes ○ OTAU ○ High Security Software ○ Network setup ○ On / Off, dimming, color change ○ Associations ○ Factory Reset ○ OTAU ○ Cloud
  • 9. “In the beginning there was only Chaos” ● Event-driven development (for CES, BT World, etc.) ● Chaotic environment with constantly changing priorities (on a daily basis) ● Lack of time to test SF/HW/FW on all test levels ● Ignoring product/project risk analysis ● No TDD/FDD/XP, lack of Unit tests ● PoC….. PoC everywhere ● No documentation ● Not enough testers!
  • 10.
  • 11. Main focus ● Building and maintaining test environment ● Test automation ● Helping other teams with their testing activities
  • 12. Let’s imagine a simple test scenario... Story: The user turns on a light bulb from an app and turns it off from a wireless switch Step 1: Launch mobile app and create a home network with 1x wireless switch and 2x light bulbs Step 2: Turn on the bulbs from an app Step 3: Turn off the bulbs from a switch
  • 13. Flashing App installation Devices pre-configuration START Init Test scenario flow: Changing bulb state (Step 2) Switch control (Step 3) Test suite execution Closure activities Creating “Home” network (Step 1) END
  • 15. ○ How to flash a BLE module with the firmware which is inside a bulb or a switch? ○ How to control hardware buttons on a switch on demand? ○ How to verify whenever a bulb has been turned on or not? ○ How to verify if desired color, brightness, color temperature or saturation level has been reached? Challenges:
  • 16. ○ How to combine the results from multiple sources (mobile app, firmware, hardware, cloud) and be sure that the test cases is passed and functionality under test is working as expected? ○ How to to know which component has failed and when? ○ How to detect potential problems like unpleasant LED flickering while dimming? ○ How to reset everything to default state at the end of the test scenario? Challenges:
  • 18. Want big impact? Use big image. THEY SAID THIS JOB WOULD BE EASY YOU GOTTA BE KITTEN ME
  • 19. Let’s make it step by step ! ● Following common methodology ● Facilitating external processes ● Automation tools freedom ● Considered architecture ● Brainstorming sessions ● Team autonomy
  • 20. “...Possibilities kills creativity...” Requirements of IoT E2E Test Environment ● Dirt-cheap! ● Simplicity - built with a KISS ("Keep it simple, stupid!") methodology, extremely low entry point for system newcomers ● Modularity - the system should handle flawlessly a multiple of different DUT’s (Devices Under Test)
  • 21. Requirements of IoT E2E Test Environment ● Scalability - a multiple instances of DUT modules and Test Arbiters should be able to operate simultaneously without any hassle ● Reliability and stability - the testing environment should be able to operate with a MTBF of 7 days “...Possibilities kills creativity...”
  • 25.
  • 27. class switchTest(unittest.TestCase): self.authorization = ["rpi-devDav.local","qateam","123"] … self.channelOff2 = self.config["channelOff2"] def testOnOff(self): switch = switchLib(self.config["switchAddress"], self.config["login"], self.config["password"], self.config["platform"], self.channelOn1, self.channelOn2, self.channelOff1) switch.switchClick(self.channelOn1) … switch.switchHold(self.channelOn1,3) switch.switchHold(self.channelOff1,3) switch.switchWakeUp() switch.factortReset() def tearDown(self): pass Switch Control
  • 29. The very first thing - prepare your workstation! ● Unchangeable conditions ○ Lighting (!) ○ Filters ● Stability (!) ● Usability ○ Effort in reconfiguration ○ Reusage ● Costs
  • 30. The very first thing - prepare your workstation!
  • 31. Trigger signal Set proper parameters / disable automatic Send output How it really looks like: Take a snapshot, image preprocessing (filtering) Kill the processIs camera buffer released? Image processing (blob detection, check elements, etc.) Thresholding Create binary ROI matrix Trigger signal Gather value matrix Send output How we would like it: Vision System
  • 32. v4l2-ctl -c exposure_auto=1 | v4l2-ctl -c exposure_auto_priority=0 | v4l2-ctl -c white_balance_temperature_auto=0 | v4l2-ctl -c absolute_exposure=171 Set proper parameters (always manually!) *Collection of libraries which adds a thin abstraction layer on top of video4linux2 devices. The purpose is to make it easy for application writers to support a wide variety of devices without having to write seperate code for different devices in the same class. brightness (int) : min=0 max=255 step=1 default=128 value=128 contrast (int) : min=0 max=255 step=1 default=32 value=32 saturation (int) : min=0 max=255 step=1 default=32 value=32 white_balance_temperature_auto(bool) : default=1 value=0 gain (int) : min=0 max=255 step=1 default=0 value=0 power_line_frequency (menu) : min=0 max=2 default=2 value=2 white_balance_temperature (int) : min=0 max=10000 default=4000 value=4000 sharpness (int) : min=0 max=255 step=1 default=24 value=24 backlight_compensation (int) : min=0 max=1 step=1 default=1 value=1 exposure_auto (menu) : min=0 max=3 default=3 value=1 exposure_absolute (int) : min=1 max=10000 default=166 value=171 exposure_auto_priority (bool) : default=0 value=0
  • 33. ...and this is why [109, 5, 2, 6, 2, 3, 3, 3, 104] Good Exposure (value 171) [173, 58, 33, 54, 47, 51, 38, 48, 169] Overexposure (value 800)
  • 34. Image preprocessing (filtering) filtering (blur), thresholding noise reduction, morphological (erosion) (146, 193, 255) (255, 64, 17)
  • 36. Purpose of the extended blob detection # Filter by Area. params.filterByArea = True params.minArea = 1500 # Filter by Circularity # (4 * PI * Area) / (Perimeter^2) params.filterByCircularity = True params.minCircularity = 0.6 # Filter by Inertia # It measures how elongated a shape is params.filterByInertia = True params.minInertiaRatio = 0.8 # Filter by Convexity # Area of the Blob / Area of its # convex hull params.filterByConvexity = True params.minConvexity = 0.87
  • 37. Purpose of the extended blob detection - example BAD VERY BAD OK
  • 38. QA CI Environment Test Arbiter JIRA TEST RESULTS iOS iOS APK APK Cloud TEST RESULTS E2E Test Environment Appium Appium
  • 39. Test Arbiter class Silvair(unittest.TestCase): driver = None app = None @classmethod def setUpClass(cls): … … cls.restAPIClientBulb1 = RestAPIClient(cls.config["restAPI_IP_bulb1"],cls.usernameRestAPI,cls.passwordRestAPI, cls.projectName) cls.restAPIClientBulb2 = RestAPIClient(cls.config["restAPI_IP_bulb2"],cls.usernameRestAPI,cls.passwordRestAPI, cls.projectName) cls.restAPIClientSwitch = RestAPIClient(cls.config["restAPI_IP_switch"],cls.usernameRestAPI,cls.passwordRestAP I,cls.projectName) cls.restAPIClientBulb1.fullFlashingFlow(cls.config["bulbOrderID"]) cls.restAPIClientBulb2.fullFlashingFlow(cls.config["bulbOrderID"]) cls.restAPIClientSwitch.fullFlashingFlow(cls.config["switchOrderID"])
  • 40. Test Arbiter ... print("[LOG] " + datetime.now().strftime("%Y-%m-%d %H:%M:%S") + " Appium server started.") downloadFromS3(cls.config["s3ApkPath"], os.path.dirname(os.path.dirname(os.path.realpath(__file__))) + "/apk", cls.config["APP_NAME"]) cls.driver = create_driver('Android', configFile, bool(int(cls.config["reinstall_app"]))) cls.driver.implicitly_wait(5) cls.bulbMac1 = cls.config["bulbMac1"] cls.bulbMac2 = cls.config["bulbMac2"] cls.switchMac = cls.config["switchMac"] cls.retryNumber = int(cls.config["retryNumber"]) cls.bulbSlot1 = int(cls.config["bulbSlot1"]) cls.bulbSlot2 = int(cls.config["bulbSlot2"]) cls.bulbProvisioningWorkaround = cls.config["bulbProvisioningWorkaround"] cls.factoryResetWorkaround = cls.config["factoryResetWorkaround"] cls.HWbulbWorkaround = cls.config["HWbulbWorkaround"]
  • 41. Test Arbiter ... cls.androidLib = android(cls.driver) cls.bulbEnv = BulbEnv(cls.config["deviceNumber"], cls.config["resolutionX"], cls.config["resolutionY"], cls.config["rowsNum"], cls.config["columnsNum"]) cls.switchEnv = switchLib(cls.config["switchAddress"], cls.config["login"], cls.config["password"], cls.config["platform"], cls.config["channelOn1"], cls.config["channelOn2"], cls.config["channelOff1"]) cls.app = Pages(cls.driver, cls.switchEnv) cls.e2eEnv = e2eLib(cls.app, cls.bulbEnv, cls.switchEnv, cls.config["minThreshold_on"], cls.config["maxThreshold_on"])
  • 42. Number of commits 212 Number of code lines added 69293 Number of code lines deleted 46028 Number of Github contributors 3 Number of Jenkins jobs 18 Number of builds 777 QA CI Environment QA CI Environment Test Arbiter JIRA TEST RESULTS TEST RESULTS DUT DUT DUT
  • 43.
  • 44. def test12_associations(self): self.app.clickDeviceOnAddedList(self.switchMac) self.switchEnv.switchWakeUp() self.e2eEnv.switch_turnOffBulbs(self.config["channelOff2"], [self.bulbSlot1, self.bulbSlot2], 0, self.retryNumber) self.app.doAssociation(self.switchMac, 0, "none") self.switchEnv.switchWakeUp() self.e2eEnv.switch_turnOffBulbs(self.config["channelOff2"], [self.bulbSlot1, self.bulbSlot2], 0, self.retryNumber) self.app.swipeUp() self.app.doAssociation(self.switchMac, 1, self.bulbMac1, "Lightness") self.driver.back() Tests creation? Couldn’t be simplier !
  • 45. def test18_FRswitchHW(self): self.androidLib.resetBT() self.switchEnv.switchWakeUp() self.app.addDevice(self.switchMac) self.app.findAddedDeviceOnList(self.switchMac) self.e2eEnv.switch_FR(self.switchMac, 5) def test08_provisioningOfNodOn(self): self.switchEnv.switchFactoryReset() self.switchEnv.switchWakeUp() self.app.addDevice(self.switchMac) self.app.findAddedDeviceOnList(self.switchMac) Tests creation? Couldn’t be simplier ! def test14_sharing(self): self.app.share("Gmail") self.app.share("Save to Drive")
  • 47. ● Long time SSH connection (fast switch state change) ● PWM high frequency (UART testing) ● Electrostatic Discharge ● Busy camera buffer ● Appium server / flashing / setting devices test steps timeouts ● Different screen sizes / language versions / platforms but where is a problem... Just a few problems met...
  • 48. ● Long time SSH connection ● PWM high frequency (UART testing) ● Electrostatic Discharge ● Busy camera buffer ● Appium server / flashing / setting devices test steps timeouts ● Different screen sizes / language versions / platforms ...there is a solution ! ● Cert Authorization ● I/O stream log deletion ● Humidifier ● Monitoring camera process and usage ● Moved as set-up activity ● Gather necessary informations and determine while class initiation
  • 49. … unfortunately, not for all of them :(
  • 50. Performance Mobile Phone Number of ADV packets received from a Bulb within 15 minutes The percentage of packets received [%]Clean RF environment Noisy RF environment (1200 packets per second) VERY GOOD Galaxy Tab 7.0 (T230) 3921 2312 59 GOOD LG G2 3395 1594 47 Nexus 6 5294 1948 37 Samsung Galaxy S6 5818 2130 37 AVERAGE Samsung Galaxy Note 4 5070 1607 32 Nexus 9 5377 1541 29 Sony Xperia Z2 5862 1604 27 Samsung Galaxy S5 5784 1494 26 Nexus 5 5964 1518 25 BAD Samsung Galaxy S5 mini 6397 1197 19 Samsung Galaxy Note 10.1 5268 751 14 Samsung Galaxy S3 6018 641 11 VERY BAD Xiaomi Mi3 3237 278 9 LG G2 mini 4081 328 8 Samsung Galaxy A3 4050 319 8 Samsung Galaxy S4 mini 4037 329 8 HTC One M8 3868 279 7 Sony Xperia T3 4040 283 7
  • 51. Takeaway... ● Does Scrum really work? Yes, it does! ● Think big, but act small ● Iterate and refine ● Unleash team creativity ● Focus on interoperability ● Modularity is the key ● Incorporate RBT - focus on risky functionalities, e.g. OTAU ● Physics is ruthless ● IoT is also hardware ● Security! Want to know more about IoT protocols? Just grab our free ebook at: https://silvair.com/media
  • 52. Thanks! Any questions? You can find us at: Dawid Pacia: ◎ e-mail: paciadawid@gmail.com ◎ / paciadawid Tomasz Janiszewski: ◎ e-mail: janiszewski.tomasz@gmail.com ◎ / tjaniszewski https://silvair.com/careers