SlideShare ist ein Scribd-Unternehmen logo
1 von 19
Lessons Learned on
Automation
Liang Gao (liangg@gmail.com)
Lesson -1 Automation Cost Money

You need people to write scripts

You need testbed to run those scripts (lots of
equipments)

You need people to monitor those test bed
runs, and debug running failures.

You need people to maintain those scripts to
reflect product change

Can you justify all those to your upper
management?
You might if you

Show some proof in the front.

Can go to your boss and say: I can reduce
major release cycle from 8 month to 5
month if I do this.

Can go to your boss and say: I can reduce
customer found bugs down by 20% if I do
this.
Lesson 2: Automated Testing is Dangerous

Once it is automated, chances are, it will not
be manually executed anymore.

No exploratory testing can be done

If your script has problem, and can not catch
bugs (output is pass even it should be fail), it
will be going into darkness for ever

You may lose your chance to catch bugs for
ever and you don’t know.
Lesson 3: No Framework, No Automation

If you have one couple of hundred scripts in
hand, you might be fine without a framework.

You need one if you have thousands of scripts
to manage.

How to know which test case passed/failed?

Where to get a decent running report.

How to group test cases easily.

How to debug

You need one if there are many people develop
scripts in parallel.
Lesson 4: Use Standard Script Language

VB/TCL/Perl/Python/Ruby

Customized scripts need learning period

Customized script language – Who maintain
it? No community support

Hard to communicate with others –
developers, other test outside the company
Lesson 5: Separate writer and runner

Engineer should not develop script and then
execute script. Script execution is a dedicated
job.

Debug takes time

Test bed problem?

Script problem?

Image regression bug?

Script integration takes time.

Script execution should be a 24/7 factory,
should be a machine. Script is just a by-
product, it is the full version report that you
want
Lesson 6: Test Bed Independent is very Important

Separate the writer and runner requires the script
should be testbed independent.

Script should be able to run from testbed to testbed
with minimum change to the test framework
configuration, not to script itself.

Hard coded router/switch names, IP addresses,
interface names are not good when switch testbeds

A handover process is needed between the writer
and runner.

Develop a “script checker” tool to check the hard
coded values in the script as an acceptance criteria.
Lesson 7:
Manage Your Scripts the Same as Your Bugs

Script need to have states like bugs

(S) – Submitted: Script is submitted to the
regression team

(A) – Assigned: Script is assigned to a regression
engineer

(I) – Integration: regression engineer is putting it on
the regression test bed.

(P) – Production: Script is in the regression testbed
and will be run on regression testing against release

(F) - Feedback needed: Script has errors, more
feedback from writer needed.
Lesson 8: Design You Scripts As Data Driven.

Script need to be data driven

Different data means different test cases.
Test_case.tcl {router1 eth0} {router2 eth0}
{router3 eth0 eth1} {router4 eth0 eth1 eth2}
{mode 1} {phase 1} {traffic 1 speed}
Can test all combinations of Mode, Phase and
Traffic with one single script.

Data generation can be automated too.

Can catch more bugs when vary the data
Lesson 9: Log is More Important Than
Script

When fail, most of the time we only look at
the logs, not scripts for debugging.

Read log like read a book

More debugging info dumped when fail.
Lesson 10:
test case designer and automator separate?

Don’t use automator who doesn’t respect
testing

Don’t use automator who doesn’t
understand testing

C company use same tester to design,
manual execute and automate the test
cases. And so is J company
Lesson 11: User Standard Testbed
DUT2 DUT3 DUT4
VLAN1
VLAN2
VLAN3
VLAN4
Four Ethernet on each of the Device Under Test
1 2 3 4 1 2 3 4 1 2 3 4
被测设备 2
DUT1
1 2 3 4
Lesson 11: User Standard Testbed
DUT1 DUT2 DUT3 DUT4
Ethernet1 Open Open Shutdown Shutdown
Ethernet 2 Open Shutdown Open Shutdown
Ethernet 3 Shutdown Open Open Shutdown
Ethernet 4 Shutdown Shutdown Shutdown Shutdown
Logical Topology:
DUT2
VLAN1
VLAN2
VLAN3
DUT1
DUT3
Lesson 12:
Dynamic script allocation

Different release has different feature set

Each regression run need to pick different
scripts to run

Tricks for dynamic script allocation

Static file for version matching

Database
Lesson 13:
Use Database to keep automation result history

Database for full version report

