Slide 1

Slide 1 text

TESTING TO REDUCE SUPPORT CALLS Michelangelo van Dam

Slide 2

Slide 2 text

MICHELANGELO VAN DAM I'm a senior #php architect, co-founder and #ceo of @in2itvof, #community leader at @phpbenelux, coach at @CoderDojoBelgium, #MVP, #digitalnomad, likes #coffee. Tes$ng to reduce support calls by Michelangelo van Dam (@DragonBe)

Slide 3

Slide 3 text

I’M ACTIVELY INVOLVED IN THE COMMUNITY … DevOps
 Community Tes$ng to reduce support calls by Michelangelo van Dam (@DragonBe)

Slide 4

Slide 4 text

Tes$ng to reduce support calls by Michelangelo van Dam (@DragonBe)

Slide 5

Slide 5 text

To be successful at testing you need to be able to look beyond the walls of the imaginary room! Tes$ng to reduce support calls by Michelangelo van Dam (@DragonBe)

Slide 6

Slide 6 text

WHY TESTING? ➤ Ensure business/regulatory requirements are met ➤ Prevent (serious) issues when used by customers ➤ Protect against loss of revenue or reputational damage ➤ Gain competitive advantage ➤ Receive trust and respect Tes$ng to reduce support calls by Michelangelo van Dam (@DragonBe)

Slide 7

Slide 7 text

Tes$ng to reduce support calls by Michelangelo van Dam (@DragonBe)

Slide 8

Slide 8 text

HOW DO I START? Tes$ng to reduce support calls by Michelangelo van Dam (@DragonBe)

Slide 9

Slide 9 text

Tes$ng to reduce support calls by Michelangelo van Dam (@DragonBe)

Slide 10

Slide 10 text

Even though F5 testing is easy to do, please adopt a more robust form of testing that can be shared with your team members Tes$ng to reduce support calls by Michelangelo van Dam (@DragonBe)

Slide 11

Slide 11 text

Tes$ng to reduce support calls by Michelangelo van Dam (@DragonBe)

Slide 12

Slide 12 text

Tes$ng to reduce support calls by Michelangelo van Dam (@DragonBe)

Slide 13

Slide 13 text

Tes$ng to reduce support calls by Michelangelo van Dam (@DragonBe)

Slide 14

Slide 14 text

Tes$ng to reduce support calls by Michelangelo van Dam (@DragonBe)

Slide 15

Slide 15 text

Be mindful that automated acceptance tests are sensitive for changes in layout of your application! Tes$ng to reduce support calls by Michelangelo van Dam (@DragonBe)

Slide 16

Slide 16 text

Tes$ng to reduce support calls by Michelangelo van Dam (@DragonBe)

Slide 17

Slide 17 text

Tes$ng to reduce support calls by Michelangelo van Dam (@DragonBe)

Slide 18

Slide 18 text

Feature: Meetup group has events In order to participate in an event As a participant A meetup group must have public events Scenario: Search for events of a user group Given the meetup group "GroningenPHP" exists When I search for meetup group "GroningenPHP" Then I should see at least "1" event listed Tes$ng to reduce support calls by Michelangelo van Dam (@DragonBe)

Slide 19

Slide 19 text

Tes$ng to reduce support calls by Michelangelo van Dam (@DragonBe)

Slide 20

Slide 20 text

Feature: Meetup group has events In order to participate in an event As a participant A meetup group must have public events Scenario: Search for events of a user group Given the meetup group "GroningenFoo" exists When I search for meetup group "GroningenFoo" Then I should see at least "1" event listed Tes$ng to reduce support calls by Michelangelo van Dam (@DragonBe)

Slide 21

Slide 21 text

Tes$ng to reduce support calls by Michelangelo van Dam (@DragonBe)

Slide 22

Slide 22 text

Behat tests that business requirements are met, not that correct logic is implemented! Tes$ng to reduce support calls by Michelangelo van Dam (@DragonBe)

Slide 23

Slide 23 text

Tes$ng to reduce support calls by Michelangelo van Dam (@DragonBe)

Slide 24

Slide 24 text

Tes$ng to reduce support calls by Michelangelo van Dam (@DragonBe)

Slide 25

Slide 25 text

LEGACY APPLICATIONS Tes$ng to reduce support calls by Michelangelo van Dam (@DragonBe)

Slide 26

Slide 26 text

If you measure code coverage, ensure that the core of your application is 100% covered with tests, even though it only is 1% of the whole code base! Tes$ng to reduce support calls by Michelangelo van Dam (@DragonBe)

Slide 27

Slide 27 text

Tes$ng to reduce support calls by Michelangelo van Dam (@DragonBe)

Slide 28

Slide 28 text

