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 componentsApply 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
MetricKitValue of performance testing
Write performance tests for iOS applications