Database for regression bug debugging
Lesson 14:
Script maintenance – version per branch

Certify scripts for each new release

Keep them in a separate code branch
Version control

Version 1.0, Dec 24th, 2007, Liang Gao

Version 1.1 March 2008, Liang Gao
Automation Lessons Learned on Cost, Testing, Frameworks and More

Weitere ähnliche Inhalte

Was ist angesagt?

The art of being an agile programmer
The art of being an agile programmerThe art of being an agile programmer
The art of being an agile programmerClaudia Rosu
 
Ant Unit Your Functional Test
Ant Unit Your Functional TestAnt Unit Your Functional Test
Ant Unit Your Functional Testjimmy zhao
 
PHPUnit with Magento
PHPUnit with MagentoPHPUnit with Magento
PHPUnit with MagentoTu Hoang
 
Testing & continuous delivery
Testing & continuous deliveryTesting & continuous delivery
Testing & continuous deliveryNelson Melina
 
Testing Philosphies
Testing PhilosphiesTesting Philosphies
Testing PhilosphiesRob Kaufman
 
Code Review
Code ReviewCode Review
Code ReviewDivante
 
Are Automated Debugging Techniques Actually Helping Programmers
Are Automated Debugging Techniques Actually Helping ProgrammersAre Automated Debugging Techniques Actually Helping Programmers
Are Automated Debugging Techniques Actually Helping ProgrammersChris Parnin
 
Test Driven Development (TDD) Preso 360|Flex 2010
Test Driven Development (TDD) Preso 360|Flex 2010Test Driven Development (TDD) Preso 360|Flex 2010
Test Driven Development (TDD) Preso 360|Flex 2010guest5639fa9
 
Mockito 2.x Migration - Droidcon UK 2018
Mockito 2.x Migration - Droidcon UK 2018Mockito 2.x Migration - Droidcon UK 2018
Mockito 2.x Migration - Droidcon UK 2018Hazem Saleh
 
Is your code ready for testing?
Is your code ready for testing?Is your code ready for testing?
Is your code ready for testing?Ralph Ligtenberg
 
RIA 05 - Unit Testing by Ajinkya Prabhune
RIA 05 - Unit Testing by Ajinkya PrabhuneRIA 05 - Unit Testing by Ajinkya Prabhune
RIA 05 - Unit Testing by Ajinkya PrabhuneJohannes Hoppe
 
Testing challenges in a continuous delivery world
Testing challenges in a continuous delivery worldTesting challenges in a continuous delivery world
Testing challenges in a continuous delivery worldCristiano Cunha
 
Alexandru Bolboaca - Unit Testing from the Trenches
Alexandru Bolboaca - Unit Testing from the TrenchesAlexandru Bolboaca - Unit Testing from the Trenches
Alexandru Bolboaca - Unit Testing from the TrenchesMozaic Works
 
Helping Programmers Write Better Tests
Helping Programmers Write Better TestsHelping Programmers Write Better Tests
Helping Programmers Write Better TestsGeoffrey Dunn
 
Code Review Tool Evaluation
Code Review Tool EvaluationCode Review Tool Evaluation
Code Review Tool EvaluationKate Semizhon
 
Walmyr Filho - Lessons learned as software engineer working at appear.in
Walmyr Filho - Lessons learned as software engineer working at appear.inWalmyr Filho - Lessons learned as software engineer working at appear.in
Walmyr Filho - Lessons learned as software engineer working at appear.inAgile Lietuva
 
Tdd in php a brief example
Tdd in php   a brief exampleTdd in php   a brief example
Tdd in php a brief exampleJeremy Kendall
 

Was ist angesagt? (20)

The art of being an agile programmer
The art of being an agile programmerThe art of being an agile programmer
The art of being an agile programmer
 
Ant Unit Your Functional Test
Ant Unit Your Functional TestAnt Unit Your Functional Test
Ant Unit Your Functional Test
 
PHPUnit with Magento
PHPUnit with MagentoPHPUnit with Magento
PHPUnit with Magento
 
Testing & continuous delivery
Testing & continuous deliveryTesting & continuous delivery
Testing & continuous delivery
 
Testing Philosphies
Testing PhilosphiesTesting Philosphies
Testing Philosphies
 
Code Review
Code ReviewCode Review
Code Review
 
Tdd red-green-refactor
Tdd red-green-refactorTdd red-green-refactor
Tdd red-green-refactor
 
