
Modularizing Legacy Projects Using TDD: Test-Driven Development with XCTest for iOS
Khaled / El-Garem El-Morabea
Résumé
You'll start by reviewing the TDD Cycle and how to implement these concepts on a legacy project or a new one. You'll then walk through TDD step-by-step on a blank project, including setting up test targets, assertions, and expectations. You'll follow that with all levels of testing such as unit tests, integration tests, and end-to-end tests, and also tackle fairly complex, yet badly written legacy code.
The book will take you through the journey of modularizing a legacy app using TDD. Throughout this journey, you will be introduced to multiple testing concepts and techniques, like writing tests for network and core data layers. You will write tests to ensure the thread safety of your app. And you'll add a new feature while you are in the middle of refactoring, which is an important skill so you can keep adding features while you are fixing your technical debt. By the end of this book, you will have all the tools needed to become a testing master.
What You'll Learn
- Use mocking and dependency injection to make components more testable
- Write tests for asynchronous code like network code
- Add new features to existing legacy apps using TDD
Who This Book Is For
Experienced iOS developers who care about software quality and meeting customer expectations.
Chapter 1: Introduction
Why write tests?
Levels of testing
Overview of TDD
Chapter 2: Your First Test
Basics of testing in iOS
XCTest
Code Examples
Chapter 3: The Testing Pyramid
Testing Level Values
Distributing tests along levels
Chapter 4: TDD Deep Dive
Core concepts
Complex examples
Implement projects from scratch with TDD
Chapter 5: Modularization for the Win
Introducing a legacy project
Transform with maintainability
Break up larger components
Apply TDD for modularization
Chapter 5: Dependency Injection and Mocks
Write tests for a component
Downsides of these techniques
Deciding when to apply
Chapter 6: Avoiding Threading Nightmares
Threading issues
Simulate situations
Determine which components need to have multithreading tests
Chapter 7: Testing Your Network Layer
Testing network code c
Differences between sync and async code
Test network code
Chapter 8: Taming CoreData
Core Data
Testing Core Data layer
Chapter 9: Adding Features to Legacy Apps
Testing concepts and techniques
Add a feature to an existing application
TDD and modularization
Modify a tested and modularized project
Chapter 10: Handling Production Issues
Improve the application quality
Make sure that similar problems don't happen again
Tools used to identify and keep track of bugs and crashes.
Add tests for every production issue discovered
Chapter 11: Performance Testing
Write performance tests
MetricKit
Value of performance testing
Write performance tests for iOS applicationsKhaled is an engineering manager at Instabug. He has been an iOS developer for more than 8 years and leading the iOS team for more than 3 years. In that time he has worked on several projects. During his time at Instabug, he has worked on multiple integral products, both as a developer and as a strategic engineering manager.
Hassaan El-Garem Hassaan has been involved in the field of iOS Development for 5 years, during which he worked on multiple apps and projects. He has a passion for testing and for working on complex projects, while maintaining the highest level of quality. Following his passion for testing has led him to create a closed-source testing framework used for randomized stress testing.Caractéristiques techniques
PAPIER | |
Éditeur(s) | Apress |
Auteur(s) | Khaled / El-Garem El-Morabea |
Parution | 25/10/2021 |
Nb. de pages | 335 |
EAN13 | 9781484274279 |
Avantages Eyrolles.com
Consultez aussi
- Les meilleures ventes en Graphisme & Photo
- Les meilleures ventes en Informatique
- Les meilleures ventes en Construction
- Les meilleures ventes en Entreprise & Droit
- Les meilleures ventes en Sciences
- Les meilleures ventes en Littérature
- Les meilleures ventes en Arts & Loisirs
- Les meilleures ventes en Vie pratique
- Les meilleures ventes en Voyage et Tourisme
- Les meilleures ventes en BD et Jeunesse