xUnit 测试模式: 摘要

 

xUnit测试模式--测试码重构

 

“脆弱测试”问题15a15 c 15a c 151515 c 151515a15a15

4017 使用商业“记录与回放”或“机器人用户”工具的测试自动化在这些工具的早期用户中名声狼籍.a 使用这种方法的自动化测试通常因为看起来不太重要的原因而失败.a 重要的是要理解这类测试自动化的局限性,16 以免落入与它相关的陷阱——即行为敏感性.c 接口敏感性.c 数据敏感性和上下文敏感性.a16a16 c 16a c 161616 c 161616a16a16
4018 1.c 行为敏感性17a17 c 17a c 171717 c 171717a17a17
4019 如果系统的行为发生改变(例如,18 如果需求改变,18 并且系统被修改以满足新需求),18 重放时,18 执行修改后功能性的测试很可能失败2.a 不管使用什么测试自动化方法,18 这就是测试的基本事实.a 实际问题是,18 通常需要使用这种功能性将系统设置到正确状态来启动测试.a 因此,18 行为变更对测试过程的影响比人们预期的更大.a18a18 c 18a c 181818 c 181818a18a18
4020 2.c 接口敏感性19a19 c 19a c 191919 c 191919a19a19
4021 通过用户接口测试被测系统(SUT)内的业务逻辑不是一个好主意.a 甚至是对接口的细小变更都可以导致测试失败,20 虽然人类用户可能说测试仍然应该通过.a 在过去几十年内,20 这种无意识的接口敏感性给测试自动化工具带来了不好的名声.a 不管使用哪种用户接口方法,20 总是会出现问题,20 有些类型的接口似乎更糟糕.a 图形用户界面(GUI)是与系统内业务逻辑交互的特别具有挑战性的方法.a 最近使用基于Web(HTML)的用户界面让测试自动化的某些方面变得更容易,20 但也产生了另一个问题,20 因为HTML内的可执行代码需要提供丰富的用户经验.a20a20 c 20a c 202020 c 202020a20a20
4022 3.c 数据敏感性21a21 c 21a c 212121 c 212121a21a21
4023 所有测试都要假设某个起始点,22 这个起始点称为测试夹具.a 测试上下文有时称为测试的“前置条件”或“之前状态”.a 通常依据系统中已有的数据定义测试夹具.a 如果数据改变,22 测试就可能失败,22 除非努力让它们对使用的数据不敏感.a22a22 c 22a c 222222 c 222222a22a22
4024 4.c 上下文敏感性23a23 c 23a c 232323 c 232323a23a23
4025 系统的行为可能受到系统之外事物状态的影响.a 这些外部因素可能包括设备(例如,24 打印机.c 服务器)的状态.c 其他应用程序或系统时钟(例如,24 测试执行的时间和/或日期).a 如果没有控制上下文,24 受该上下文影响的所有测试都很难确定地重复.a24a24 c 24a c 242424 c 242424a24a24

 

测试自动化的目标

4227 3.3.1cc 测试应该有助于提高质量 1526a26 c 26a c 262626 c 262626a26a26
4228 3.3.2cc 测试应该有助于理解SUT 1627a27 c 27a c 272727 c 272727a27a27
4229 3.3.3cc 测试应该降低(而不是引入)风险 1628a28 c 28a c 282828 c 282828a28a28
4230 3.3.4cc 测试应该易于运行 1729a29 c 29a c 292929 c 292929a29a29
4231 3.3.5cc 测试应该易于写和维护 1930a30 c 30a c 303030 c 303030a30a30
4232 3.3.6cc 随着系统的发展,31 测试应该只需要最低限度的维护 2031a31 c 31a c 313131 c 313131a31a31
 

测试自动化的原则