Are Automated Debugging Techniques Actually Helping Programmers
Are Automated Debugging Techniques Actually Helping ProgrammersAre Automated Debugging Techniques Actually Helping Programmers
Are Automated Debugging Techniques Actually Helping Programmers
 
Test Driven Development (TDD) Preso 360|Flex 2010
Test Driven Development (TDD) Preso 360|Flex 2010Test Driven Development (TDD) Preso 360|Flex 2010
Test Driven Development (TDD) Preso 360|Flex 2010
 
Mockito 2.x Migration - Droidcon UK 2018
Mockito 2.x Migration - Droidcon UK 2018Mockito 2.x Migration - Droidcon UK 2018
Mockito 2.x Migration - Droidcon UK 2018
 
DIG1108 Lesson 7
DIG1108 Lesson 7DIG1108 Lesson 7
DIG1108 Lesson 7
 
Is your code ready for testing?
Is your code ready for testing?Is your code ready for testing?
Is your code ready for testing?
 
RIA 05 - Unit Testing by Ajinkya Prabhune
RIA 05 - Unit Testing by Ajinkya PrabhuneRIA 05 - Unit Testing by Ajinkya Prabhune
RIA 05 - Unit Testing by Ajinkya Prabhune
 
Unit testing in PHP
Unit testing in PHPUnit testing in PHP
Unit testing in PHP
 
Testing challenges in a continuous delivery world
Testing challenges in a continuous delivery worldTesting challenges in a continuous delivery world
Testing challenges in a continuous delivery world
 
Alexandru Bolboaca - Unit Testing from the Trenches
Alexandru Bolboaca - Unit Testing from the TrenchesAlexandru Bolboaca - Unit Testing from the Trenches
Alexandru Bolboaca - Unit Testing from the Trenches
 
Helping Programmers Write Better Tests
Helping Programmers Write Better TestsHelping Programmers Write Better Tests
Helping Programmers Write Better Tests
 
Code Review Tool Evaluation
Code Review Tool EvaluationCode Review Tool Evaluation
Code Review Tool Evaluation
 
Walmyr Filho - Lessons learned as software engineer working at appear.in
Walmyr Filho - Lessons learned as software engineer working at appear.inWalmyr Filho - Lessons learned as software engineer working at appear.in
Walmyr Filho - Lessons learned as software engineer working at appear.in
 
Tdd in php a brief example
Tdd in php   a brief exampleTdd in php   a brief example
Tdd in php a brief example
 

Ähnlich wie Automation Lessons Learned on Cost, Testing, Frameworks and More

assertYourself - Breaking the Theories and Assumptions of Unit Testing in Flex
assertYourself - Breaking the Theories and Assumptions of Unit Testing in FlexassertYourself - Breaking the Theories and Assumptions of Unit Testing in Flex
assertYourself - Breaking the Theories and Assumptions of Unit Testing in Flexmichael.labriola
 
Dot all 2019 | Testing with Craft | Giel Tettelar
Dot all 2019 | Testing with Craft | Giel TettelarDot all 2019 | Testing with Craft | Giel Tettelar
Dot all 2019 | Testing with Craft | Giel TettelarGiel Tettelaar
 
Creating testing tools to support development
Creating testing tools to support developmentCreating testing tools to support development
Creating testing tools to support developmentChema del Barco
 
5 reasons you'll love to hate Agile Development
5 reasons you'll love to hate Agile Development5 reasons you'll love to hate Agile Development
5 reasons you'll love to hate Agile DevelopmentArin Sime
 
QA Best Practices
QA  Best PracticesQA  Best Practices
QA Best PracticesJames York
 
Indy meetup#7 effective unit-testing-mule
Indy meetup#7 effective unit-testing-muleIndy meetup#7 effective unit-testing-mule
Indy meetup#7 effective unit-testing-muleikram_ahamed
 
Writing Tests with the Unity Test Framework
Writing Tests with the Unity Test FrameworkWriting Tests with the Unity Test Framework
Writing Tests with the Unity Test FrameworkPeter Kofler
 
Swiss Testing Day - Testautomation, 10 (sometimes painful) lessons learned
Swiss Testing Day - Testautomation, 10 (sometimes painful) lessons learnedSwiss Testing Day - Testautomation, 10 (sometimes painful) lessons learned
Swiss Testing Day - Testautomation, 10 (sometimes painful) lessons learnedMichael Palotas
 
