测试策略
从基础原理到实践决策,系统理解测试策略。
QUALITY · 18 ARTICLES
从基础原理到实践决策,系统理解测试与代码质量。
主题地图
从基础原理到实践决策,系统理解测试策略。
从基础原理到实践决策,系统理解TDD 与测试替身。
从基础原理到实践决策,系统理解代码坏味道。
从基础原理到实践决策,系统理解重构。
从这里开始
从基础通往下一步的导读。
进行 iOS 开发时,你可能总想着“得写点测试代码了……”,却一拖再拖。真正打开 XCTest 后,又不知道该从哪里下手。
阅读文章意大利面代码指的不是长度或脏乱,而是控制流。本文从迪杰斯特拉 1968 年反对 goto 的信件讲起,总结 goto 消失后意大利面依然存在的原因,以及如何用圈复杂度衡量它。
阅读文章全部文章
散弹式修改是指一项变更分散在多个文件中的异味,而发散式变化则是它的镜像:一个文件因多个原因而修改。本文总结如何通过提交记录实测并区分这两种处理方式完全相反的异味。
阅读文章上帝对象是不断吸收周边职责和数据而膨胀的类,也是团队中修改最频繁、冲突最多的文件。本文整理了识别膨胀的信号、拆解顺序,以及拆分失败的两种方式。
阅读文章Ravioli 代码的函数全都只有五行,也各自只有一个职责,但没人能回答点击按钮后会发生什么。本文总结过度拆分的原因、跳转次数体现的成本,以及找回流程的方法。
阅读文章即使层次划分得很整齐,新增一个字段仍要修改七个文件的代码,就是千层面代码。本文总结层数增加的原因、成本产生的位置,以及何时需要保留或移除层次。
阅读文章测试计划通过 .xctestplan 文件管理要运行的测试及其条件。本文总结仅靠 Scheme 设置为何不够、目标选择、配置拆分、覆盖率、执行顺序、重复设置以及 xcodebuild 集成。
阅读文章在 Swift 5.5 及更高版本中,将测试函数声明为 async,使用 await 等待结果,然后进行验证。本文还整理了错误验证、旧式回调 API 测试,以及仍需使用 expectation 的情况。
阅读文章