4250 5.2.1cc 原则:首先写测试(也称为测试驱动开发.c 测试优先开发) 2749a49 c 49a c 494949 c 494949a49a49
4251 5.2.2cc 原则:易测性设计 2850a50 c 50a c 505050 c 505050a50a50
4252 5.2.3cc 原则:使用前门优先(也称为前门优先) 2851a51 c 51a c 515151 c 515151a51a51
4253 5.2.4cc 原则:交流意图(也称为高级语言,52 简单易读) 2852a52 c 52a c 525252 c 525252a52a52
4254 5.2.5cc 原则:不要修改SUT 2853a53 c 53a c 535353 c 535353a53a53
4255 5.2.6cc 原则:保持测试独立(也称为独立测试) 2954a54 c 54a c 545454 c 545454a54a54
4256 5.2.7cc 原则:隔离SUT 2955a55 c 55a c 555555 c 555555a55a55
4257 5.2.8cc 原则:最小化测试重叠 3056a56 c 56a c 565656 c 565656a56a56
4258 5.2.9cc 原则:最小化不可测试的代码 3057a57 c 57a c 575757 c 575757a57a57
4259 5.2.10cc 原则:保持测试逻辑与产品代码分离(也称为产品代码中无测试逻辑) 3158a58 c 58a c 585858 c 585858a58a58
4260 5.2.11cc 原则:每个测试验证一种条件(也称为单一条件测试) 3159a59 c 59a c 595959 c 595959a59a59
4261 5.2.12cc 原则:单独测试关注点 3260a60 c 60a c 606060 c 606060a60a60
4262 5.2.13cc 原则:确保相同标准的努力和责任 3261a61 c 61a c 616161 c 616161a61a61

暂时夹具管理

4209 8.3cc 建立新鲜夹具 61108a108 c 108a c 108108108 c 108108108a108a108
4210 8.3.1cc 内联夹具建立 61109a109 c 109a c 109109109 c 109109109a109a109
4211 8.3.2cc 委托夹具建立 62110a110 c 110a c 110110110 c 110110110a110a110
4212 8.3.3cc 隐式夹具建立 63111a111 c 111a c 111111111 c 111111111a111a111
4213 8.3.4cc SetUp方法的滥用 64112a112 c 112a c 112112112 c 112112112a112a112
4214 8.3.5cc 混合夹具建立 65113a113 c 113a c 113113113 c 113113113a113a113
4215 8.4cc 拆卸暂时新鲜夹具 65114a114 c 114a c 114114114 c 114114114a114a114
 

永久夹具管理

4219 9.2cc 管理永久新鲜夹具 67118a118 c 118a c 118118118 c 118118118a118a118
4220 9.2.1cc 什么让夹具变得永久 67119a119 c 119a c 119119119 c 119119119a119a119
4221 9.2.2cc 永久新鲜夹具产生的问题 68120a120 c 120a c 120120120 c 120120120a120a120
4222 9.2.3cc 拆卸永久新鲜夹具 68121a121 c 121a c 121121121 c 121121121a121a121
4223 9.2.4cc 避免拆卸的需要 71122a122 c 122a c 122122122 c 122122122a122a122
4224 9.2.5cc 处理缓慢测试 72123a123 c 123a c 123123123 c 123123123a123a123
4225 9.3cc 管理共享的夹具 72124a124 c 124a c 124124124 c 124124124a124a124
4226 9.3.1cc 访问共享夹具 73125a125 c 125a c 125125125 c 125125125a125a125
4227 9.3.2cc 引发共享夹具结构 73126a126 c 126a c 126126126 c 126126126a126a126
4

结果验证