Testing Hourglass at Jira Frontend - by Alexey Shpakov, Sr. Developer @ Atlas...
Testing Hourglass at Jira Frontend - by Alexey Shpakov, Sr. Developer @ Atlas...Testing Hourglass at Jira Frontend - by Alexey Shpakov, Sr. Developer @ Atlas...
Testing Hourglass at Jira Frontend - by Alexey Shpakov, Sr. Developer @ Atlas...Applitools
 
Automation Responsibility
Automation ResponsibilityAutomation Responsibility
Automation ResponsibilityZbyszek Mockun
 
Automation testing interview pdf org
Automation testing interview pdf orgAutomation testing interview pdf org
Automation testing interview pdf orgTestbytes
 

Ähnlich wie Automation Lessons Learned on Cost, Testing, Frameworks and More (20)

Why test with flex unit
Why test with flex unitWhy test with flex unit
Why test with flex unit
 
assertYourself - Breaking the Theories and Assumptions of Unit Testing in Flex
assertYourself - Breaking the Theories and Assumptions of Unit Testing in FlexassertYourself - Breaking the Theories and Assumptions of Unit Testing in Flex
assertYourself - Breaking the Theories and Assumptions of Unit Testing in Flex
 
Dot all 2019 | Testing with Craft | Giel Tettelar
Dot all 2019 | Testing with Craft | Giel TettelarDot all 2019 | Testing with Craft | Giel Tettelar
Dot all 2019 | Testing with Craft | Giel Tettelar
 
Creating testing tools to support development
Creating testing tools to support developmentCreating testing tools to support development
Creating testing tools to support development
 
Tdd - introduction
Tdd - introductionTdd - introduction
Tdd - introduction
 
TDD Best Practices
TDD Best PracticesTDD Best Practices
TDD Best Practices
 
5 reasons you'll love to hate Agile Development
5 reasons you'll love to hate Agile Development5 reasons you'll love to hate Agile Development
5 reasons you'll love to hate Agile Development
 
QA Best Practices
QA  Best PracticesQA  Best Practices
QA Best Practices
 
Python and test
Python and testPython and test
Python and test
 
Indy meetup#7 effective unit-testing-mule
Indy meetup#7 effective unit-testing-muleIndy meetup#7 effective unit-testing-mule
Indy meetup#7 effective unit-testing-mule
 
Intro To AOP
Intro To AOPIntro To AOP
Intro To AOP
 
Writing Tests with the Unity Test Framework
Writing Tests with the Unity Test FrameworkWriting Tests with the Unity Test Framework
Writing Tests with the Unity Test Framework
 
Swiss Testing Day - Testautomation, 10 (sometimes painful) lessons learned
Swiss Testing Day - Testautomation, 10 (sometimes painful) lessons learnedSwiss Testing Day - Testautomation, 10 (sometimes painful) lessons learned
Swiss Testing Day - Testautomation, 10 (sometimes painful) lessons learned
 
Testing Hourglass at Jira Frontend - by Alexey Shpakov, Sr. Developer @ Atlas...
Testing Hourglass at Jira Frontend - by Alexey Shpakov, Sr. Developer @ Atlas...Testing Hourglass at Jira Frontend - by Alexey Shpakov, Sr. Developer @ Atlas...
Testing Hourglass at Jira Frontend - by Alexey Shpakov, Sr. Developer @ Atlas...
 
Why Unit Testingl
Why Unit TestinglWhy Unit Testingl
Why Unit Testingl
 
Why unit testingl
Why unit testinglWhy unit testingl
Why unit testingl
 
Why Unit Testingl
Why Unit TestinglWhy Unit Testingl
Why Unit Testingl
 
Automation Responsibility
Automation ResponsibilityAutomation Responsibility
Automation Responsibility
 
Automation testing interview pdf org
Automation testing interview pdf orgAutomation testing interview pdf org
Automation testing interview pdf org
 
Unit Testing
Unit TestingUnit Testing
Unit Testing
 

Mehr von gaoliang641

Why we didn't catch that
Why we didn't catch thatWhy we didn't catch that
Why we didn't catch thatgaoliang641
 
Why we didn't catch that application bugs
Why we didn't catch that   application bugsWhy we didn't catch that   application bugs
Why we didn't catch that application bugsgaoliang641
 
Understand release engineering
Understand release engineeringUnderstand release engineering
Understand release engineeringgaoliang641
 
Understand regression testing
Understand regression testingUnderstand regression testing
Understand regression testinggaoliang641
 
The art of system and solution testing
The art of system and solution testingThe art of system and solution testing
The art of system and solution testinggaoliang641
 
