iOS中面向测试开发和面向行为驱动开发
从测试范围划分
软件测试可以分为单元测试,集成测试,系统测试。开发者负责单元测试,测试团队负责集成测试以及系统测试。
单元测试也叫模块测试,是对单一的功能代码进行测试,会使用Mock方法模拟外部使用,通过编写各种测试用例来检验代码的功能是否正常。
从开发模式划分
开发方式可以分为TDD(Test-driven development,面向测试驱动开发)和BDD(Behavior-Driven development,面向行为驱动开发)。
- TDD:先编写测试用例,在不考虑代码优化的情况下快速编写功能实现代码,等功能开发完成后,在测试用例的保障下,在进行代码重构,以提高代码质量。
- BDD:是TDD的进化。基于行为进行功能测试,使用DSL(Domain Specific Language,领域特定语言)来描述测试用例,让测试用例看起来像文档一样,更易读,更好维护。
Kiwi
BDD 的 Objective-C 框架有 Kiwi、Specta、Expecta等,Swift 框架有 Quick。
1 | // describe 表示要测试的对象 |
描述的是RSS列表页面,当获取RSS数据时去读取数据这个行为的测试用例。
- describe 表示要测试的对象,context表示的是不同场景下的行为,一个dsscribe里可以包含多个context。
- it表示的是需要测试的内容, 同一个场景下的行为会有多个需要测试的内容,也就是说一个context下可以有多个it
现状
在团队里推行TDD和BDD的最大困难,就是业务迭代太快时,没时间去写测试用例。优先对基础能力的功能开发使用TDD和BDD,保证了基础能力的稳定,业务怎么变,底子还都是稳固的。当有了业务迭代,有了间隙时,再考虑在核心业务上采用BDD,最大程度的保证App核心功能的稳定。