4231 10.2cc 让测试自检 77130a130 c 130a c 130130130 c 130130130a130a130
4232 10.3cc 状态验证 78131a131 c 131a c 131131131 c 131131131a131a131
4233 10.3.1cc 使用内置断言 79132a132 c 132a c 132132132 c 132132132a132a132
4234 10.3.2cc Delta断言 80133a133 c 133a c 133133133 c 133133133a133a133
4235 10.3.3cc 外部结果验证 80134a134 c 134a c 134134134 c 134134134a134a134
4236 10.4cc 验证行为 80135a135 c 135a c 135135135 c 135135135a135a135
4237 10.4.1cc 过程行为验证 81136a136 c 136a c 136136136 c 136136136a136a136
4238 10.4.2cc 预期行为规范 82137a137 c 137a c 137137137 c 137137137a137a137
4239 10.5cc 减少测试码复制 82138a138 c 138a c 138138138 c 138138138a138a138
4240 10.5.1cc 预期对象 83139a139 c 139a c 139139139 c 139139139a139a139
4241 10.5.2cc 自定义断言 84140a140 c 140a c 140140140 c 140140140a140a140
4242 10.5.3cc 结果描述验证方法 84141a141 c 141a c 141141141 c 141141141a141a141
4243 10.5.4cc 参数化测试和数据驱动测试 85142a142 c 142a c 142142142 c 142142142a142a142
4244 10.6cc 避免条件测试逻辑 86143a143 c 143a c 143143143 c 143143143a143a143
4245 10.6.1cc 排除if语句 87144a144 c 144a c 144144144 c 144144144a144a144
4246 10.6.2cc 排除循环 87145a145 c 145a c 145145145 c 145145145a145a145
4247 10.7cc 其他方法 88146a146 c 146a c 146146146 c 146146146a146a146
4248 10.7.1cc 逆向操作,147 由外到内 88147a147 c 147a c 147147147 c 147147147a147a147
4249 10.7.2cc 使用测试驱动开发来写测试实用程序方法 88148a148 c 148a c 148148148 c 148148148a148a148
4250 10.8cc 将可重复使用的验证逻辑放在哪里 89149a149 c 149a c 149149149 c 149149149a149a149
 

使用测试替身

4254 11.2cc 什么是间接输入和间接输出 91153a153 c 153a c 153153153 c 153153153a153a153
4255 11.2.1cc 为什么要关注间接输入 91154a154 c 154a c 154154154 c 154154154a154a154
4256 11.2.2cc 为什么要关注间接输出 92155a155 c 155a c 155155155 c 155155155a155a155
4257 11.2.3cc 如何控制间接输入 93156a156 c 156a c 156156156 c 156156156a156a156
4258 11.2.4cc 如何验证间接输出 94157a157 c 157a c 157157157 c 157157157a157a157
4259 11.3cc 使用替身测试 96158a158 c 158a c 158158158 c 158158158a158a158
4260 11.3.1cc 测试替身的类型 97159a159 c 159a c 159159159 c 159159159a159a159
4261 11.3.2cc 提供测试替身 102160a160 c 160a c 160160160 c 160160160a160a160
4262 11.3.3cc 配置测试替身 103161a161 c 161a c 161161161 c 161161161a161a161
4263 11.3.4cc 安装测试替身 104162a162 c 162a c 162162162 c 162162162a162a162
4264 11.4cc 测试替身的其他用法 108163a163 c 163a c 163163163 c 163163163a163a163
4265 11.4.1cc 内窥镜测试 108164a164 c 164a c 164164164 c 164164164a164a164
4266 11.4.2cc 需求驱动开发 108165a165 c 165a c 165165165 c 165165165a165a165
4267 11.4.3cc 加速夹具建立 108166a166 c 166a c 166166166 c 166166166a166a166
4268 11.4.4cc 加速测试执行 109167a167 c 167a c 167167167 c 167167167a167a167

 

组织测试