Tester performance evaluation
Tester performance evaluationTester performance evaluation
Tester performance evaluationgaoliang641
 
Tester developer interaction
Tester developer interactionTester developer interaction
Tester developer interactiongaoliang641
 
Tester career path
Tester career pathTester career path
Tester career pathgaoliang641
 
Agile testing for large projects
Agile testing for large projectsAgile testing for large projects
Agile testing for large projectsgaoliang641
 
Project management for qa manager
Project management for qa managerProject management for qa manager
Project management for qa managergaoliang641
 
Make good use of explortary testing
Make good use of explortary testingMake good use of explortary testing
Make good use of explortary testinggaoliang641
 
Bug best practice
Bug best practiceBug best practice
Bug best practicegaoliang641
 
Lessons learned on localization testing
Lessons learned on localization testingLessons learned on localization testing
Lessons learned on localization testinggaoliang641
 
How to become a testing expert
How to become a testing expertHow to become a testing expert
How to become a testing expertgaoliang641
 
Functionality testing techniqu
Functionality testing techniquFunctionality testing techniqu
Functionality testing techniqugaoliang641
 
Protocol Security Testing best practice
Protocol Security Testing best practiceProtocol Security Testing best practice
Protocol Security Testing best practicegaoliang641
 
Backward thinking design qa system for quality goals
Backward thinking   design qa system for quality goalsBackward thinking   design qa system for quality goals
Backward thinking design qa system for quality goalsgaoliang641
 
Automation framework design and implementation
Automation framework design and implementationAutomation framework design and implementation
Automation framework design and implementationgaoliang641
 
Automation from start to finish
Automation   from start to finishAutomation   from start to finish
Automation from start to finishgaoliang641
 
Agile testing for large projects
Agile testing for large projectsAgile testing for large projects
Agile testing for large projectsgaoliang641
 

Mehr von gaoliang641 (20)

Why we didn't catch that
Why we didn't catch thatWhy we didn't catch that
Why we didn't catch that
 
Why we didn't catch that application bugs
Why we didn't catch that   application bugsWhy we didn't catch that   application bugs
Why we didn't catch that application bugs
 
Understand release engineering
Understand release engineeringUnderstand release engineering
Understand release engineering
 
Understand regression testing
Understand regression testingUnderstand regression testing
Understand regression testing
 
The art of system and solution testing
The art of system and solution testingThe art of system and solution testing
The art of system and solution testing
 
Tester performance evaluation
Tester performance evaluationTester performance evaluation
Tester performance evaluation
 
Tester developer interaction
Tester developer interactionTester developer interaction
Tester developer interaction
 
Tester career path
Tester career pathTester career path
Tester career path
 
Agile testing for large projects
Agile testing for large projectsAgile testing for large projects
Agile testing for large projects
 
Project management for qa manager
Project management for qa managerProject management for qa manager
Project management for qa manager
 
Make good use of explortary testing
Make good use of explortary testingMake good use of explortary testing
Make good use of explortary testing
 
Bug best practice
Bug best practiceBug best practice
Bug best practice
 
Lessons learned on localization testing
Lessons learned on localization testingLessons learned on localization testing
Lessons learned on localization testing
 
How to become a testing expert
How to become a testing expertHow to become a testing expert
How to become a testing expert
 
Functionality testing techniqu
Functionality testing techniquFunctionality testing techniqu
Functionality testing techniqu
 
Protocol Security Testing best practice
Protocol Security Testing best practiceProtocol Security Testing best practice
Protocol Security Testing best practice
 
Backward thinking design qa system for quality goals
Backward thinking   design qa system for quality goalsBackward thinking   design qa system for quality goals
Backward thinking design qa system for quality goals
 
Automation framework design and implementation
Automation framework design and implementationAutomation framework design and implementation
Automation framework design and implementation
 
Automation from start to finish
Automation   from start to finishAutomation   from start to finish
Automation from start to finish
 
Agile testing for large projects
Agile testing for large projectsAgile testing for large projects
Agile testing for large projects
 

Kürzlich hochgeladen

My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 

Kürzlich hochgeladen (20)

E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 