USER EXPERIENCE TESTING Keep in touch with your users/customers Tes$ng to reduce support calls by Michelangelo van Dam (@DragonBe)

Slide 29

Slide 29 text

Tes$ng to reduce support calls by Michelangelo van Dam (@DragonBe)

Slide 30

Slide 30 text

UNDERSTAND THE “BUSINESS VALUE” Tes$ng to reduce support calls by Michelangelo van Dam (@DragonBe)

Slide 31

Slide 31 text

WRITE OUT THE REQUIREMENTS Tes$ng to reduce support calls by Michelangelo van Dam (@DragonBe)

Slide 32

Slide 32 text

DRAW OR USE WIREFRAMES Tes$ng to reduce support calls by Michelangelo van Dam (@DragonBe)

Slide 33

Slide 33 text

START WITH A POC Tes$ng to reduce support calls by Michelangelo van Dam (@DragonBe)

Slide 34

Slide 34 text

CODE IN PROD FROM DAY 0 Use feature toggles to perform A/B testing immediately Tes$ng to reduce support calls by Michelangelo van Dam (@DragonBe)

Slide 35

Slide 35 text

GIVE USERS A WAY TO PROVIDE FEEDBACK EASILY Tes$ng to reduce support calls by Michelangelo van Dam (@DragonBe)

Slide 36

Slide 36 text

Tes$ng to reduce support calls by Michelangelo van Dam (@DragonBe)

Slide 37

Slide 37 text

KEEP DEVELOPMENT CYCLES SHORT AND AGILE Tes$ng to reduce support calls by Michelangelo van Dam (@DragonBe)

Slide 38

Slide 38 text

Tes$ng to reduce support calls by Michelangelo van Dam (@DragonBe) Agile Lean Kanban

Slide 39

Slide 39 text

Tes$ng to reduce support calls by Michelangelo van Dam (@DragonBe)

Slide 40

Slide 40 text

PROTIP: KEEP TRACK OF… Tes$ng to reduce support calls by Michelangelo van Dam (@DragonBe)

Slide 41

Slide 41 text

OTHER FORMS OF TESTING Tes$ng to reduce support calls by Michelangelo van Dam (@DragonBe)

Slide 42

Slide 42 text

PERFORMANCE TESTING Tes$ng to reduce support calls by Michelangelo van Dam (@DragonBe)

Slide 43

Slide 43 text

Tes$ng to reduce support calls by Michelangelo van Dam (@DragonBe)

Slide 44

Slide 44 text

SECURITY TESTING Tes$ng to reduce support calls by Michelangelo van Dam (@DragonBe)

Slide 45

Slide 45 text

Tes$ng to reduce support calls by Michelangelo van Dam (@DragonBe) Sqlmap®

Slide 46

Slide 46 text

RESILIENCE TESTING Chaos Engineering Tes$ng to reduce support calls by Michelangelo van Dam (@DragonBe)

Slide 47

Slide 47 text

Tes$ng to reduce support calls by Michelangelo van Dam (@DragonBe)

Slide 48

Slide 48 text

MANUAL TESTING Not all things can be automated Tes$ng to reduce support calls by Michelangelo van Dam (@DragonBe)

Slide 49

Slide 49 text

EXPLORATORY TESTING Looking at the application from every angle to discover flaws in functionality, design or behaviour. A.K.A. BlackBox Testing Tes$ng to reduce support calls by Michelangelo van Dam (@DragonBe)

Slide 50

Slide 50 text

PENETRATION TESTING Finding and exploiting weaknesses, flaws or poor configurations in your application to gain privileged access or syphon data out of your business. Tes$ng to reduce support calls by Michelangelo van Dam (@DragonBe)

Slide 51

Slide 51 text

LEGAL TESTING & AUDITING In regulatory industries, legal testing and auditing is a must Tes$ng to reduce support calls by Michelangelo van Dam (@DragonBe)

Slide 52

Slide 52 text

Use the right tool for your testing requirements. Nothing worse than to waste time configuring a testing tool that provides no value! Tes$ng to reduce support calls by Michelangelo van Dam (@DragonBe)

Slide 53

Slide 53 text

AUTOMATED TESTING? Tes$ng to reduce support calls by Michelangelo van Dam (@DragonBe)

Slide 54

Slide 54 text

AUTOMATE WHAT’S POSSIBLE ➤ If it’s repetitive, automate it ➤ Prevents someone’s “bad day” to cause issues ➤ Helps when under stress or pressure ➤ Provides documentation and insights to everyone ➤ Can be fine-tuned over time Tes$ng to reduce support calls by Michelangelo van Dam (@DragonBe)

Slide 55

Slide 55 text

Tes$ng to reduce support calls by Michelangelo van Dam (@DragonBe)

Slide 56