4275 12.4cc 测试方法和测试用例类 113174a174 c 174a c 174174174 c 174174174a174a174
4276 12.4.1cc 每个类一个测试用例类 113175a175 c 175a c 175175175 c 175175175a175a175
4277 12.4.2cc 每种特征一个测试用例类 113176a176 c 176a c 176176176 c 176176176a176a176
4278 12.4.3cc 每个夹具一个测试用例类 114177a177 c 177a c 177177177 c 177177177a177a177
4279 12.4.4cc 选择测试方法组织策略 115178a178 c 178a c 178178178 c 178178178a178a178
4280 12.5cc 测试命名约定 115179a179 c 179a c 179179179 c 179179179a179a179
4281 12.6cc 组织测试套件 116180a180 c 180a c 180180180 c 180180180a180a180
4282 12.6.1cc 运行测试组 117181a181 c 181a c 181181181 c 181181181a181a181
4283 12.6.2cc 运行单个测试 117182a182 c 182a c 182182182 c 182182182a182a182
4284 12.7cc 测试码重用 118183a183 c 183a c 183183183 c 183183183a183a183
4285 12.7.1cc 测试实用程序方法位置 118184a184 c 184a c 184184184 c 184184184a184a184
4286 12.7.2cc 测试用例继承与重用 119185a185 c 185a c 185185185 c 185185185a185a185
4287 12.8cc 测试文件组织 119186a186 c 186a c 186186186 c 186186186a186a186
4288 12.8.1cc 内置自测 119187a187 c 187a c 187187187 c 187187187a187a187
4289 12.8.2cc 测试程序包 120188a188 c 188a c 188188188 c 188188188a188a188
4290 12.8.3cc 测试依赖 120189a189 c 189a c 189189189 c 189189189a189a189

 

测试味道

213 c 213a c 213213213 c 213213213a213a213

代码味道

4216 15.1cc 模糊测试(也称为长测试.c 复杂测试.c 冗长测试) 135215a215 c 215a c 215215215 c 215215215a215a215
4221 15.2cc 条件测试逻辑(也称为缩排的测试码)c 146220a220 c 220a c 220220220 c 220220220a220a220
4225 15.3cc 难以测试的代码 152224a224 c 224a c 224224224 c 224224224a224a224
4230 15.4cc 测试码复制 155229a229 c 229a c 229229229 c 229229229a229a229
4235 15.5cc 产品中的测试逻辑 158234a234 c 234a c 234234234 c 234234234a234a234
 

行为味道9

4241 16.1cc 断言滚轮 163240a240 c 240a c 240240240 c 240240240a240a240
4246 16.2cc 不稳定测试 165245a245 c 245a c 245245245 c 245245245a245a245
4251 16.3cc 脆弱测试 173250a250 c 250a c 250250250 c 250250250a250a250
4257 16.4cc 频繁调试(也称为手动调试) 179256a256 c 256a c 256256256 c 256256256a256a256
4262 16.5cc 手动干预 180261a261 c 261a c 261261261 c 261261261a261a261
4267 16.6cc 缓慢测试 182266a266 c 266a c 266266266 c 266266266a266a266
 

项目味道

4273 17.1cc 缺陷测试 187272a272 c 272a c 272272272 c 272272272a272a272
4279 17.2cc 开发人员没有写测试 189278a278 c 278a c 278278278 c 278278278a278a278
4284 17.3cc 高测试维护成本 190283a283 c 283a c 283283283 c 283283283a283a283
4289 17.4cc 产品缺陷 192288a288 c 288a c 288288288 c 288288288a288a288

模式

测试策略模式

4295 18.1cc 记录测试(也称为记录与回放测试.c 机器人用户测试.c 捕获/回放测试) 201294a294 c 294a c 294294294 c 294294294a294a294
4204 18.2cc 脚本测试(也称为手写测试.c 手动编码测试.c 程序测试.c 自动化单元测试) 207303a303 c 303a c 303303303 c 303303303a303a303
4211 18.3cc 数据驱动测试 209310a310 c 310a c 310310310 c 310310310a310a310
4220 18.4cc 测试自动化架构 217319a319 c 319a c 319319319 c 319319319a319a319
4226 18.5cc 最小夹具(也称为最小上下文)c 220325a325 c 325a c 325325325 c 325325325a325a325
4229 18.6cc 标准夹具(也称为标准上下文)c 221328a328 c 328a c 328328328 c 328328328a328a328
4236 18.7cc 新鲜夹具(也称为新鲜上下文.c 私有夹具)c 226335a335 c 335a c 335335335 c 335335335a335a335
4245 18.8cc 共享夹具(也称为共享上下文.c 遗留夹具.c 重用的夹具.c 陈旧夹具) 230344a344 c 344a c 344344344 c 344344344a344a344
4252 18.9cc 后门操作(也称为层交叉测试)c 238351a351 c 351a c 351351351 c 351351351a351a351
4261 18.10cc 层测试(也称为单层测试.c 逐层测试或分层测试)c 245360a360 c 360a c 360360360 c 360360360a360a360
 

