This document discusses testing approaches for mobile applications at Yelp. It describes how Yelp uses documentation, mocks, and JSON to test new mobile APIs on iOS and Android. It outlines the different types of tests Yelp employs, including unit tests, integration tests, and UI tests. For iOS, it details how KIF is used for integration testing. For Android, it explains how Espresso is used for UI tests along with techniques for addressing flakiness and speeding up test runs.
This document discusses how scaling teams to support big data growth at Yelp can negatively impact deployment speed due to an exponential increase in the probability of failures as the number of developers increases. It proposes service-oriented architecture and focusing on mean time to recovery rather than just preventing failures as ways to mitigate these risks and maintain rapid iteration. Continuous delivery, reliable but not exhaustive testing, and treating all processes as distributed are also recommended to support scaling teams while preserving deployment speed.
1) The document discusses how human fallibility and increased development teams can lead to an exponential decay in the probability of successful deployments over time as the number of changes increases.
2) It recommends approaches like implementing a service-oriented architecture, focusing on mean time to recovery rather than just preventing failures, and establishing "DevOps deputies" to help mitigate this problem.
3) The key message is that organizations should embrace DevOps culture, tailor their approaches to their specific teams, plan for inevitable changes over time, and view components as distributed from the beginning.
Microservices Summit - The Human Side of ServicesYelp Engineering
This document discusses the importance of the human side of services at Yelp and outlines several best practices for operating microservices. It emphasizes the importance of clear organizational objectives, service level agreements to define key metrics like performance and reliability, emphasis on cooperation between teams with varied skills, and avoiding common pitfalls like depending too heavily on libraries or assuming all developers can do operations work. The overall message is that successful microservices require both technical excellence and a focus on the human factors of collaboration, clear goals, and ownership.
With the creation of the cucumber framework came the creation of the Gherkin Scripting format (also known as the Given-When-Then format). The structure of a Gherkin script is very straight-forward: Given provides you with the background When tells you what is being created Then tells you the expected results. Writing a script in a Given-When-Then format may be fairly simple. Writing a good Gherkin Script is an Art. Some are Picassos, some are Monets, some look like they were created by a toddler with a crayon. In this presentation Mr. Eakin will offer some tips on writing good Gherkin Scripts and show you how a well crafted Gherkin Script can be a beautiful work of Art.
This document discusses test-driven development (TDD) and unit testing. It defines TDD as a process that involves writing a failing test first, then implementing code to pass that test, and refactoring if needed. Key benefits of TDD and unit testing include reduced bugs, lower maintenance costs, and improved code design. The document provides guidelines for writing good unit tests and emphasizes that tests should be quick, isolated, and answer what behavior was tested and what the expected and actual results were.
This presentation gives you the evidence as to why unit testing works and a process for how to bring it your team as soon as possible. There's a reason why the growth of unit testing, and automated unit testing in particular, has exploded over the past few years. It not only improves your code, it's faster than releasing code without tests. You'll learn: What, exactly, is a unit test?; The 7 reasons why managers love unit testing; and how to change mindset and processes to start unit testing now.
Key takeaways
- Continuous “everything” is at the heart of agile and devops
- Continuous activities result in faster delivery and higher quality
- Rapid feedback and practice are essential for confidence in your delivery process
View webinar recording - http://testhuddle.com/resource/continuous-everything/
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019Codemotion
Coolblue is a proud Dutch company, with a large internal development department; one that truly takes CI/CD to heart. Empowerment through automation is at the heart of these development teams, and with more than 1000 deployments a day, we think it's working out quite well. In this session, Pat Hermens (a Development Managers) will step you through what enables us to move so quickly, which tools we use, and most importantly, the mindset that is required to enable development teams to deliver at such a rapid pace.
This document discusses how scaling teams to support big data growth at Yelp can negatively impact deployment speed due to an exponential increase in the probability of failures as the number of developers increases. It proposes service-oriented architecture and focusing on mean time to recovery rather than just preventing failures as ways to mitigate these risks and maintain rapid iteration. Continuous delivery, reliable but not exhaustive testing, and treating all processes as distributed are also recommended to support scaling teams while preserving deployment speed.
1) The document discusses how human fallibility and increased development teams can lead to an exponential decay in the probability of successful deployments over time as the number of changes increases.
2) It recommends approaches like implementing a service-oriented architecture, focusing on mean time to recovery rather than just preventing failures, and establishing "DevOps deputies" to help mitigate this problem.
3) The key message is that organizations should embrace DevOps culture, tailor their approaches to their specific teams, plan for inevitable changes over time, and view components as distributed from the beginning.
Microservices Summit - The Human Side of ServicesYelp Engineering
This document discusses the importance of the human side of services at Yelp and outlines several best practices for operating microservices. It emphasizes the importance of clear organizational objectives, service level agreements to define key metrics like performance and reliability, emphasis on cooperation between teams with varied skills, and avoiding common pitfalls like depending too heavily on libraries or assuming all developers can do operations work. The overall message is that successful microservices require both technical excellence and a focus on the human factors of collaboration, clear goals, and ownership.
With the creation of the cucumber framework came the creation of the Gherkin Scripting format (also known as the Given-When-Then format). The structure of a Gherkin script is very straight-forward: Given provides you with the background When tells you what is being created Then tells you the expected results. Writing a script in a Given-When-Then format may be fairly simple. Writing a good Gherkin Script is an Art. Some are Picassos, some are Monets, some look like they were created by a toddler with a crayon. In this presentation Mr. Eakin will offer some tips on writing good Gherkin Scripts and show you how a well crafted Gherkin Script can be a beautiful work of Art.
This document discusses test-driven development (TDD) and unit testing. It defines TDD as a process that involves writing a failing test first, then implementing code to pass that test, and refactoring if needed. Key benefits of TDD and unit testing include reduced bugs, lower maintenance costs, and improved code design. The document provides guidelines for writing good unit tests and emphasizes that tests should be quick, isolated, and answer what behavior was tested and what the expected and actual results were.
This presentation gives you the evidence as to why unit testing works and a process for how to bring it your team as soon as possible. There's a reason why the growth of unit testing, and automated unit testing in particular, has exploded over the past few years. It not only improves your code, it's faster than releasing code without tests. You'll learn: What, exactly, is a unit test?; The 7 reasons why managers love unit testing; and how to change mindset and processes to start unit testing now.
Key takeaways
- Continuous “everything” is at the heart of agile and devops
- Continuous activities result in faster delivery and higher quality
- Rapid feedback and practice are essential for confidence in your delivery process
View webinar recording - http://testhuddle.com/resource/continuous-everything/
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019Codemotion
Coolblue is a proud Dutch company, with a large internal development department; one that truly takes CI/CD to heart. Empowerment through automation is at the heart of these development teams, and with more than 1000 deployments a day, we think it's working out quite well. In this session, Pat Hermens (a Development Managers) will step you through what enables us to move so quickly, which tools we use, and most importantly, the mindset that is required to enable development teams to deliver at such a rapid pace.
We'll discover the reasons why it is a risky bet to not *aim* to manage infrastructure and its configuration with idempotence and immutability at heart.
Sharing real world experience, we'll see why configurations should not be done by humans (it's like playing Djenga), and why what may work at the beginning does not work over a long period of time or scale (pet vs cattle problem).
Docker/DevOps Meetup: Metrics-Driven Continuous Performance and ScalabiltyAndreas Grabner
This is the presentation given for the Docker Meetup in Cordoba, Argentina. Recording should soon be up on http://www.meetup.com/Docker-Cordoba-ARG/events/226995018/
Key Takeaways: Pick your Metrics! Automate It! Fail Bad Builds Faster! Deliver Faster with Better Quality!
To the Docker Audience my main point was that: Just adding Docker doesn't give you free performance and scalability of your app. I walk through many examples of failing apps. What are the metrics that highlight the problem and how to automatically detect bad builds by looking at these Metrics along your Pipeline.
BTD2015 - Your Place In DevTOps is Finding Solutions - Not Just Bugs!Andreas Grabner
This is about leveling-up and REVOLUTIONIZING Testing as part of your Agile/DevOps Transformation.
You can contribute more than testing functionality. You need to Level-Up your skill set by understanding the apps you are testing. # Images, # JS Files, # SQL Statements, Connection Pool Utilization and Garbage Collection Activity have to be added to your portfolio.
Check these metrics when you do your functional testing and report regressions to your engineers even though the functionality is still good. But you just uncovered an Architectural regression that will lead to a scalabilty and performance problem.
Finding these problems early will eliminate a lot of wasted and unplanned time later on in the lifecycle. that is your contribution to delivering software faster with better quality
JavaOne - Performance Focused DevOps to Improve Cont DeliveryAndreas Grabner
These are the slides of my JavaOne presentation. The abstract goes like this:
How do companies developing business-critical Java enterprise Web applications increase releases from 40 to 300 per year and still remain confident about a spike of 1,800 percent in traffic during key events such as Super Bowl Sunday or Cyber Monday? It takes a fundamental change in culture. Although DevOps is often seen as a mechanism for taming the chaos, adopting an agile methodology across all teams is only the first step. This session explores best practices for continuous delivery with higher quality for improving collaboration between teams by consolidating tools and for reducing overhead to fix issues. It shows how to build a performance-focused culture with tools such as Hudson, Jenkins, Chef, Puppet, Selenium, and Compuware APM/dynaTrace
StarWest 2013 Performance is not an afterthought – make it a part of your Agi...Andreas Grabner
This presentation was given at StarWest 2013 in Anaheim, CA and also broadcasted through the Virtual Conference.
It shows how important it is to focus on performance throughout continuous delivery in order to avoid the most common performance problem patterns that still cause applications to crash and engineers spending their weekends and nights in a firefighting/war room situation
Performance Quality Metrics for Mobile Web and Mobile Native - Agile Testing ...Andreas Grabner
5 Real Life Examples on why Mobile Web and Mobile Native Apps failed and Which Metrics would have shown the problem early on.
Using these metrics along your delivery chain allows you go get closer to full automated deployment pipeline but also making sure performance criteria is met
Fraud Engineering, from Merchant Risk Council Annual Meeting 2012Nick Galbreath
This document discusses fraud engineering at Etsy. It begins by introducing the author, Nick Galbreath, and his background in security. It then provides context about Etsy as an online marketplace. It outlines different types of risk like fraud, security threats, and business continuity. It emphasizes thinking about risk from both a fraud and security perspective. The document then provides examples of how different parts of the organization like technical operations, quality assurance, product, business operations, engineering, and customer service can work together on fraud prevention and leverages their existing tools and resources. It also provides a case study example of investigating mysterious data center logins. The overall message is about taking a holistic organizational approach to fraud engineering.
Tis The Season: Load Testing Tips and Checklist for Retail Seasonal ReadinessSOASTA
‘Tis the Season – Holiday 2014 eCommerce Quality Checklist
Past Webinar
Archived (originally presented June 26th, 2014)
This year, your holiday traffic will increase 15% or more, and 50% of the users will be mobile. Recent research shows 71% of your revenue comes from multi-channel users, so if you haven’t started planning, you’re already behind. Leading retailers are preparing for Holiday “14 and testing their production sites for multi-channel access to 115% capacity, or beyond! If you’re not one of them, your plans are incomplete.
Cover your risks. Join Tenzing and SOASTA experts as they discuss the must-do checklist for peak performance.
In this webinar you’ll learn:
Align your Marketing and Quality plans
Cover the multichannel user experience
Test early in the lab and fully in production
Optimize end-to-end site speed and performance
When to freeze for the winter
Don’t miss this opportunity to “shop early” and see how the leading retailers are already beating the odds with cloud testing.
London web perfug_performancefocused_devops_feb2014Andreas Grabner
The document discusses best practices for performance-focused DevOps including metrics for measuring performance throughout the development and deployment process. It provides examples of companies that deploy software frequently and with few errors and outlines the importance of testing, monitoring and addressing performance issues. The document advocates taking a data-driven approach to identifying and resolving problems in order to improve development efficiency and software quality.
Hugs instead of Bugs: Dreaming of Quality Tools for Devs and TestersAndreas Grabner
I have a Dream that Testers extend their horizon and toolsets and not only test for functional correctness but make a step towards what developers need in order to fix critical issues. I am talking about architectural, scalability and performance metrics such as # of JS Files on a page, Page Size, # of SQL Statements, # of Log Messages Written.
If Testers start to capture this information as well and share it with their bug description I am sure it will both increase the value of testers as well as reduce the total time it takes to fix problems.
Shawn Wallace - Test automation in brownfield applicationsQA or the Highway
The document discusses test automation in brownfield applications. Some key challenges mentioned include code that is difficult to test, engineering challenges, infrastructure challenges, and dealing with large volumes of test data. Meaningful code coverage through testing is also noted as a challenge. The document advocates testing key use cases, defects, and new features as a way to start with automation. It also emphasizes building quality systems that provide value.
Software development is hard! A common pattern in our field is project starting with the best of intentions and halfway through problems appear. Problems that slow us down, that will cause us to loose speed and flexibility. So, what is Test Driven Development and how it gives us back control over our projects?
Living with acceptance tests: Beyond Write-Once (XP NYC)Daniel Wellman
The document discusses strategies for maintaining acceptance tests over time beyond just writing them once. It suggests treating acceptance tests like production code by revising and refactoring them as the system evolves. Tests should describe what is being tested in a declarative style rather than specifying implementation details so their implementation can change. As a project and domain maturity, acceptance tests may move from end-to-end implementations to using the domain model directly to run faster. The test suite should also be periodically evaluated to determine if restructuring or new tests are needed.
As companies mature their software development practices, automated acceptance-level testing is becoming more commonplace. In particular, Cucumber and its Gherkin-based equivalents are enjoying widespread use. Through observing and facilitating the adoption and implementation of Cucumber test suites, I have found ways in which the technology has helped teams greatly, but I have also found ways in which it hindered them. I realized that Cucumber and its kin are appropriate tools in fewer situations than the ones in which they are currently employed. In other words, many teams that use such frameworks need to reevaluate whether they are right for the job, and perhaps replace them. I invite all involved in automated acceptance testing to attend as I try to build a compelling case for this notion.
An introduction to Reactive applications, Reactive Streams, and options for t...Steve Pember
This document provides an overview of reactive applications and Reactive Streams. It discusses the need for reactive approaches to address increasing performance demands and microservices. Reactive applications are responsive, resilient, elastic and asynchronous. Reactive Streams provide a common abstraction for data streams and asynchronous data sources using an observer pattern. The document also summarizes several Reactive Streams implementations for the JVM like RxJava and frameworks like Spring WebFlux, Play and Vert.x that support reactive programming.
Designing Self-maintaining UI Tests for Web ApplicationsTechWell
This document discusses the challenges of test automation and proposes some solutions. It notes that products are constantly changing, developers do not always communicate changes, and testers spend significant time fixing broken tests rather than writing new ones. It proposes moving testing earlier in the process, embedding testers with developers, and using automation to prevent broken builds. Moving to more automated and maintainable tests over time can reduce maintenance costs and give testers a better understanding of how software is developed. Key steps include treating test automation as software development, improving presentation layer consistency, and better communication between testers and developers.
This document describes the evolution of Expedia's Test and Learn (TNL) platform over three versions (V0, V1, V2). It discusses problems with earlier versions like long query times and increasing data size. The new V2 architecture introduced Kafka for messaging, Cassandra for the database, and Column-oriented storage for improved scalability, responsiveness, and fault tolerance. Lessons learned include ensuring each system component can handle the workload and having pre-production environments to test changes.
How Netflix tests in production to augment more traditional testing methods. This talk covers the Simian Army (Chaos Monkey & friends, code coverage in production, and canary testing.
This document discusses Behavior Driven Development (BDD) using the Ruby programming language. It provides an overview of test-driven development (TDD), then defines BDD as building upon TDD by formalizing good TDD habits like working outside-in from business goals. Gherkin is introduced as the language used for writing Cucumber features, using examples to clarify requirements. Cucumber is a tool for running automated acceptance tests written in a BDD style using Gherkin. It also discusses using Capybara to access and interact with web pages in tests.
Basic overview of software test types, methodologies.
Explaining and reasons to test and common pitfalls with various testing methodologies.
Example scenarios for the viewer to think about test strategies.
Tips to avoid having to write tests in the first place.
Content created and presented by Nico Heidtke at the "Die Programmierer" meetup organized by Binary-Gears in Darmstadt, Germany at 02.07.2019.
How to feature flag and run experiments in iOS and AndroidOptimizely
Join Tom Zurkan and Kody O’Connell from Optimizely’s Engineering and Developer Relations teams to learn about the developer experience for the iOS and Android SDKs.
In this webinar, you’ll learn:
- How feature flagging sets a strong foundation for app development
- How the iOS and Android SDKs work
- What to expect when implementing and maintaining Full Stack in your app
- The steps to create feature flags and experiments in your app
- How to get started for free with Optimizely Rollouts
Android UI Testing with Appium
This presentation covers:
- how appium works
- setting up test development environment with AndroidStudio
- running tests
- UI automation best practices
- common problems with automation
We'll discover the reasons why it is a risky bet to not *aim* to manage infrastructure and its configuration with idempotence and immutability at heart.
Sharing real world experience, we'll see why configurations should not be done by humans (it's like playing Djenga), and why what may work at the beginning does not work over a long period of time or scale (pet vs cattle problem).
Docker/DevOps Meetup: Metrics-Driven Continuous Performance and ScalabiltyAndreas Grabner
This is the presentation given for the Docker Meetup in Cordoba, Argentina. Recording should soon be up on http://www.meetup.com/Docker-Cordoba-ARG/events/226995018/
Key Takeaways: Pick your Metrics! Automate It! Fail Bad Builds Faster! Deliver Faster with Better Quality!
To the Docker Audience my main point was that: Just adding Docker doesn't give you free performance and scalability of your app. I walk through many examples of failing apps. What are the metrics that highlight the problem and how to automatically detect bad builds by looking at these Metrics along your Pipeline.
BTD2015 - Your Place In DevTOps is Finding Solutions - Not Just Bugs!Andreas Grabner
This is about leveling-up and REVOLUTIONIZING Testing as part of your Agile/DevOps Transformation.
You can contribute more than testing functionality. You need to Level-Up your skill set by understanding the apps you are testing. # Images, # JS Files, # SQL Statements, Connection Pool Utilization and Garbage Collection Activity have to be added to your portfolio.
Check these metrics when you do your functional testing and report regressions to your engineers even though the functionality is still good. But you just uncovered an Architectural regression that will lead to a scalabilty and performance problem.
Finding these problems early will eliminate a lot of wasted and unplanned time later on in the lifecycle. that is your contribution to delivering software faster with better quality
JavaOne - Performance Focused DevOps to Improve Cont DeliveryAndreas Grabner
These are the slides of my JavaOne presentation. The abstract goes like this:
How do companies developing business-critical Java enterprise Web applications increase releases from 40 to 300 per year and still remain confident about a spike of 1,800 percent in traffic during key events such as Super Bowl Sunday or Cyber Monday? It takes a fundamental change in culture. Although DevOps is often seen as a mechanism for taming the chaos, adopting an agile methodology across all teams is only the first step. This session explores best practices for continuous delivery with higher quality for improving collaboration between teams by consolidating tools and for reducing overhead to fix issues. It shows how to build a performance-focused culture with tools such as Hudson, Jenkins, Chef, Puppet, Selenium, and Compuware APM/dynaTrace
StarWest 2013 Performance is not an afterthought – make it a part of your Agi...Andreas Grabner
This presentation was given at StarWest 2013 in Anaheim, CA and also broadcasted through the Virtual Conference.
It shows how important it is to focus on performance throughout continuous delivery in order to avoid the most common performance problem patterns that still cause applications to crash and engineers spending their weekends and nights in a firefighting/war room situation
Performance Quality Metrics for Mobile Web and Mobile Native - Agile Testing ...Andreas Grabner
5 Real Life Examples on why Mobile Web and Mobile Native Apps failed and Which Metrics would have shown the problem early on.
Using these metrics along your delivery chain allows you go get closer to full automated deployment pipeline but also making sure performance criteria is met
Fraud Engineering, from Merchant Risk Council Annual Meeting 2012Nick Galbreath
This document discusses fraud engineering at Etsy. It begins by introducing the author, Nick Galbreath, and his background in security. It then provides context about Etsy as an online marketplace. It outlines different types of risk like fraud, security threats, and business continuity. It emphasizes thinking about risk from both a fraud and security perspective. The document then provides examples of how different parts of the organization like technical operations, quality assurance, product, business operations, engineering, and customer service can work together on fraud prevention and leverages their existing tools and resources. It also provides a case study example of investigating mysterious data center logins. The overall message is about taking a holistic organizational approach to fraud engineering.
Tis The Season: Load Testing Tips and Checklist for Retail Seasonal ReadinessSOASTA
‘Tis the Season – Holiday 2014 eCommerce Quality Checklist
Past Webinar
Archived (originally presented June 26th, 2014)
This year, your holiday traffic will increase 15% or more, and 50% of the users will be mobile. Recent research shows 71% of your revenue comes from multi-channel users, so if you haven’t started planning, you’re already behind. Leading retailers are preparing for Holiday “14 and testing their production sites for multi-channel access to 115% capacity, or beyond! If you’re not one of them, your plans are incomplete.
Cover your risks. Join Tenzing and SOASTA experts as they discuss the must-do checklist for peak performance.
In this webinar you’ll learn:
Align your Marketing and Quality plans
Cover the multichannel user experience
Test early in the lab and fully in production
Optimize end-to-end site speed and performance
When to freeze for the winter
Don’t miss this opportunity to “shop early” and see how the leading retailers are already beating the odds with cloud testing.
London web perfug_performancefocused_devops_feb2014Andreas Grabner
The document discusses best practices for performance-focused DevOps including metrics for measuring performance throughout the development and deployment process. It provides examples of companies that deploy software frequently and with few errors and outlines the importance of testing, monitoring and addressing performance issues. The document advocates taking a data-driven approach to identifying and resolving problems in order to improve development efficiency and software quality.
Hugs instead of Bugs: Dreaming of Quality Tools for Devs and TestersAndreas Grabner
I have a Dream that Testers extend their horizon and toolsets and not only test for functional correctness but make a step towards what developers need in order to fix critical issues. I am talking about architectural, scalability and performance metrics such as # of JS Files on a page, Page Size, # of SQL Statements, # of Log Messages Written.
If Testers start to capture this information as well and share it with their bug description I am sure it will both increase the value of testers as well as reduce the total time it takes to fix problems.
Shawn Wallace - Test automation in brownfield applicationsQA or the Highway
The document discusses test automation in brownfield applications. Some key challenges mentioned include code that is difficult to test, engineering challenges, infrastructure challenges, and dealing with large volumes of test data. Meaningful code coverage through testing is also noted as a challenge. The document advocates testing key use cases, defects, and new features as a way to start with automation. It also emphasizes building quality systems that provide value.
Software development is hard! A common pattern in our field is project starting with the best of intentions and halfway through problems appear. Problems that slow us down, that will cause us to loose speed and flexibility. So, what is Test Driven Development and how it gives us back control over our projects?
Living with acceptance tests: Beyond Write-Once (XP NYC)Daniel Wellman
The document discusses strategies for maintaining acceptance tests over time beyond just writing them once. It suggests treating acceptance tests like production code by revising and refactoring them as the system evolves. Tests should describe what is being tested in a declarative style rather than specifying implementation details so their implementation can change. As a project and domain maturity, acceptance tests may move from end-to-end implementations to using the domain model directly to run faster. The test suite should also be periodically evaluated to determine if restructuring or new tests are needed.
As companies mature their software development practices, automated acceptance-level testing is becoming more commonplace. In particular, Cucumber and its Gherkin-based equivalents are enjoying widespread use. Through observing and facilitating the adoption and implementation of Cucumber test suites, I have found ways in which the technology has helped teams greatly, but I have also found ways in which it hindered them. I realized that Cucumber and its kin are appropriate tools in fewer situations than the ones in which they are currently employed. In other words, many teams that use such frameworks need to reevaluate whether they are right for the job, and perhaps replace them. I invite all involved in automated acceptance testing to attend as I try to build a compelling case for this notion.
An introduction to Reactive applications, Reactive Streams, and options for t...Steve Pember
This document provides an overview of reactive applications and Reactive Streams. It discusses the need for reactive approaches to address increasing performance demands and microservices. Reactive applications are responsive, resilient, elastic and asynchronous. Reactive Streams provide a common abstraction for data streams and asynchronous data sources using an observer pattern. The document also summarizes several Reactive Streams implementations for the JVM like RxJava and frameworks like Spring WebFlux, Play and Vert.x that support reactive programming.
Designing Self-maintaining UI Tests for Web ApplicationsTechWell
This document discusses the challenges of test automation and proposes some solutions. It notes that products are constantly changing, developers do not always communicate changes, and testers spend significant time fixing broken tests rather than writing new ones. It proposes moving testing earlier in the process, embedding testers with developers, and using automation to prevent broken builds. Moving to more automated and maintainable tests over time can reduce maintenance costs and give testers a better understanding of how software is developed. Key steps include treating test automation as software development, improving presentation layer consistency, and better communication between testers and developers.
This document describes the evolution of Expedia's Test and Learn (TNL) platform over three versions (V0, V1, V2). It discusses problems with earlier versions like long query times and increasing data size. The new V2 architecture introduced Kafka for messaging, Cassandra for the database, and Column-oriented storage for improved scalability, responsiveness, and fault tolerance. Lessons learned include ensuring each system component can handle the workload and having pre-production environments to test changes.
How Netflix tests in production to augment more traditional testing methods. This talk covers the Simian Army (Chaos Monkey & friends, code coverage in production, and canary testing.
This document discusses Behavior Driven Development (BDD) using the Ruby programming language. It provides an overview of test-driven development (TDD), then defines BDD as building upon TDD by formalizing good TDD habits like working outside-in from business goals. Gherkin is introduced as the language used for writing Cucumber features, using examples to clarify requirements. Cucumber is a tool for running automated acceptance tests written in a BDD style using Gherkin. It also discusses using Capybara to access and interact with web pages in tests.
Basic overview of software test types, methodologies.
Explaining and reasons to test and common pitfalls with various testing methodologies.
Example scenarios for the viewer to think about test strategies.
Tips to avoid having to write tests in the first place.
Content created and presented by Nico Heidtke at the "Die Programmierer" meetup organized by Binary-Gears in Darmstadt, Germany at 02.07.2019.
How to feature flag and run experiments in iOS and AndroidOptimizely
Join Tom Zurkan and Kody O’Connell from Optimizely’s Engineering and Developer Relations teams to learn about the developer experience for the iOS and Android SDKs.
In this webinar, you’ll learn:
- How feature flagging sets a strong foundation for app development
- How the iOS and Android SDKs work
- What to expect when implementing and maintaining Full Stack in your app
- The steps to create feature flags and experiments in your app
- How to get started for free with Optimizely Rollouts
Android UI Testing with Appium
This presentation covers:
- how appium works
- setting up test development environment with AndroidStudio
- running tests
- UI automation best practices
- common problems with automation
Aviary's customizable SDK powers cross-platform photo editing for over 6,500 partners and over 70 million monthly active users across the globe. Some of our notable partners include Walgreens, Squarespace, Yahoo Mail, Flickr, Photobucket, and Wix. At Aviary, we use node.js for several mission-critical projects in production and have seen extremely positive results. In this talk, we will discuss how we approach some common situations that developers deploying node.js projects will likely need to tackle. We will walk you through our routing mechanism, our automated deployment system, some of our custom middleware, and our testing philosophy.
Use Jenkins For Continuous Load Testing And Mobile Test AutomationClever Moe
The document discusses using Jenkins for continuous load testing and mobile test automation. It describes how Jenkins can be used to automate testing across sprints in an agile methodology. Specifically, it outlines how to leverage Jenkins to run functional tests continuously and repurpose those tests for performance and load testing. This helps ensure applications are thoroughly tested before each release.
I have 3.5+ years exp in QA. I have knowledge in Game Testing, Platform Testing, Device Testing, Web Testing, Desktop Testing, I am learning Automation Testing with Java language. I have little bit knowledge about SQL for Database Testing. I have done more project with Client(Aristocrat Technologies Pvt. Ltd.). I did UAT with client(HCL Technologies) for SHIKSHA project. I have done Functional Testing. I have done one project with Core Java. I have done Internship with NGO(RAKSHA) and RAW. I know about SDLC and STLC.
Building a scalable app factory with Appcelerator PlatformAngus Fox
Sharing the challenged in building a Mobile Backend as a Service (MBaaS) platform for Appcelerator Alloy apps using Joomla and a whole host of development tools for a London based startup where I am CTO
This document discusses the importance of unit testing JavaScript code. It provides reasons for testing JavaScript, such as avoiding bugs when refactoring code or introducing errors. The document discusses how to write testable JavaScript by separating business logic from views. It also recommends choosing JavaScript unit testing tools like Jasmine and Siesta, and integrating tests into continuous integration processes to run automatically on commits. Functional testing tools like Selenium are also mentioned for testing user interactions across browsers.
http://www.techforum.prathidhwani.org/appium/index.html
Appium Basics
Appium Desktop
Android Locator Types and Inspector Tools
Appium Capabilities
Mobile Interactions - Swipe and Scroll
Page Object Model and Dependency Injection
Real Device v/s Emulators / Simulators
iOS Automation
Cloud Automation
Appium Tips and Tricks
Please follow the steps in the below link to configure your system for the workshop
https://medium.com/@syamsasi/setting-up-appium-on-windows-and-ubuntu-ea9a73ab989
Closer To the Metal - Why and How We Use XCTest and Espresso by Mario Negro P...Sauce Labs
In this SauceCon 2019 presentation, Mario describes the practices that ABN AMRO adopted in mobile teams when it comes to testing native applications on real devices. Since using Espresso and XCUITest is still relatively uncommon for large apps and there are various unique challenges due to being in an EU-regulated industry with various security restrictions, Mario will share the ABN AMRO team’s experiences, including:
- A brief architectural overview of the Mobile Banking app: why it is all native (Objective-C/Swift and Java/Kotlin), how it communicates with other apps and websites
- Why ABN AMRO choose to adopt Espresso and XCUITest: the advantages and the limitations of this choice
- How ABN AMRO runs their test pipelines to spread them across time and devices and prevent teams from being blocked
Nativescript allows building native mobile apps using JavaScript and CSS. It works by injecting native APIs into JavaScript so they can be accessed directly. This allows using native UI controls and hardware capabilities while coding in a familiar language. Nativescript apps are compiled to platform-specific code, so they are true native apps that can be submitted to app stores. It supports Angular for building apps with common code shared across platforms.
The presentation on Appium was done during #ATAGTR2017, one of the largest global testing conference. All copyright belongs to the author.
Author and presenter : Sunket Ingale
Building Creative Product Extensions with Experience Managerconnectwebex
The document discusses building extensions for Creative Cloud applications using the Common Extensions Platform (CEP). It covers the basics of CEP extension development including anatomy, manifest files, debugging, and using Node.js modules. It also provides examples of connecting CEP extensions to Adobe Experience Manager (AEM), including logging in via HTTP, querying AEM via the Query Builder API, and referencing AEM resources through tokenized URLs. The document demonstrates two sample CEP extensions - one for searching AEM and another for interacting between the extension and host application.
Appium, Test-Driven Development, and Continuous IntegrationTechWell
The document discusses Appium, test-driven development, and continuous integration for mobile testing. It provides an overview of Appium, describing its philosophy of allowing tests to be written in any language without modifying the app. It then covers why organizations choose Appium, the tools used for mobile testing including Appium, Selenium, and frameworks like Page Object Model. It also discusses test-driven development and how continuous integration can automate the build, test and deployment process.
Replace Angular with React. Make the move from the MEAN stack to the powerful MERN Stack!
Come and learn about the MERN stack. No, that isn't a typo. The MERN stack is Mongo, Express, and Node, with React instead of Angular. While both React and Angular are remarkable JavaScript technologies, React comes with less baggage. There is no TypeScript, no annotations, no bossy framework telling you how to do everything.
Titanium Mobile allows developers to build native mobile apps using JavaScript. It works by compiling JavaScript code into the native platform's code (Java for Android, Objective-C for iOS). This allows apps built with Titanium to have access to native device APIs and feel and function like a true native app while using a common JavaScript codebase. Titanium Studio is the IDE used for Titanium development and provides features like code completion, debugging, and building for release. Projects have a standard structure with resources, modules, and code files organized into platform-specific folders. Internationalization is supported by creating language-specific string files.
Do You Enjoy Espresso in Android App Testing?Bitbar
Watch a live presentation at http://offer.bitbar.com/do-you-enjoy-espresso-in-android-app-testing
Majority of us love coffee but let's put that aside and focus on Espresso - by Google. This exciting new test automation framework just got open sourced and is available for app developers and testers to hammer their app UIs. Espresso has a small, predictable and easy to learn API - built on top of Android Instrumentation Framework - and you can very quickly write concise and reliable Android UI tests with it.
Stay tuned and join our upcoming webinars at http://bitbar.com/testing/webinars/
Ionic is a great tool for building hybrid mobile apps and AngularJS is a great JavaScript framework that plays very nicely with Ionic. In this talk we'll go over the basics of getting started with AngularJS+Ionic. We'll look at some real code from each of the 2 libraries and see what all is involved in building a hybrid mobile application. We will finish our journey with a real-life Ionic app presentation powered by RESTFul services.
The document describes the design process for improving the onboarding experience for a mobile testing platform called Appurify. Key steps included:
1. Analyzing the current user journey through usability testing to identify obstacles during onboarding.
2. Inspired by other products, simplifying the onboarding process through a linear, guided workflow and easy file uploading.
3. Further iterations included streamlining navigation, categorizing files, and reducing the setup process to three main steps.
4. The final design prototypes implemented tested UI patterns and addressed usability issues found through user feedback.
Ionic is a great tool for building hybrid mobile apps and AngularJS is a great JavaScript framework that plays very nicely with Ionic. In this talk we'll go over the basics of getting started with AngularJS+Ionic. We'll look at some real code from each of the 2 libraries and see what all is involved in building a hybrid mobile application. We will finish our journey with a real-life Ionic app presentation powered by RESTFul services.
Target Audience: People that want to see where to start with AngularJS and how it fits into Ionic. This talk assumes no prior knowledge with either library. If you've built a PhoneGap mobile app but felt lost when adding MVC-style structure or Bootstrap-esque UI components, this is the talk for you.
Assumed Knowledge: Attendees should be comfortable with "modern JavaScript". A basic understanding of classes and objects and variable scopes will be helpful. Some basic prior exposure to PhoneGap/Cordova and a UI-framework such as Bootstrap will also be helpful.
Continuous Integration, Deploy, Test From Beginning To End 2014Clever Moe
Frank Cohen, CTO/Founder at Appvance, teaches developers and testers how to become more closely aligned with easily deployable and configurable tools such as Jenkins CI and performance testing platforms. Learn how to: * Merge Agile SDLC and Performance Testing * Speed-up test operations by configuring Jenkins for automatic build, deploy, and tests * Instantly identify functional and performance issues using Jenkins as a performance dashboard * Use effective choices in Jenkins deployment – in the cloud, hosted, or in your datacenter
Similar to Yelp Tech Talks: Mobile Testing 1, 2, 3 (20)
This document discusses ways to improve collaboration between operations and development teams. It provides examples of past issues, such as developers filling up disk space and running long queries that impacted operations staff. Potential solutions discussed include setting expectations, increasing automation, ensuring the right people are involved, and using metrics to track progress. The overall message is that both teams want to do the right thing, so processes and tools should be designed to make the right choices as easy as possible.
This document summarizes Lee Sheng's presentation on code golfing and writing concise code. Some key points discussed include minimizing the number of characters or "strokes" in code, using features like defaultdicts, context managers, and list comprehensions to reduce strokes, and focusing on functional programming techniques like map, filter, and reduce to write shorter code that is still readable. The presentation emphasizes that writing concise code reduces cognitive load while still expressing the intent clearly.
Fluxx is a card game where the rules and goals can change throughout the game based on cards drawn. The document discusses logging best practices and architectures for aggregating logs from thousands of hosts, including using Apache Kafka and centralized logging services like Facebook Scribe. It emphasizes building logging systems incrementally and being open to replacing older solutions as needs change.
This document provides guidance on how to conduct effective design critiques in 3-4 sentences. It establishes that critiques should have clear roles for the presenter, audience, and facilitator. The feedback session should focus all participants on understanding the problem at hand before providing feedback. Constructive feedback should ask questions, build upon the design, and remain objective rather than being personal or critical. Laptops and phones should remain closed during the critique.
Michael Stoppelman, SVP of Engineering at Yelp, discussed building a world-class security team over time through hiring and focusing on security basics and getting professional. He described Yelp's early experiences without strong security protections, hiring their first security head in 2011, and implementing two-factor authentication and default cross-site scripting protection. Stoppelman outlined their efforts to strengthen corporate security through malware detection, encryption, and auditing and app security such improving access controls and credential management.
This document discusses Yelp's approach to ensuring data consistency across replicated databases. Key aspects include:
- Using a "dirty session cookie" to route user requests to data centers with recent updates.
- A "repl_delay_reporter" tool that measures replication lag between data centers to determine when updates have propagated.
- "Heartbeat" checks that insert test data on masters and measure replication time to slaves to estimate replication delay.
A Beginners Guide To Launching Yelp In Hong KongYelp Engineering
A Beginners Guide To Launching Yelp In Hong Kong, a talk given during the Yelp Girl Geek Dinner.
For full effects and awesomeness, check it out here! https://prezi.com/0ug9o01qn0hs/a-beginners-guide-to-launch-yelp-in-hong-kong-v2/
This document discusses MySQL and how it is used at Yelp. It provides an overview of MySQL's history and features. It then describes how Yelp uses over 100 MySQL servers with InnoDB and replication. Yelp utilizes tools like Puppet, Nagios, Ganglia, and Percona Toolkit to manage and monitor their MySQL infrastructure. The document also provides tips for using MySQL for new and existing projects, including suggestions for troubleshooting, backups, and community resources.
Tasneem Minadakis worked as a software engineer, technical lead, product manager, and engineering manager at Microsoft for 9 years before becoming an engineering manager at Yelp for 2 months. She recommends understanding the company's big picture and vision, being curious by asking questions until fully understanding, focusing on strengths and filling time with enjoyed activities, being uncomfortable, fighting impostor syndrome, finding mentors, and asking questions about careers.
Scaling Traffic from 0 to 139 Million Unique VisitorsYelp Engineering
This document summarizes the traffic history and infrastructure changes at Yelp from 2005 to the present. It outlines the key milestones and technology changes over time as Yelp grew from handling around 200k searches per day with 1 database in 2005-2007 to serving traffic across 29 countries in 2014 with a distributed, scalable infrastructure utilizing technologies like Elasticsearch, Kafka, and Pyleus for real-time processing.
Abstract:
In this talk we will introduce MOE, the Metric Optimization Engine. MOE is an efficient way to optimize a system's parameters, when evaluating parameters is time-consuming or expensive. It can be used to help tackle a myriad of problems including optimizing a system's click-through or conversion rate via A/B testing, tuning parameters of a machine learning prediction method or expensive batch job, designing an engineering system or finding the optimal parameters of a real-world experiment.
MOE is ideal for problems in which the optimization problem's objective function is a black box, not necessarily convex or concave, derivatives are unavailable, and we seek a global optimum, rather than just a local one. This ability to handle black-box objective functions allows us to use MOE to optimize nearly any system, without requiring any internal knowledge or access. To use MOE, we simply need to specify some objective function, some set of parameters, and any historical data we may have from previous evaluations of the objective function. MOE then finds the set of parameters that maximize (or minimize) the objective function, while evaluating the objective function as few times as possible. This is done internally using Bayesian Global Optimization on a Gaussian Process model of the underlying system and finding the points of highest Expected Improvement to sample next. MOE provides easy to use Python, C++, CUDA and REST interfaces to accomplish these goals and is fully open source. We will present the motivation and background, discuss the implementation and give real-world examples.
Scott Clark Bio:
After finishing my PhD in Applied Mathematics at Cornell University in 2012 I have been working on the Ad Targeting team at Yelp Inc. I've been employing a variety of machine learning and optimization techniques from multi-armed bandits to Bayesian Global Optimization and beyond to their vast dataset and problems. I have also been trying to lead the charge on academic research and outreach within Yelp by leading projects like the Yelp Dataset Challenge and open sourcing MOE.
"Using ElasticSearch to Scale Near Real-Time Search" by John Billings (Presen...Yelp Engineering
The document discusses using ElasticSearch to enable fast and scalable search of reviews. It describes how ElasticSearch allows for tokenization, stemming, stop words removal and faceting to improve search performance compared to a basic SQL search. An example query and response show how ElasticSearch returns search results and highlights matching text. The document also briefly outlines how data could be indexed in ElasticSearch through a queueing system and how shards and replicas can provide replication and scalability. It closes by noting some potential performance issues to be aware of with ElasticSearch.
"Optimal Learning for Fun and Profit" by Scott Clark (Presented at The Yelp E...Yelp Engineering
Scott Clark gave a presentation on optimal learning techniques. He discussed multi-armed bandits, which address the challenge of collecting information efficiently from multiple options with unknown outcomes. He provided an example of exploring various slot machines to maximize rewards. Clark also discussed Bayesian global optimization and Yelp's Metrics Optimization Engine (MOE), which uses Gaussian processes to suggest optimal parameters for A/B tests based on past experiment results, in order to efficiently optimize metrics. MOE is now being used in Yelp's live experiments to continuously improve performance.
Dr. Sean Tan, Head of Data Science, Changi Airport Group
Discover how Changi Airport Group (CAG) leverages graph technologies and generative AI to revolutionize their search capabilities. This session delves into the unique search needs of CAG’s diverse passengers and customers, showcasing how graph data structures enhance the accuracy and relevance of AI-generated search results, mitigating the risk of “hallucinations” and improving the overall customer journey.
For the full video of this presentation, please visit: https://www.edge-ai-vision.com/2024/06/building-and-scaling-ai-applications-with-the-nx-ai-manager-a-presentation-from-network-optix/
Robin van Emden, Senior Director of Data Science at Network Optix, presents the “Building and Scaling AI Applications with the Nx AI Manager,” tutorial at the May 2024 Embedded Vision Summit.
In this presentation, van Emden covers the basics of scaling edge AI solutions using the Nx tool kit. He emphasizes the process of developing AI models and deploying them globally. He also showcases the conversion of AI models and the creation of effective edge AI pipelines, with a focus on pre-processing, model conversion, selecting the appropriate inference engine for the target hardware and post-processing.
van Emden shows how Nx can simplify the developer’s life and facilitate a rapid transition from concept to production-ready applications.He provides valuable insights into developing scalable and efficient edge AI solutions, with a strong focus on practical implementation.
Removing Uninteresting Bytes in Software FuzzingAftab Hussain
Imagine a world where software fuzzing, the process of mutating bytes in test seeds to uncover hidden and erroneous program behaviors, becomes faster and more effective. A lot depends on the initial seeds, which can significantly dictate the trajectory of a fuzzing campaign, particularly in terms of how long it takes to uncover interesting behaviour in your code. We introduce DIAR, a technique designed to speedup fuzzing campaigns by pinpointing and eliminating those uninteresting bytes in the seeds. Picture this: instead of wasting valuable resources on meaningless mutations in large, bloated seeds, DIAR removes the unnecessary bytes, streamlining the entire process.
In this work, we equipped AFL, a popular fuzzer, with DIAR and examined two critical Linux libraries -- Libxml's xmllint, a tool for parsing xml documents, and Binutil's readelf, an essential debugging and security analysis command-line tool used to display detailed information about ELF (Executable and Linkable Format). Our preliminary results show that AFL+DIAR does not only discover new paths more quickly but also achieves higher coverage overall. This work thus showcases how starting with lean and optimized seeds can lead to faster, more comprehensive fuzzing campaigns -- and DIAR helps you find such seeds.
- These are slides of the talk given at IEEE International Conference on Software Testing Verification and Validation Workshop, ICSTW 2022.
UiPath Test Automation using UiPath Test Suite series, part 5DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 5. In this session, we will cover CI/CD with devops.
Topics covered:
CI/CD with in UiPath
End-to-end overview of CI/CD pipeline with Azure devops
Speaker:
Lyndsey Byblow, Test Suite Sales Engineer @ UiPath, Inc.
HCL Notes and Domino License Cost Reduction in the World of DLAUpanagenda
Webinar Recording: https://www.panagenda.com/webinars/hcl-notes-and-domino-license-cost-reduction-in-the-world-of-dlau/
The introduction of DLAU and the CCB & CCX licensing model caused quite a stir in the HCL community. As a Notes and Domino customer, you may have faced challenges with unexpected user counts and license costs. You probably have questions on how this new licensing approach works and how to benefit from it. Most importantly, you likely have budget constraints and want to save money where possible. Don’t worry, we can help with all of this!
We’ll show you how to fix common misconfigurations that cause higher-than-expected user counts, and how to identify accounts which you can deactivate to save money. There are also frequent patterns that can cause unnecessary cost, like using a person document instead of a mail-in for shared mailboxes. We’ll provide examples and solutions for those as well. And naturally we’ll explain the new licensing model.
Join HCL Ambassador Marc Thomas in this webinar with a special guest appearance from Franz Walder. It will give you the tools and know-how to stay on top of what is going on with Domino licensing. You will be able lower your cost through an optimized configuration and keep it low going forward.
These topics will be covered
- Reducing license cost by finding and fixing misconfigurations and superfluous accounts
- How do CCB and CCX licenses really work?
- Understanding the DLAU tool and how to best utilize it
- Tips for common problem areas, like team mailboxes, functional/test users, etc
- Practical examples and best practices to implement right away
Threats to mobile devices are more prevalent and increasing in scope and complexity. Users of mobile devices desire to take full advantage of the features
available on those devices, but many of the features provide convenience and capability but sacrifice security. This best practices guide outlines steps the users can take to better protect personal devices and information.
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024Neo4j
Neha Bajwa, Vice President of Product Marketing, Neo4j
Join us as we explore breakthrough innovations enabled by interconnected data and AI. Discover firsthand how organizations use relationships in data to uncover contextual insights and solve our most pressing challenges – from optimizing supply chains, detecting fraud, and improving customer experiences to accelerating drug discoveries.
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc
How does your privacy program stack up against your peers? What challenges are privacy teams tackling and prioritizing in 2024?
In the fifth annual Global Privacy Benchmarks Survey, we asked over 1,800 global privacy professionals and business executives to share their perspectives on the current state of privacy inside and outside of their organizations. This year’s report focused on emerging areas of importance for privacy and compliance professionals, including considerations and implications of Artificial Intelligence (AI) technologies, building brand trust, and different approaches for achieving higher privacy competence scores.
See how organizational priorities and strategic approaches to data security and privacy are evolving around the globe.
This webinar will review:
- The top 10 privacy insights from the fifth annual Global Privacy Benchmarks Survey
- The top challenges for privacy leaders, practitioners, and organizations in 2024
- Key themes to consider in developing and maintaining your privacy program
Unlocking Productivity: Leveraging the Potential of Copilot in Microsoft 365, a presentation by Christoforos Vlachos, Senior Solutions Manager – Modern Workplace, Uni Systems
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...Neo4j
Leonard Jayamohan, Partner & Generative AI Lead, Deloitte
This keynote will reveal how Deloitte leverages Neo4j’s graph power for groundbreaking digital twin solutions, achieving a staggering 100x performance boost. Discover the essential role knowledge graphs play in successful generative AI implementations. Plus, get an exclusive look at an innovative Neo4j + Generative AI solution Deloitte is developing in-house.
In his public lecture, Christian Timmerer provides insights into the fascinating history of video streaming, starting from its humble beginnings before YouTube to the groundbreaking technologies that now dominate platforms like Netflix and ORF ON. Timmerer also presents provocative contributions of his own that have significantly influenced the industry. He concludes by looking at future challenges and invites the audience to join in a discussion.
Essentials of Automations: The Art of Triggers and Actions in FMESafe Software
In this second installment of our Essentials of Automations webinar series, we’ll explore the landscape of triggers and actions, guiding you through the nuances of authoring and adapting workspaces for seamless automations. Gain an understanding of the full spectrum of triggers and actions available in FME, empowering you to enhance your workspaces for efficient automation.
We’ll kick things off by showcasing the most commonly used event-based triggers, introducing you to various automation workflows like manual triggers, schedules, directory watchers, and more. Plus, see how these elements play out in real scenarios.
Whether you’re tweaking your current setup or building from the ground up, this session will arm you with the tools and insights needed to transform your FME usage into a powerhouse of productivity. Join us to discover effective strategies that simplify complex processes, enhancing your productivity and transforming your data management practices with FME. Let’s turn complexity into clarity and make your workspaces work wonders!
Maruthi Prithivirajan, Head of ASEAN & IN Solution Architecture, Neo4j
Get an inside look at the latest Neo4j innovations that enable relationship-driven intelligence at scale. Learn more about the newest cloud integrations and product enhancements that make Neo4j an essential choice for developers building apps with interconnected data and generative AI.
UiPath Test Automation using UiPath Test Suite series, part 6DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 6. In this session, we will cover Test Automation with generative AI and Open AI.
UiPath Test Automation with generative AI and Open AI webinar offers an in-depth exploration of leveraging cutting-edge technologies for test automation within the UiPath platform. Attendees will delve into the integration of generative AI, a test automation solution, with Open AI advanced natural language processing capabilities.
Throughout the session, participants will discover how this synergy empowers testers to automate repetitive tasks, enhance testing accuracy, and expedite the software testing life cycle. Topics covered include the seamless integration process, practical use cases, and the benefits of harnessing AI-driven automation for UiPath testing initiatives. By attending this webinar, testers, and automation professionals can gain valuable insights into harnessing the power of AI to optimize their test automation workflows within the UiPath ecosystem, ultimately driving efficiency and quality in software development processes.
What will you get from this session?
1. Insights into integrating generative AI.
2. Understanding how this integration enhances test automation within the UiPath platform
3. Practical demonstrations
4. Exploration of real-world use cases illustrating the benefits of AI-driven test automation for UiPath
Topics covered:
What is generative AI
Test Automation with generative AI and Open AI.
UiPath integration with generative AI
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...SOFTTECHHUB
The choice of an operating system plays a pivotal role in shaping our computing experience. For decades, Microsoft's Windows has dominated the market, offering a familiar and widely adopted platform for personal and professional use. However, as technological advancements continue to push the boundaries of innovation, alternative operating systems have emerged, challenging the status quo and offering users a fresh perspective on computing.
One such alternative that has garnered significant attention and acclaim is Nitrux Linux 3.5.0, a sleek, powerful, and user-friendly Linux distribution that promises to redefine the way we interact with our devices. With its focus on performance, security, and customization, Nitrux Linux presents a compelling case for those seeking to break free from the constraints of proprietary software and embrace the freedom and flexibility of open-source computing.
11. Initial Scoping
Product team defined features
Engineering team estimated available time
Worked together to define MVP as cost of time
versus feature
12. Initial Scoping
UI & Logic could be parallelized
- 1 engineer for each
Milestones for MVP, MVP+1, MVP+2, …
Flexibility in our schedule to add / remove
features and stay agile
15. WatchKit - A Changing Landscape
Brand new platform with docs & APIs changing
drastically between betas
No defined best practices
Focused on making best-effort technical
decisions with the ability to refine later
16. Overview of a WatchKit app
Parent App
API Requests
Watch App
Storyboard
WatchKit Extension
Location
Logic
Interface
Control
Images
iPhone Apple Watch
32. Phone ↔ Watch Communications
All calls in one iteration of the run loop
coalesced together
Communication between watch and phone is
rate-limited serial queue
Overhead is high – batch your calls!
33. Images
Key part of our search UI
Naive approach: send each image to the watch
as it’s loaded
Result: traffic jam of communications,
unresponsive app
34. Images
Solution: Wait x seconds, send all images
loaded in that timeframe at once
Problem: that can be a lot of data
Solution Part 2: crush the heck out of ‘em
UIImageJPEGRepresentation(image, 0.0) // max compression
40. Who We Are
Mason Glidden
● iOS Engineer
● iOS Testing
o KIF & Jenkins
● mglidden@yelp.com
Tim Mellor
● Android Engineer
● Android Testing
o Espresso & Jenkins
41. How we develop new mobile APIs
iOS & Android
- Tests & Testing Strategy
Today
43. Mobile APIs @ Yelp
● API shared by iOS & Android
● New APIs start with documentation and examples
● Client and API can be developed simultaneously
● API team manages backwards compatibility tests
44. /*
h2. Photo (full)
|_. Name |_. Type |_. Description |
| id | string | Identifier |
| time_created | time | Timestamp for when photo was
uploaded |
| url_prefix | string | Prefix for image url |
| user_passport |
"Passport":{{site.url}}/v1/objects/passport/index.html |
Passport for user who uploaded photo (not provided for
photos added by biz owners to their own biz from their biz
owner account) (Optional) |
| caption | string | Caption |
| feedback_positive_count | integer | Number of likes for
the photo |
|
*/
{
"id": "PHOTO_ID123",
"time_created": 1370985832,
"user_passport": {% include_jsondoc
"v1/objects/passport/default.json" Passport %},
"url_prefix": "http://s3-
media4.ak.yelpcdn.com/bphoto/_Xwa-lWTpivnlB1tgX-sJw/",
"caption": "Korean tacos ($5.75)",
"feedback_positive_count": 19,
}
Documentation
45. /*
h2. Photo (full)
|_. Name |_. Type |_. Description |
| id | string | Identifier |
| time_created | time | Timestamp for when photo was
uploaded |
| url_prefix | string | Prefix for image url |
| user_passport |
"Passport":{{site.url}}/v1/objects/passport/index.html |
Passport for user who uploaded photo (not provided for
photos added by biz owners to their own biz from their biz
owner account) (Optional) |
| caption | string | Caption |
| feedback_positive_count | integer | Number of likes for
the photo |
|
*/
{
"id": "PHOTO_ID123",
"time_created": 1370985832,
"user_passport": {% include_jsondoc
"v1/objects/passport/default.json" Passport %},
"url_prefix": "http://s3-
media4.ak.yelpcdn.com/bphoto/_Xwa-lWTpivnlB1tgX-sJw/",
"caption": "Korean tacos ($5.75)",
"feedback_positive_count": 19,
}
Documentation
Textile
46. /*
h2. Photo (full)
|_. Name |_. Type |_. Description |
| id | string | Identifier |
| time_created | time | Timestamp for when photo was
uploaded |
| url_prefix | string | Prefix for image url |
| user_passport |
"Passport":{{site.url}}/v1/objects/passport/index.html |
Passport for user who uploaded photo (not provided for
photos added by biz owners to their own biz from their biz
owner account) (Optional) |
| caption | string | Caption |
| feedback_positive_count | integer | Number of likes for
the photo |
|
*/
{
"id": "PHOTO_ID123",
"time_created": 1370985832,
"user_passport": {% include_jsondoc
"v1/objects/passport/default.json" Passport %},
"url_prefix": "http://s3-
media4.ak.yelpcdn.com/bphoto/_Xwa-lWTpivnlB1tgX-sJw/",
"caption": "Korean tacos ($5.75)",
"feedback_positive_count": 19,
}
Documentation
JSONDoc
Textile
47. Documentation
/*
h2. Photo (full)
|_. Name |_. Type |_. Description |
| id | string | Identifier |
| time_created | time | Timestamp for when photo was
uploaded |
| url_prefix | string | Prefix for image url |
| user_passport |
"Passport":{{site.url}}/v1/objects/passport/index.html |
Passport for user who uploaded photo (not provided for
photos added by biz owners to their own biz from their biz
owner account) (Optional) |
| caption | string | Caption |
| feedback_positive_count | integer | Number of likes for
the photo |
|
*/
{
"id": "PHOTO_ID123",
"time_created": 1370985832,
"user_passport": {% include_jsondoc
"v1/objects/passport/default.json" Passport %},
"url_prefix": "http://s3-
media4.ak.yelpcdn.com/bphoto/_Xwa-lWTpivnlB1tgX-sJw/",
"caption": "Korean tacos ($5.75)",
"feedback_positive_count": 19,
}
48. Documentation -> JSON
● Included as submodule in client repos
● Build step to flatten documentation into JSON (e.g. v1-
-objects--photo+full.json)
● Code requests specific mocks
49. Why This Approach Works for Us
● API & client contract
● Fewer dependencies for developers & Jenkins
● Improved test speed & reliability on iOS & Android
60. View Tests
● Pros:
○ Easy way to catch regressions
○ Invaluable when refactoring or updating to new OS
versions
● Cons:
○ Slow: ~¾ seconds per test
○ Lots of false-positive failures
61. Integration Tests
● Testing that application behaves as expected
● Interaction between view controllers
● Primary signals of a problem:
○ Non-visual - analytics & network requests
○ Visual - button or label
● ~225 Integration tests
62. KIF
● ~150 KIF tests
● Uses accessibility labels to navigate
● Custom hooks for analytics, requests
● Continuous integration on Jenkins
● Separate iPad and iPhone tests
github.com/kif-framework/KIF
70. Acceptance Tests
● Test overall look and feel
● ~50 manual test cases
○ Moving some to KIF
● iOS7 & 8, iPad & iPhone
● Run by Engineers + PM during release process
71. Closing Thoughts
● API mocks make it easy for us to reliably grow our
testing suite
● Different types of tests for different problems
● Sandboxes to create consistent environments
● KIF <3
89. Problem: slow test suites
● Consequence of needing devices
● Long = impractical
90. Solution: test sharding
$ adb shell am instrument -w
-e numShards 4
-e shardIndex 1
● github.com/shazam/fork
● Resources are the limit!
91. Yelp Testing Process
● ~300 unit tests
● ~100 integration tests
● ~150 UI integration tests
● Manual testing against production
● Beta group
● 50% roll-out in Play Store
92. UI Integration test toolkit @ Yelp
● Espresso!
● Home-rolled MockHttpClient
o MockResponse
o MockRequestMatcher
● Spoon
93.
94.
95. public void test_ClickingBookmark_SendsAddRequestAndUpdatesUi() {
mBusiness.setBookmarked(false);
setActivityIntent(ActivityBusinessPage.intentForBusiness(getYelpContext(), mBusiness));
getActivity();
takeScreenshot("business detail unbookmarked");
// Check that the bookmark button has the text “Bookmark” and click on it
// This should trigger a bookmark add request.
onView(withId(R.id.bookmark))
.check(matches(allOf(isDisplayed(), withText(R.string.action_bookmark))))
.perform(click());
takeScreenshot("bookmarked");
// Make sure we hit bookmarks/add with the proper params.
assertThat(mAddBookmarkResponse.getRequestCount(), is(1));
// Make sure the "Bookmarked" button now shows.
onView(withId(R.id.bookmark))
.check(matches(allOf(isDisplayed(), withText(R.string.bookmarked))));
}
96. public void test_ClickingBookmark_SendsAddRequestAndUpdatesUi() {
mBusiness.setBookmarked(false);
setActivityIntent(ActivityBusinessPage.intentForBusiness(getYelpContext(), mBusiness));
getActivity();
takeScreenshot("business detail unbookmarked");
// Check that the bookmark button has the text “Bookmark” and click on it
// This should trigger a bookmark add request.
onView(withId(R.id.bookmark))
.check(matches(allOf(isDisplayed(), withText(R.string.action_bookmark))))
.perform(click());
takeScreenshot("bookmarked");
// Make sure we hit bookmarks/add with the proper params.
assertThat(mAddBookmarkResponse.getRequestCount(), is(1));
// Make sure the "Bookmarked" button now shows.
onView(withId(R.id.bookmark))
.check(matches(allOf(isDisplayed(), withText(R.string.bookmarked))));
}
97. public void test_ClickingBookmark_SendsAddRequestAndUpdatesUi() {
mBusiness.setBookmarked(false);
setActivityIntent(ActivityBusinessPage.intentForBusiness(getYelpContext(), mBusiness));
getActivity();
takeScreenshot("business detail unbookmarked");
// Check that the bookmark button has the text “Bookmark” and click on it
// This should trigger a bookmark add request.
onView(withId(R.id.bookmark))
.check(matches(allOf(isDisplayed(), withText(R.string.action_bookmark))))
.perform(click());
takeScreenshot("bookmarked");
// Make sure we hit bookmarks/add with the proper params.
assertThat(mAddBookmarkResponse.getRequestCount(), is(1));
// Make sure the "Bookmarked" button now shows.
onView(withId(R.id.bookmark))
.check(matches(allOf(isDisplayed(), withText(R.string.bookmarked))));
}
98. public void test_ClickingBookmark_SendsAddRequestAndUpdatesUi() {
mBusiness.setBookmarked(false);
setActivityIntent(ActivityBusinessPage.intentForBusiness(getYelpContext(), mBusiness));
getActivity();
takeScreenshot("business detail unbookmarked");
// Check that the bookmark button has the text “Bookmark” and click on it
// This should trigger a bookmark add request.
onView(withId(R.id.bookmark))
.check(matches(allOf(isDisplayed(), withText(R.string.action_bookmark))))
.perform(click());
takeScreenshot("bookmarked");
// Make sure we hit bookmarks/add with the proper params.
assertThat(mAddBookmarkResponse.getRequestCount(), is(1));
// Make sure the "Bookmarked" button now shows.
onView(withId(R.id.bookmark))
.check(matches(allOf(isDisplayed(), withText(R.string.bookmarked))));
}
99.
100.
101. public void test_WriteTip_SendsProperRequest() {
setMockSession();
MockResponse tipSaveResponse = mMockHttpClient.addDefaultMock(
ApiPath.QUICKTIPS_SAVE, getTipSaveParams());
openTipPage();
onView(withId(R.id.edit_text)).perform(typeText(TIP_TEXT));
takeScreenshot("tip typed");
onView(withId(R.id.done_button)).perform(click());
takeScreenshot("business page");
// We should show a "Thanks for the tip!" dialog on the business page.
onView(withText(R.string.thanks_for_the_tip)).check(matches(isDisplayed()));
assertThat(tipSaveResponse.getRequestCount(), is(1));
}
102. public void test_WriteTip_SendsProperRequest() {
setMockSession();
MockResponse tipSaveResponse = mMockHttpClient.addDefaultMock(
ApiPath.QUICKTIPS_SAVE, getTipSaveParams());
openTipPage();
onView(withId(R.id.edit_text)).perform(typeText(TIP_TEXT));
takeScreenshot("tip typed");
onView(withId(R.id.done_button)).perform(click());
takeScreenshot("business page");
// We should show a "Thanks for the tip!" dialog on the business page.
onView(withText(R.string.thanks_for_the_tip)).check(matches(isDisplayed()));
assertThat(tipSaveResponse.getRequestCount(), is(1));
}
103. public void test_WriteTip_SendsProperRequest() {
setMockSession();
MockResponse tipSaveResponse = mMockHttpClient.addDefaultMock(
ApiPath.QUICKTIPS_SAVE, getTipSaveParams());
openTipPage();
onView(withId(R.id.edit_text)).perform(typeText(TIP_TEXT));
takeScreenshot("tip typed");
onView(withId(R.id.done_button)).perform(click());
takeScreenshot("business page");
// We should show a "Thanks for the tip!" dialog on the business page.
onView(withText(R.string.thanks_for_the_tip)).check(matches(isDisplayed()));
assertThat(tipSaveResponse.getRequestCount(), is(1));
}
104. public void test_WriteTip_SendsProperRequest() {
setMockSession();
MockResponse tipSaveResponse = mMockHttpClient.addDefaultMock(
ApiPath.QUICKTIPS_SAVE, getTipSaveParams());
openTipPage();
onView(withId(R.id.edit_text)).perform(typeText(TIP_TEXT));
takeScreenshot("tip typed");
onView(withId(R.id.done_button)).perform(click());
takeScreenshot("business page");
// We should show a "Thanks for the tip!" dialog on the business page.
onView(withText(R.string.thanks_for_the_tip)).check(matches(isDisplayed()));
assertThat(tipSaveResponse.getRequestCount(), is(1));
}
105.
106.
107. ● Library choices matter
● Address the issues at the source!
● Tests don’t have to be a pain
Lessons learned