Slide 56 text

If I have to do the same thing more than once, I automate it! Tes$ng to reduce support calls by Michelangelo van Dam (@DragonBe)

Slide 57

Slide 57 text

WILL IT PREVENT FAILURE? Tes$ng to reduce support calls by Michelangelo van Dam (@DragonBe)

Slide 58

Slide 58 text

Tes$ng to reduce support calls by Michelangelo van Dam (@DragonBe)

Slide 59

Slide 59 text

WHEN FAILURE DOES HAPPEN… FAILURE RESOLUTION REVIEW REMEDIATION ANALYSIS BEST PRACTICES AUTOMATION ADOPTION Tes$ng to reduce support calls by Michelangelo van Dam (@DragonBe) Credits: Josh Evans, Mastering Chaos at Netflix

Slide 60

Slide 60 text

WILL THIS REDUCE SUPPORT CALLS? Tes$ng to reduce support calls by Michelangelo van Dam (@DragonBe)

Slide 61

Slide 61 text

LET’S SUMMARISE ➤ We test functional requirements with Selenium ➤ We test business requirements with Behat ➤ We test code requirements with unit and mutation tests ➤ We let our target audience test our work early ➤ We test performance, security and resilience of our application ➤ We run all this in a continuous integration tool ➤ And we have regular manual exploratory and penetration tests ➤ We understand failures can still occur, but we address them as a team and adopt a culture of continuous learning & automation Tes$ng to reduce support calls by Michelangelo van Dam (@DragonBe)

Slide 62

Slide 62 text

Bring tests closer to the point where code is created and you already win time and money! SHIFT LEFT Tes$ng to reduce support calls by Michelangelo van Dam (@DragonBe)

Slide 63

Slide 63 text

WILL THIS REDUCE SUPPORT CALLS? YES Between 40% and 65% less support calls or bug reports* Tes$ng to reduce support calls by Michelangelo van Dam (@DragonBe) (*) Review of in2it customers in 2018

Slide 64

Slide 64 text

RESOURCES 1/3 ➤ PHP User Groups: php.ug ➤ Ministry of Testing: ministryoftesting.com ➤ Belgium DevOps Community: meetup.com/Devops-Belgium ➤ Belgium Cyber Security Coalition: cybersecuritycoalition.be ➤ Azure User Group Belgium: azug.be ➤ Global Open Source Initiative: opensource.org ➤ Selenium: seleniumhq.org ➤ Katalon Studio: katalon.com ➤ SauceLabs: saucelabs.com ➤ Behat: behat.org ➤ PHPUnit: phpunit.de ➤ Infection: infection.github.io ➤ Usabilla: usabilla.com ➤ Apache Bench: httpd.apache.org ➤ Apache JMeter: jmeter.apache.org ➤ Joe Dog Siege: joedog.org/siege-home ➤ MySQL Slap: dev.mysql.com Tes$ng to reduce support calls by Michelangelo van Dam (@DragonBe)

Slide 65

Slide 65 text

RESOURCES 2/3 ➤ NeoLoad: neotys.com/neoload ➤ LoadNinja: loadninja.com ➤ OWASP Zed Attack Proxy: owasp.org ➤ Vega Vulnerability Scanner: subgraph.com/ vega ➤ Burp Suite: portswigger.net/burp ➤ SonarQube: sonarqube.org ➤ RIPS Tech: ripstech.com ➤ SQLMap: sqlmap.org ➤ Arachni: arachni-scanner.com ➤ Netflix Chaos Monkey: techblog.netflix.com ➤ Jenkins: jenkins.io ➤ JetBrains TeamCity: jetbrains.com/ teamcity ➤ Atlassian Bamboo: atlassian.com/ software/bamboo ➤ GitHub: github.com ➤ GitLab: gitlab.com ➤ Atlassian BitBucket: bitbucket.org ➤ Phabricator: phacility.com/phabricator Tes$ng to reduce support calls by Michelangelo van Dam (@DragonBe)

Slide 66

Slide 66 text

RESOURCES 3/3 ➤ Microsoft Azure: azure.microsoft.com ➤ Amazon Web Services: aws.amazon.com ➤ Google Cloud Platform: cloud.google.com ➤ Travis CI: travis-ci.org ➤ CodeShip: codeship.com ➤ Semaphore: semaphoreci.com ➤ Buddy: buddy.works ➤ Go CD: gocd.org ➤ NeverCode: nevercode.io ➤ Strider CD: strider-cd.github.io Tes$ng to reduce support calls by Michelangelo van Dam (@DragonBe)

Slide 67

Slide 67 text

Improving quality one test at a $me Slides available at in2.se/reduce-support-calls Tes$ng to reduce support calls by Michelangelo van Dam (@DragonBe)