Mesut Güneş

Modus Create (Turkey)

Contract Testing for Mobile App Development

In general, explaining the unit tests is simple because the context is not too broad and it is the lowest level of the system. However, when it comes to integration testing it becomes difficult because we have to talk about unit integration testing, component integration testing, and also system integration testing. Each of these elements can be tested properly with different tooling and concepts. Therefore, for mobile application development, we have many solutions that have been used in the industry for a long time as API or service testing for a solution to integration testing. These solutions are very mature and solve the problem of integration testing, however, it is too late to test the integrating points in the integration level of the test pyramid. Instead, the new concept, contract-testing, takes the place of a quicker response for checking the integrations.

In my talk, I want to explain the concept of contract testing for microservice environments, then I want to make connections to mobile app development and explain the meaning of contract testing in the mobile application development life cycle. Contract testing has important steps in the test cycle as the replacement of the integration testing by checking the unit of the consumer (as one of the mobile app projects) then it will create a contract based on the requirements so this is the trigger for the whole concept, that is named as ‘consumer-driven contract testing`. Then contract will be pushed to the broker to be shared with providers. Then finally the provider uses this contract to check the functionality of its development pipeline. I will show the implementation by using some of the pact projects such as pact-python as provider and pact-swift as consumer, and pact-broker for broker for iOS application with Python backend.

I started as a software developer, then since 2010, I have had a special interest in test automation and later on DevOps. Focus on automating everything in the development pipeline to accelerate software development. I love open-source tools and technologies. I have given talks related to testing in meetups and conferences, and also written blog posts and testing materials.