xUnit基本模式

4271 19.1cc 测试方法 253370a370 c 370a c 370370370 c 370370370a370a370
4280 19.2cc 四阶段测试 260379a379 c 379a c 379379379 c 379379379a379a379
4286 19.3cc 断言方法 263385a385 c 385a c 385385385 c 385385385a385a385
4297 19.4cc 断言消息 269396a396 c 396a c 396396396 c 396396396a396a396
4204 19.5cc 测试用例类 271403a403 c 403a c 403403403 c 403403403a403a403
4210 19.6cc 测试运行器 274409a409 c 409a c 409409409 c 409409409a409a409
4214 19.7cc 测试用例对象 278413a413 c 413a c 413413413 c 413413413a413a413
4219 19.8cc 测试套件对象 281418a418 c 418a c 418418418 c 418418418a418a418
4226 19.9cc 测试发现 286425a425 c 425a c 425425425 c 425425425a425a425
4237 19.10cc 测试枚举(也称为:测试套件工厂)c 290436a436 c 436a c 436436436 c 436436436a436a436
4244 19.11cc 测试选择 294443a443 c 443a c 443443443 c 443443443a443a443
 

夹具建立模式

4251 20.1cc 内联建立 297450a450 c 450a c 450450450 c 450450450a450a450
4257 20.2cc 委托建立 299456a456 c 456a c 456456456 c 456456456a456a456
4264 20.3cc 创建方法 302463a463 c 463a c 463463463 c 463463463a463a463
4274 20.4cc 隐式建立(也称为:挂钩建立.c 调用架构建立.c 共享建立方法) 309473a473 c 473a c 473473473 c 473473473a473a473
4281 20.5cc 预制夹具(也称为:预制上下文.c 测试台)c 313
4291 20.6cc 延迟建立 317490a490 c 490a c 490490490 c 490490490a490a490
4298 20.7cc 套件夹具建立 322497a497 c 497a c 497497497 c 497497497a497a497
4207 20.8cc 建立装饰器 327506a506 c 506a c 506506506 c 506506506a506a506
4216 20.9cc 链接测试 332515a515 c 515a c 515515515 c 515515515a515a515
 

结果验证模式

4224 21.1cc 状态验证(也称为:基于状态的测试) 339523a523 c 523a c 523523523 c 523523523a523a523
4232 21.2cc 行为验证(也称为:交互测试)c 343531a531 c 531a c 531531531 c 531531531a531a531
4240 21.3cc 自定义断言(也称为:预约断言)c 347539a539 c 539a c 539539539 c 539539539a539a539
4250 21.4cc Delta断言 356549a549 c 549a c 549549549 c 549549549a549a549
4257 21.5cc 哨兵断言 359556a556 c 556a c 556556556 c 556556556a556a556
4265 21.6cc 未完成的测试断言 362564a564 c 564a c 564564564 c 564564564a564a564
 

夹具拆卸模式

4274 22.1cc 无用单元收集拆卸 367573a573 c 573a c 573573573 c 573573573a573a573
4281 22.2cc 自动拆卸(也称为:测试对象注册库)c 369580a580 c 580a c 580580580 c 580580580a580a580
4289 22.3cc 内联拆卸 374588a588 c 588a c 588588588 c 588588588a588a588
4200 22.4cc 隐式拆卸(也称为:关联拆卸.c 调用架构拆卸.c 拆卸方法) 380599a599 c 599a c 599599599 c 599599599a599a599
 

