This document discusses testing strategies for the iOS Sync Engine. It provides overall test stats, including that unit tests make up 80% of tests and integration tests make up 20%. The main testing strategy is to test against a fake backend called MockTransportSession, which provides advantages like speed, flexibility and independence over using stubs. MockTransportSession simulates the real backend by making fake requests, managing an internal database, and responding to requests. Future plans include splitting tests into smaller frameworks to reduce runtime, running tests on pull requests, and using record/replay to keep MockTransportSession in sync with the real backend.
The document discusses how test-driven development (TDD) can help address common fears and issues developers experience when working with existing or new code. It argues that while TDD may seem difficult with Rails, the challenges are likely due more to issues with the code structure rather than limitations of TDD or Rails. The document differentiates between hard skills related to TDD tools and techniques versus softer skills around understanding requirements, isolating business logic, continuous delivery, and refactoring tests. It provides suggestions for improving TDD skills like practicing with code katas, extracting business logic into gems, and doing "domain spikes" with in-memory objects to focus on logic alone.
This document introduces Jest, a JavaScript testing framework. It discusses why Jest is useful, including that it runs tests in parallel sandboxed environments, provides a fast feedback loop with rich logging and error outputs, and acts as a one-stop shop for testing. The document also covers anatomy of Jest tests, how to use mocking, tips like resetting modules between tests and snapshot testing, and references for additional Jest resources.
This document discusses test driven development (TDD) for Ruby on Rails applications. It introduces TDD principles like the three laws and red-green-refactor cycle. It then provides an overview of testing tools for Rails like RSpec and Capybara for writing unit and integration tests. Additional tools that help with the testing workflow are also covered, such as Spork and Guard. The document demonstrates how to run tests directly from Sublime Text and provides references for further reading on TDD and Rails testing.
The document discusses modern JavaScript tooling and trends. It outlines problems with existing tools like slow performance and poor source mapping. Emerging tools like Vitejs and Snowpack are faster and support ES modules and features like instant loading and HMR. The document argues the JavaScript ecosystem is entering a third age driven by ESM, Rust/Go for tooling, and emerging technologies like Deno. Resources are provided to learn more about Vitejs, Snowpack, and trends in frontend tooling.
This document discusses automated software testing and test-driven development. It covers topics like the benefits of automated testing, dependency injection, testing with mocks, tips for testing, and things that make code difficult to test.
This document introduces an Automated Penetration Testing Toolkit (APT2) that aims to automate common penetration testing routines. It discusses how penetration testing often follows repetitive routines that can be slow for large networks. APT2 addresses this by providing a framework and modules to automate routines like running Nmap, parsing outputs, checking for common exploits, and using tools like Metasploit. It describes the architecture of APT2 including its use of modules, an event queue, and knowledge base to automate routines. Examples of what it can automate and how modules are developed are also provided. Limitations around interactive tools and safety are discussed.
This document discusses best practices and pitfalls when using the Robot Framework for test automation. It recommends starting with acceptance test-driven development (ATDD) and using source control and continuous integration. Other tips include giving tests and elements descriptive names, writing test cases as independent steps with single assertions, avoiding dependencies between tests, and focusing on behavior rather than implementation details. The document warns against not using these practices as they can lead to fragile and unreliable tests, wasted time and resources, and regressions going unnoticed.
The document provides a 12 step guide to writing efficient and maintainable LotusScript code. The steps include how to code with a focus on maintenance, testing early and often, planning before coding with the "measure twice, cut once" approach, using defensive coding practices, leveraging built-in data types like NotesDateTime instead of strings, and using functions like Evaluate and GetThreadInfo to get runtime information. Logging is also recommended for applications with scheduled agents or a diverse user base. The overall emphasis is on writing code that is well-structured, tested, and optimized for long-term maintenance and support.
This document provides an overview of test case formatting and structure in Robot Framework. It discusses test case files, the editor used, table structure including test cases, settings, keywords and variables. It also covers syntax elements like spacing, argument separators, and comments. Additionally, it explains how to create keywords, pass parameters, use setup/teardown, and address elements. It concludes with examples of simple test scenarios and encourages enjoying test automation.
This document summarizes a talk on unit testing in JavaScript. It introduces the speaker and their company Third Wave Technology. It then defines unit testing as writing code to test individual units in isolation. The benefits of unit testing are discussed such as speeding up development, providing documentation, and helping write better code. Popular JavaScript unit testing frameworks like QUnit and Jasmine are presented. The document concludes by suggesting factors to consider when choosing a unit testing framework.
Performance optimization techniques for Java codeAttila Balazs
油
The presentation covers the the basics of performance optimizations for real-world Java code. It starts with a theoretical overview of the concepts followed by several live demos
showing how performance bottlenecks can be diagnosed and eliminated. The demos include some non-trivial multi-threaded examples
inspired by real-world applications.
This document introduces Robot Framework and the Selenium2Library. It discusses installing and using Robot Framework for test automation, including writing tests using the Selenium2Library keywords. It also covers using Robot Framework with Maven, Ant, the RIDE IDE, and variable files.
Automating JavaScript testing with Jasmine and Perlnohuhu
油
This document discusses automating JavaScript testing using Jasmine and Perl. It introduces Test::WWW::Jasmine, a module that takes Jasmine test specs, runs them in a Selenium-controlled browser, and outputs the results in TAP format. This allows running JavaScript tests from Perl similar to unit tests. Examples of Jasmine test specs and TAP output are shown. The document also discusses running the same Jasmine specs locally for development. It acknowledges some limitations but seeks feedback on the new module.
The document provides an overview of how to get started with the OSCP (Offensive Security Certified Professional) certification. It outlines the required skills like basic Linux usage and programming knowledge. It recommends starting with Hack The Box to practice skills like port scanning and web application testing. The journey involves lab machines to exploit systematically through enumeration, exploitation, and privilege escalation. The exam involves cracking 5 out of 10 machines within 23 hours 45 minutes to pass. Regular breaks, thorough enumeration, and immediately submitting flags are tips for the exam. Overall it recommends perseverance and practicing systematically on similar machines.
A super enjoyable and entertaining walk through API memory lane, then a primer on how to test API's from a unit, integration, and monitoring standpoint. Then a demo on a CI/CD implementation I created at Snagajob.
How to test-drive your Qt QML code. Overview on how you do simple testing, UI level testing, synchronous testing, data-driven testing.
These are the slides used in the Helsinki MeeGo meetup in 2012.
This document provides instructions for installing and setting up the Robot Framework for acceptance testing and acceptance-test driven development. It discusses installing Python, pip, Robot Framework, and Selenium libraries. It also covers test structure, standard and external Robot Framework libraries, Selenium keywords, creating simple tests, running tests, and handling proxies. The document aims to help users create test cases with Robot Framework to test websites like Google, login pages, and todo applications.
This document discusses integration testing with Selenium, including:
- The position of functional/integration testing compared to other types of testing.
- Approaches to test design like using domain language actions and behavior driven development.
- Examples of how to write tests using Selenium, including data-driven testing and multi-station "lead deputy" testing.
- Considerations for high-level test design like focusing on business objects, flows, functions and features.
Leandro Melendez - Switching Performance Left & RightNeotys_Partner
油
Since its beginning, the Performance Advisory Council aims to promote engagement between various experts from around the world, to create relevant, value-added content sharing between members. For Neotys, to strengthen our position as a thought leader in load & performance testing. During this event, 12 participants convened in Chamonix (France) exploring several topics on the minds of todays performance tester such as DevOps, Shift Left/Right, Test Automation, Blockchain and Artificial Intelligence.
This document discusses PHP, QA tools like PHPUnit and Selenium, and the continuous integration tool Jenkins. It provides an overview of how to set up Jenkins and get started with continuous integration for a PHP project. Key steps include installing plugins, configuring the first job to run tests via Ant or PHPUnit scripts on a schedule or commit hooks, and tips for using PHPUnit including data providers and testing exceptions. Issues with testing CodeIgniter controllers and Selenium are also mentioned.
A quick start guide to start working with Robot Framework.
End to End flow form installation to test case automation to verifying result, using both GUI and Command Prompt options.
This document discusses Spring Boot, a framework for building Java applications. It makes building Java web applications easier by providing sensible defaults and automatic configuration. Spring Boot allows building applications that are easy to test, debug and deploy. It supports adding additional libraries and frameworks like Spring Data JPA with minimal configuration. The document demonstrates how to create a basic application with Spring Boot and Spring Data JPA with auto-configured infrastructure and shows how Spring Boot helps with development, operations and deployment of Java applications.
At Tuenti, we do 3 code pushes per week, sometimes modifying thousands of files and running thousands of automated tests and build operations before, to ensure not only that the code works but also that proper localization is applied, bundles are generated and files get deployed to hundreds of servers as fast and reliable as possible.
We use opensource tools like Mercurial, MySQL, Jenkins, Selenium, PHPUnit and Rsync among our own in-house ones, and have different development, testing, staging and production environments.
We had to fight with problems like statics bundling and versioning, syntax errors and of course the fact that we have +100 engineers working on the codebase, merging and releasing more than a 15 branches the same day. We also switched from Subversion to Mercurial to obtain more flexibility and faster branching operations.
With this talk we will explain the process of how code changes in ourcode repository end up in live code, detailing some practices and tips that we apply, problems we had and how we solved them.
Van Wilson
Senior Consultant with Cardinal Solutions
Find more by Van Wilson: https://speakerdeck.com/vjwilson
All Things Open
October 26-27, 2016
Raleigh, North Carolina
Getting your mobile test automation process in place - using Cucumber and Cal...Niels Frydenholm
油
Taking your mobile development process cycle, and the quality of the apps, from good to great.
See how focusing on automated tests can improve app quality, time to market and much more, and learn some best practices to avoid too much trouble getting started
Presented at Xamarin Evolve 2014
The document provides a 12 step guide to writing efficient and maintainable LotusScript code. The steps include how to code with a focus on maintenance, testing early and often, planning before coding with the "measure twice, cut once" approach, using defensive coding practices, leveraging built-in data types like NotesDateTime instead of strings, and using functions like Evaluate and GetThreadInfo to get runtime information. Logging is also recommended for applications with scheduled agents or a diverse user base. The overall emphasis is on writing code that is well-structured, tested, and optimized for long-term maintenance and support.
This document provides an overview of test case formatting and structure in Robot Framework. It discusses test case files, the editor used, table structure including test cases, settings, keywords and variables. It also covers syntax elements like spacing, argument separators, and comments. Additionally, it explains how to create keywords, pass parameters, use setup/teardown, and address elements. It concludes with examples of simple test scenarios and encourages enjoying test automation.
This document summarizes a talk on unit testing in JavaScript. It introduces the speaker and their company Third Wave Technology. It then defines unit testing as writing code to test individual units in isolation. The benefits of unit testing are discussed such as speeding up development, providing documentation, and helping write better code. Popular JavaScript unit testing frameworks like QUnit and Jasmine are presented. The document concludes by suggesting factors to consider when choosing a unit testing framework.
Performance optimization techniques for Java codeAttila Balazs
油
The presentation covers the the basics of performance optimizations for real-world Java code. It starts with a theoretical overview of the concepts followed by several live demos
showing how performance bottlenecks can be diagnosed and eliminated. The demos include some non-trivial multi-threaded examples
inspired by real-world applications.
This document introduces Robot Framework and the Selenium2Library. It discusses installing and using Robot Framework for test automation, including writing tests using the Selenium2Library keywords. It also covers using Robot Framework with Maven, Ant, the RIDE IDE, and variable files.
Automating JavaScript testing with Jasmine and Perlnohuhu
油
This document discusses automating JavaScript testing using Jasmine and Perl. It introduces Test::WWW::Jasmine, a module that takes Jasmine test specs, runs them in a Selenium-controlled browser, and outputs the results in TAP format. This allows running JavaScript tests from Perl similar to unit tests. Examples of Jasmine test specs and TAP output are shown. The document also discusses running the same Jasmine specs locally for development. It acknowledges some limitations but seeks feedback on the new module.
The document provides an overview of how to get started with the OSCP (Offensive Security Certified Professional) certification. It outlines the required skills like basic Linux usage and programming knowledge. It recommends starting with Hack The Box to practice skills like port scanning and web application testing. The journey involves lab machines to exploit systematically through enumeration, exploitation, and privilege escalation. The exam involves cracking 5 out of 10 machines within 23 hours 45 minutes to pass. Regular breaks, thorough enumeration, and immediately submitting flags are tips for the exam. Overall it recommends perseverance and practicing systematically on similar machines.
A super enjoyable and entertaining walk through API memory lane, then a primer on how to test API's from a unit, integration, and monitoring standpoint. Then a demo on a CI/CD implementation I created at Snagajob.
How to test-drive your Qt QML code. Overview on how you do simple testing, UI level testing, synchronous testing, data-driven testing.
These are the slides used in the Helsinki MeeGo meetup in 2012.
This document provides instructions for installing and setting up the Robot Framework for acceptance testing and acceptance-test driven development. It discusses installing Python, pip, Robot Framework, and Selenium libraries. It also covers test structure, standard and external Robot Framework libraries, Selenium keywords, creating simple tests, running tests, and handling proxies. The document aims to help users create test cases with Robot Framework to test websites like Google, login pages, and todo applications.
This document discusses integration testing with Selenium, including:
- The position of functional/integration testing compared to other types of testing.
- Approaches to test design like using domain language actions and behavior driven development.
- Examples of how to write tests using Selenium, including data-driven testing and multi-station "lead deputy" testing.
- Considerations for high-level test design like focusing on business objects, flows, functions and features.
Leandro Melendez - Switching Performance Left & RightNeotys_Partner
油
Since its beginning, the Performance Advisory Council aims to promote engagement between various experts from around the world, to create relevant, value-added content sharing between members. For Neotys, to strengthen our position as a thought leader in load & performance testing. During this event, 12 participants convened in Chamonix (France) exploring several topics on the minds of todays performance tester such as DevOps, Shift Left/Right, Test Automation, Blockchain and Artificial Intelligence.
This document discusses PHP, QA tools like PHPUnit and Selenium, and the continuous integration tool Jenkins. It provides an overview of how to set up Jenkins and get started with continuous integration for a PHP project. Key steps include installing plugins, configuring the first job to run tests via Ant or PHPUnit scripts on a schedule or commit hooks, and tips for using PHPUnit including data providers and testing exceptions. Issues with testing CodeIgniter controllers and Selenium are also mentioned.
A quick start guide to start working with Robot Framework.
End to End flow form installation to test case automation to verifying result, using both GUI and Command Prompt options.
This document discusses Spring Boot, a framework for building Java applications. It makes building Java web applications easier by providing sensible defaults and automatic configuration. Spring Boot allows building applications that are easy to test, debug and deploy. It supports adding additional libraries and frameworks like Spring Data JPA with minimal configuration. The document demonstrates how to create a basic application with Spring Boot and Spring Data JPA with auto-configured infrastructure and shows how Spring Boot helps with development, operations and deployment of Java applications.
At Tuenti, we do 3 code pushes per week, sometimes modifying thousands of files and running thousands of automated tests and build operations before, to ensure not only that the code works but also that proper localization is applied, bundles are generated and files get deployed to hundreds of servers as fast and reliable as possible.
We use opensource tools like Mercurial, MySQL, Jenkins, Selenium, PHPUnit and Rsync among our own in-house ones, and have different development, testing, staging and production environments.
We had to fight with problems like statics bundling and versioning, syntax errors and of course the fact that we have +100 engineers working on the codebase, merging and releasing more than a 15 branches the same day. We also switched from Subversion to Mercurial to obtain more flexibility and faster branching operations.
With this talk we will explain the process of how code changes in ourcode repository end up in live code, detailing some practices and tips that we apply, problems we had and how we solved them.
Van Wilson
Senior Consultant with Cardinal Solutions
Find more by Van Wilson: https://speakerdeck.com/vjwilson
All Things Open
October 26-27, 2016
Raleigh, North Carolina
Getting your mobile test automation process in place - using Cucumber and Cal...Niels Frydenholm
油
Taking your mobile development process cycle, and the quality of the apps, from good to great.
See how focusing on automated tests can improve app quality, time to market and much more, and learn some best practices to avoid too much trouble getting started
Presented at Xamarin Evolve 2014
Working Well Together: How to Keep High-end Game Development Teams ProductivePerforce
油
This document discusses Guerrilla Games' development process for their game Killzone Shadow Fall. It describes how they use Perforce for version control and continuous integration. Key aspects of their process include having most developers work on the main trunk, extensive testing before and after code commits, labeling builds to sync safely to known good versions, and branching for frequent weekly releases while keeping the main branch for ongoing development. This approach allows for speed of iteration while maintaining control over the development cycle and releases.
The document discusses Overthere, a Java framework for manipulating remote files and executing commands on remote machines. It provides interfaces and factories for remote files and processes that support technologies like SSH, SFTP, SCP, and CIFS. The document covers designing and extending Overthere, as well as testing it using an integration testing framework that launches virtual machines.
Testing - How Vital and How Easy to useUma Ghotikar
油
The document discusses various testing concepts like unit testing, TestBox, MockBox, behavior driven development (BDD), and load testing using JMeter. It provides definitions and examples of each concept. For unit testing, it explains what it is, why it is important, and examples using TestBox. For mocking, it discusses the MockBox framework and examples. For BDD, it covers the given-when-then syntax and lifecycle methods. It also includes a demo of load testing a REST API using JMeter.
At Tuenti, we do two code pushes per week, sometimes modifying thousands of files and running thousands of automated tests and build operations before, to ensure not only that the code works but also that proper localization is applied, bundles are generated and files get deployed to hundreds of servers as fast and reliable as possible.
We use opensource tools like Mercurial, MySQL, Jenkins, Selenium, PHPUnit and Rsync among our own in-house ones, and have different development, testing, staging and production environments.
We had to fight with problems like statics bundling and versioning, syntax errors and of course the fact that we have +100 engineers working on the codebase, sometimes merging and releasing more than a dozen branches the same day. We also switched from Subversion to Mercurial to obtain more flexibility and faster branching operations.
With this talk we will explain the process of how code changes in ourcode repository end up in live code, detailing some practices and tips that we apply.
Mock what? What Mock?Learn What is Mocking, and how to use Mocking with ColdFusion testing, development, and continuous integration. Look at Mocking and Stubbing with a touch of Theory and a lot of Examples, including what you could test, and what you should test and what you shouldn't test (but might be fun).
The document discusses the DevOpsSec approach which aims to integrate security testing into the development process through automation. It outlines how DevOpsSec can help address issues that arise from the traditional separation of development and operations teams. The document provides examples of different types of tests that can be automated, such as unit testing, performance testing, and security testing of an application's attack surface. It promotes automating as many tests as possible and sharing test automation code to continuously monitor for vulnerabilities and issues.
The document discusses challenges faced with automated testing at scale for a large codebase with many dependencies, technologies, and test types. It describes how the large number of tests led to slow build times, failures blocking changes, and reduced developer productivity. Specific issues mentioned include monolithic test organization, slow unit/functional tests, non-deterministic races/timeouts, and re-running all tests on every commit. The document advocates for strategies like separating test types, running in parallel, and using page objects to isolate tests from UI changes.
The venerable Servlet Container still has some performance tricks up its sleeve - this talk will demonstrate Apache Tomcat's stability under high load, describe some do's (and some don'ts!), explain how to performance test a Servlet-based application, troubleshoot and tune the container and your application and compare the performance characteristics of the different Tomcat connectors. The presenters will share their combined experience supporting real Tomcat applications for over 20 years and show how a few small changes can make a big, big difference.
My talk delivered on 10th of April 2014 in Bristol at ACCU Conference.
This is the combination of a few talks I delivered over 2012 and 2013 with some latest updates.
This is an experience report based on the work of many developers from Atlassian and Spartez working for years on Atlassian JIRA.
If you have (or going to have) thousands of automated tests and you are interested how it may impact you, this presentation is for you.
Oleksandr Khotemskyi - Serverless architecture and how to apply it in Automa...Web Tech Fun
油
This document discusses using serverless architecture for test automation. It begins with an overview of serverless computing and its benefits like instant scaling, low deployment complexity, and pay-per-use model. It then explains how serverless is well-suited for test automation as it allows tests to run independently, quickly, and be executed frequently for continuous testing. However, challenges like monitoring, debugging and vendor lock-in need to be addressed. Example test types like API, performance, UI and unit tests are discussed. Open-source tools for serverless test automation are also mentioned.
This document discusses using serverless architecture for test automation. It begins with an overview of serverless computing and its benefits like instant scaling, low deployment complexity, and pay-per-use model. It then explores how serverless is well-suited for test automation, noting that tests can run in isolation, achieve high parallelism for fast execution, and benefit from the stability of clean runtime environments. The document also acknowledges challenges like monitoring at scale, cold start delays, and vendor lock-in. It provides examples of implementing API, UI, unit, and load tests on serverless and recommends starting with a simple setup for API tests before progressing to more complex scenarios.
Developer testing 201: When to Mock and When to IntegrateLB Denker
油
This workshop is for those who know how to write developer tests in PHPUnit. This workshop will expand upon that knowledge and further emphasize the difference between unit testing and integration testing. We will cover better tools and techniques for integration testing with databases and external services, and we will cover advanced mocking techniques to maintain a more fast and robust test suite.
Topics include: DBUnit, PHPUnit Mocks, Mockery, vfsStream
This course requires prior experience with PHPUnit or the 'Developer Testing 101: Become a Testing Fanatic' course.
Test Driven Development (TDD) is a software development process that relies on the repetition of a very short development cycle: requirements are turned into very specific test cases that are failed, then the software is improved to pass the new tests, and finally any newly introduced code is refactored. The document outlines the TDD lifecycle and process, describes unit testing and how it verifies isolated units of code, and discusses how TDD results in testable, clean code through refactoring. It provides examples of unit testing code for a bank account class.
This document provides an introduction to Node.js, a framework for building scalable server-side applications with asynchronous JavaScript. It discusses what Node.js is, how it uses non-blocking I/O and events to avoid wasting CPU cycles, and how external Node modules help create a full JavaScript stack. Examples are given of using Node modules like Express for building RESTful APIs and Socket.IO for implementing real-time features like chat. Best practices, limitations, debugging techniques and references are also covered.
6. 3356 tests on OSX
3415 tests on iOS (+ apns tests)
Overall tests stats
7. 3356 tests on OSX
3415 tests on iOS (+ apns tests)
~ 7.5 minutes to build and run all the tests on
one platform (build ~ 40s, tests ~ 7 min)
Overall tests stats
8. 3356 tests on OSX
3415 tests on iOS (+ apns tests)
~ 7.5 minutes to build and run all the tests on
one platform (build ~ 40s, tests ~ 7 min)
Overall tests stats
16. What we DONT do:
test against http:// (real backend)
test using http requests stubs (like
OHHTTPStubs)
Our test strategies
17. What we DONT do:
test against http:// (real backend)
test using http requests stubs (like
OHHTTPStubs)
Why?
Stubs are not that flexible.
Our test strategies
18. What we DONT do:
test against http:// (real backend)
test using http requests stubs (like
OHHTTPStubs)
Why?
Stubs are not that flexible.
Its still slow.
Our test strategies
19. What we really do:
Test against fake backend
Our test strategies
20. What we really do:
Test against fake backend
Advantages
Fast
Flexible
Independent
Testable
Our test strategies
21. What we really do:
Test against fake backend
Advantages
Fast
Flexible
Independent
Testable
Disadvantages
Need to write (and
test!) code
Need to be in sync
with real backend
(can be improved)
Our test strategies
27. WTF is THAT?
ZMTransportSession - is a delegate of a delegate
of NSURLSession
Sends http requests to scheduler
MockTransportSession
28. WTF is THAT?
ZMTransportSession - is a delegate of a delegate
of NSURLSession
Sends http requests to scheduler
Handles authentication
MockTransportSession
29. WTF is THAT?
ZMTransportSession - is a delegate of a delegate
of NSURLSession
Sends http requests to scheduler
Handles authentication
Opens/closes web socket connection
MockTransportSession
31. WTF is THAT?
MockTransportSession - is a mock of
ZMTransportSession
MockTransportSession - acts as a fake backend
MockTransportSession
32. WTF is THAT?
Make fake requests
MockTransportSession
33. WTF is THAT?
Make fake requests
Records requests and responds to them
MockTransportSession
34. WTF is THAT?
Make fake requests
Records requests and responds to them
Manages internal database
MockTransportSession
35. WTF is THAT?
Make fake requests
Records requests and responds to them
Manages internal database
Can simulate remote changes.
MockTransportSession
36. WTF is THAT?
Make fake requests
Records requests and responds to them
Manages internal database
Can simulate remote changes.
Can send push channel (web socket) events
MockTransportSession
37. Before each test we insert objects in internal
database (in memory)
MockTransportSession
38. Before each test we insert objects in internal
database (in memory)
Test code make request using MockTransportSession
MockTransportSession
39. Before each test we insert objects in internal
database (in memory)
Test code make request using MockTransportSession
It records and process incoming request (filtering by
path and lots of ifs)
MockTransportSession
40. Before each test we insert objects in internal
database (in memory)
Test code make request using MockTransportSession
It records and process incoming request (filtering by
path and lots of ifs)
Performs some CRUD action on database
depending on request (add message, create
conversation, fetch conversation)
MockTransportSession
41. Before each test we insert objects in internal
database (in memory)
Test code make request using MockTransportSession
It records and process incoming request (filtering by
path and lots of ifs)
Performs some CRUD action on database
depending on request (add message, create
conversation, fetch conversation)
Creates and sends response. Optionally can
delegate it to other object (i.e. test case).
MockTransportSession
45. Finished feature - run all the tests
Create pull request
Review, merge
Workflow
46. Finished feature - run all the tests
Create pull request
Review, merge
Release script runs all tests locally
Workflow
47. Finished feature - run all the tests
Create pull request
Review, merge
Release script runs all tests locally
Pushes to remote branches (master/develop)
Workflow
48. Finished feature - run all the tests
Create pull request
Review, merge
Release script runs all tests locally
Pushes to remote branches (master/develop)
Xcode bots make integration on each push to master/
develop
Workflow
49. Finished feature - run all the tests
Create pull request
Review, merge
Release script runs all tests locally
Pushes to remote branches (master/develop)
Xcode bots make integration on each push to master/
develop
Each bot for each platform runs all the tests
Workflow
50. Finished feature - run all the tests
Create pull request
Review, merge
Release script runs all tests locally
Pushes to remote branches (master/develop)
Xcode bots make integration on each push to master/
develop
Each bot for each platform runs all the tests
Bots archive and upload binary to the cloud
Workflow
59. Split to smaller frameworks - to improve run time
Future plans
60. Split to smaller frameworks - to improve run time
Setup Buildasaur - to run tests on Github pull
requests
Future plans
61. Split to smaller frameworks - to improve run time
Setup Buildasaur - to run tests on Github pull
requests
Record/replay tests for MockTransportSession -
to keep it in sync
Future plans