Automation Lessons Learned on Cost, Testing, Frameworks and More

  • 1. Lessons Learned on Automation Liang Gao (liangg@gmail.com)
  • 2. Lesson -1 Automation Cost Money  You need people to write scripts  You need testbed to run those scripts (lots of equipments)  You need people to monitor those test bed runs, and debug running failures.  You need people to maintain those scripts to reflect product change  Can you justify all those to your upper management?
  • 3. You might if you  Show some proof in the front.  Can go to your boss and say: I can reduce major release cycle from 8 month to 5 month if I do this.  Can go to your boss and say: I can reduce customer found bugs down by 20% if I do this.
  • 4. Lesson 2: Automated Testing is Dangerous  Once it is automated, chances are, it will not be manually executed anymore.  No exploratory testing can be done  If your script has problem, and can not catch bugs (output is pass even it should be fail), it will be going into darkness for ever  You may lose your chance to catch bugs for ever and you don’t know.
  • 5. Lesson 3: No Framework, No Automation  If you have one couple of hundred scripts in hand, you might be fine without a framework.  You need one if you have thousands of scripts to manage.  How to know which test case passed/failed?  Where to get a decent running report.  How to group test cases easily.  How to debug  You need one if there are many people develop scripts in parallel.
  • 6. Lesson 4: Use Standard Script Language  VB/TCL/Perl/Python/Ruby  Customized scripts need learning period  Customized script language – Who maintain it? No community support  Hard to communicate with others – developers, other test outside the company
  • 7. Lesson 5: Separate writer and runner  Engineer should not develop script and then execute script. Script execution is a dedicated job.  Debug takes time  Test bed problem?  Script problem?  Image regression bug?  Script integration takes time.  Script execution should be a 24/7 factory, should be a machine. Script is just a by- product, it is the full version report that you want
  • 8. Lesson 6: Test Bed Independent is very Important  Separate the writer and runner requires the script should be testbed independent.  Script should be able to run from testbed to testbed with minimum change to the test framework configuration, not to script itself.  Hard coded router/switch names, IP addresses, interface names are not good when switch testbeds  A handover process is needed between the writer and runner.  Develop a “script checker” tool to check the hard coded values in the script as an acceptance criteria.
  • 9. Lesson 7: Manage Your Scripts the Same as Your Bugs  Script need to have states like bugs  (S) – Submitted: Script is submitted to the regression team  (A) – Assigned: Script is assigned to a regression engineer  (I) – Integration: regression engineer is putting it on the regression test bed.  (P) – Production: Script is in the regression testbed and will be run on regression testing against release  (F) - Feedback needed: Script has errors, more feedback from writer needed.
  • 10. Lesson 8: Design You Scripts As Data Driven.  Script need to be data driven  Different data means different test cases. Test_case.tcl {router1 eth0} {router2 eth0} {router3 eth0 eth1} {router4 eth0 eth1 eth2} {mode 1} {phase 1} {traffic 1 speed} Can test all combinations of Mode, Phase and Traffic with one single script.  Data generation can be automated too.  Can catch more bugs when vary the data
  • 11. Lesson 9: Log is More Important Than Script  When fail, most of the time we only look at the logs, not scripts for debugging.  Read log like read a book  More debugging info dumped when fail.
  • 12. Lesson 10: test case designer and automator separate?  Don’t use automator who doesn’t respect testing  Don’t use automator who doesn’t understand testing  C company use same tester to design, manual execute and automate the test cases. And so is J company
  • 13. Lesson 11: User Standard Testbed DUT2 DUT3 DUT4 VLAN1 VLAN2 VLAN3 VLAN4 Four Ethernet on each of the Device Under Test 1 2 3 4 1 2 3 4 1 2 3 4 被测设备 2 DUT1 1 2 3 4
  • 14. Lesson 11: User Standard Testbed DUT1 DUT2 DUT3 DUT4 Ethernet1 Open Open Shutdown Shutdown Ethernet 2 Open Shutdown Open Shutdown Ethernet 3 Shutdown Open Open Shutdown Ethernet 4 Shutdown Shutdown Shutdown Shutdown Logical Topology: DUT2 VLAN1 VLAN2 VLAN3 DUT1 DUT3
  • 15. Lesson 12: Dynamic script allocation  Different release has different feature set  Each regression run need to pick different scripts to run  Tricks for dynamic script allocation  Static file for version matching  Database
  • 16. Lesson 13: Use Database to keep automation result history  Database for full version report  Database for regression bug debugging
  • 17. Lesson 14: Script maintenance – version per branch  Certify scripts for each new release  Keep them in a separate code branch
  • 18. Version control  Version 1.0, Dec 24th, 2007, Liang Gao  Version 1.1 March 2008, Liang Gao