测试替身模式

4208 23.1cc 测试替身(也称为冒名顶替者) 385607a607 c 607a c 607607607 c 607607607a607a607
4213 23.2cc 测试桩(也称为:桩)c 390612a612 c 612a c 612612612 c 612612612a612a612
4224 23.3cc 测试间谍(也称为:间谍.c 记录测试桩)c 397623a623 c 623a c 623623623 c 623623623a623a623
4231 23.4cc 仿制对象 402630a630 c 630a c 630630630 c 630630630a630a630
4240 23.5cc 伪造对象(也称为:哑元) 407639a639 c 639a c 639639639 c 639639639a639a639
4248 23.6cc 可配置的测试替身(也称为:可配置的仿制对象.c 可配置的测试间谍.c 可配置的测试桩) 412647a647 c 647a c 647647647 c 647647647a647a647
4257 23.7cc 硬编码的测试替身(也称为:硬编码的仿制对象.c 硬编码的测试桩.c 硬编码的测试间谍) 420656a656 c 656a c 656656656 c 656656656a656a656
4268 23.8cc 测试专用子类(也称为:测试专用扩充)c 429667a667 c 667a c 667667667 c 667667667a667a667
 

测试组织模式

4380 24.1cc 命名测试套件 439679a679 c 679a c 679679679 c 679679679a679a679
4389 24.2cc 测试实用程序方法 444688a688 c 688a c 688688688 c 688688688a688a688
4396 24.3cc 参数化测试 450695a695 c 695a c 695695695 c 695695695a695a695
4308 24.4cc 每个类一个测试用例类 458707a707 c 707a c 707707707 c 707707707a707a707
4312 24.5cc 每种特征一个测试用例类 464711a711 c 711a c 711711711 c 711711711a711a711
4319 24.6cc 每个夹具一个测试用例类 469718a718 c 718a c 718718718 c 718718718a718a718
4326 24.7cc 测试用例超类(也称为抽象测试用例.c 抽象测试夹具.c 测试用例基类)c 475725a725 c 725a c 725725725 c 725725725a725a725
4334 24.8cc 测试辅助 480733a733 c 733a c 733733733 c 733733733a733a733
 

数据库模式

4343 25.1cc 数据库沙盒 485742a742 c 742a c 742742742 c 742742742a742a742
4350 25.2cc 存储过程测试 488749a749 c 749a c 749749749 c 749749749a749a749
4358 25.3cc 表格截断拆卸 493757a757 c 757a c 757757757 c 757757757a757a757
4368 25.4cc 事务回滚拆卸 499767a767 c 767a c 767767767 c 767767767a767a767
 

易测性设计模式

4377 26.1cc 依赖注入 507776a776 c 776a c 776776776 c 776776776a776a776
4386 26.2cc 依赖查找(也称为:服务定位器.c 对象工厂.c 组件代理.c 组件注册库) 513785a785 c 785a c 785785785 c 785785785a785a785
4395 26.3cc 低级对象 520794a794 c 794a c 794794794 c 794794794a794a794
4305 26.4cc 测试挂钩 531804a804 c 804a c 804804804 c 804804804a804a804
 

值模式

4314 27.1cc 字面值(也称为:硬编码值.c 常量值) 535813a813 c 813a c 813813813 c 813813813a813a813
4323 27.2cc 派生值(也称为:计算值) 538822a822 c 822a c 822822822 c 822822822a822a822
4330 27.3cc 生成值 542829a829 c 829a c 829829829 c 829829829a829a829
4338 27.4cc 哑元对象(也称为:哑元.c 哑元参数.c 哑元值.c 占位符.c 桩) 545837a837 c 837a c 837837837 c 837837837a837a837

你可能感兴趣的:(设计模式,c,测试,单元测试,360,产品)