- •Глава 8. Тестирование принтеров и других устройств 208
- •Глава 9. Адаптационное тестирование 237
- •Глава 14. Управление группой тестирования 428
- •10 Тестирование программного обеспечения
- •Часть 1. Основы
- •Часть 2. Приемы и технологии тестирования
- •16 Тестирование программного обеспечения
- •Часть 3. Управление проектами и группами
- •Глава I: Пример серии тестов
- •22 Часть I: Основы
- •Глава 1: Пример серии тестов 23
- •24 Часть I: Основы
- •Глава 1: Пример серии тестов • 25
- •Глава I: Пример серии тестов 27
- •Глава 1: Пример серии тестов 29
- •Глава I: Пример серии тестов 31
- •36 Часть I: Основы
- •Глава 1: Пример серии тестов 37
- •Глава 2: Желаемое и действительное в жизни тестировщика 39
- •40 Часть I: Основы
- •Глава 2: Желаемое и действительное в жизни тестировщика 41
- •42 Часть I: Основы
- •Глава 2: Желаемое и действительное в жизни тестировщика
- •Глава 2: Желаемое и действительное в жизни тестировщика
- •Глава 2: Желаемое и действительное в жизни тестировщика 47
- •Глава 2: Желаемое и действительное в жизни тестировщика 49
- •Глава 3: Типы тестов ... 51
- •Глава 3: Типы тестов ... 53
- •Глава 3: Типы тестов ... 55
- •Глава 3: Типы тестов ... 57
- •Глава 3: Типы тестов ... 59
- •Глава 3: Типы тестов ... 61
- •62 Часть I: Основы
- •Глава 3: Типы тестов ... 63
- •64 Часть I: Основы
- •Глава 3: Типы тестов ... 65
- •66 Часть I: Основы
- •Глава 3: Типы тестов ... 67
- •68 Часть I: Основы
- •Глава 3: Типы тестов ... 69
- •If asc11_код__введенного_символа меньше 48
- •70 Часть I: Основы
- •Глава 3: Типы тестов ... 71
- •72 Часть I: Основы
- •Глава 3: Типы тестов ... 73
- •74 Часть I: Основы
- •Глава 3: Типы тестов ... 75
- •76 Часть I: Основы
- •Глава 3: Типы тестов ... 77
- •78 Часть I: Основы
- •Глава 3: Типы тестов ... 79
- •80 Часть I: Основы
- •Глава 3: Типы тестов ... 81
- •82 Часть I: Основы
- •Глава 3: Типы тестов ... 83
- •84 Часть I: Основы
- •Глава 3: Типы тестов ... 85
- •86 Часть I: Основы
- •Глава 3: Типы тестов ... 87
- •88 Часть I: Основы
- •Глава 3: Типы тестов ... 89
- •90 Часть I: Основы
- •Глава 3: Типы тестов ... 91
- •92 Часть I: Основы
- •Глава 4
- •94 Часть I: Основы
- •Глава 4: Программные ошибки 95
- •96 Часть I: Основы
- •Глава 4: Программные ошибки 97
- •98 Часть I: Основы
- •Глава 4: Программные ошибки 99
- •100 Часть I: Основы
- •102 Часть /: Основы
- •Глава 5: Документирование и анализ ошибок 103
- •104 Часть I: Основы
- •Глава 5: Документирование и анализ ошибок 105
- •106 Часть I: Основы
- •Глава 5: Документирование и аналт ошибок 107
- •108 Часть I: Основы
- •Глава 5: Документирование и анализ ошибок 109
- •110 Часть 1: Основы
- •Глава 5: Документирование и анализ ошибок 111
- •112 Часть I: Основы
- •Глава 5: Документирование и анализ ошибок 113
- •114 Часть I: Основы
- •Глава 5: Документирование и анализ ошибок 115
- •116 Часть I: Основы
- •Глава 5: Документирование и анализ ошибок 117
- •118 Часть I: Основы
- •Глава 5: Документирование и анализ ошибок 119
- •120 Часть I: Основы
- •Глава 5: Документирование и анализ ошибок 121
- •122 Часть I: Основы
- •Глава 5: Документирование и анализ ошибок 123
- •124 Часть I: Основы
- •Глава 5: Документирование и анализ ошибок 125
- •126 Часть I: Основы
- •Глава 5: Документирование и анализ ошибок 127
- •Глава 6: Система отслеживания проблем 131
- •132 Часть II: Приемы и технологии тестирования
- •Глава 6: Система отслеживания проблем 133
- •134 Часть II: Приемы и технологии тестирования
- •Глава 6: Система отслеживания проблем 135
- •136 Часть II: Приемы и технологии тестирования
- •Глава 6: Система отслеживания проблем 137
- •138 Часть II: Приемы и технологии тестирования
- •Глава 6: Система отслеживания проблем 139
- •140 Часть II: Приемы и технологии тестирования
- •Глава 6: Система отслеживания проблем 141
- •142 Часть II: Приемы и технологии тестирования
- •Глава 6: Система отслеживания проблем 143
- •144 Часть II: Приемы и технологии тестирования
- •Глава 6: Система отслеживания проблем 145
- •146 Часть II: Приемы и технологии тестирования
- •Глава 6: Система отслеживания проблем 147
- •148 Часть II: Приемы и технологии тестирования
- •Глава 6: Система отслеживания проблем 149
- •150 Часть II: Приемы и технологии тестирования
- •Глава 6: Система отслеживания проблем 151
- •152 Часть II: Приемы и технологии тестирования
- •Глава 6: Система отслеживания проблем 153
- •154 Часть II: Приемы и технологии тестирования
- •Глава 6: Система отслеживания проблем 155
- •156 Часть II: Приемы и технологии тестирования
- •Глава 6: Система отслеживания проблем 157
- •158 Часть II: Приемы и технологии тестирования
- •Глава 6: Система отслеживания проблем 159
- •160 Часть II: Приемы и технологии тестирования
- •Глава 6: Система отслеживании п/шч іс и | (} I
- •162 Часть II: Приемы и технологии тестирования
- •Глава 6: Система отслеживания проблем 163
- •164 Часть II: Приемы и технологии тестирования
- •Глава 6: Система отслеживания проблем 165
- •166 Часть II: Приемы и технологии тестирования
- •Глава 6: Система отслеживания проблем 167
- •168 Часть II: Приемы и технологии тестирования
- •Глава 6: Система отслеживания проблем 169
- •170 Часть II: Приемы и технологии тестирования
- •Глава 6: Система отслеживания проблем 171
- •172 Часть II: Приемы и технологии тестирования
- •Глава 6: Система отслеживания проблем 173
- •174 Часть II: Приемы и технологии тестирования
- •Глава 6: Система отслеживания проблем 175
- •176 Часть II: Приемы и технологии тестирования
- •Глава 6: Система отслеживания проблем 177
- •178 Часть II: Приемы и технологии тестирования
- •Глава 6: Система отслеживания проблем 179
- •Глава 7: Разработка тестов 181
- •Глава 7: Разработка тестов 183
- •184 Часть II: Приемы и технологии тестирования
- •Глава 7: Разработка тестов 185
- •Глава 7: Разработка тестов 187
- •188 Часть II: Приемы и технологии тестирования
- •Глава 1: Разработка тестов 189
- •190 Часть II: Приемы и технологии тестирования
- •Глава 7: Разработка тестов 191
- •192 Часть II: Приемы и технологии тестирования
- •Глава 1: Разработка тестов 193
- •194 Часть II: Приемы и технологии тестирования
- •Глава 7: Разработка тестов 195
- •196 Часть II: Приемы и технологии тестирования
- •Глава 7; Разработка тестов 197
- •198 Часть II: Приемы и технологии тестирования
- •Глава 7: Разработка тестов 199
- •Глава 7: Разработка тестов 201
- •Глава 7: Разработка тестов 203
- •204 Часть II: Приемы и технологии тестирования
- •Глава 7: Разработка тестов 205
- •206 Часть II: Приемы и технологии тестирования
- •Глава 7: Разработка тестов 207
- •Глава 8: Тестирование принтеров и других устройств 209
- •2. Затем осуществляется поиск ошибок, специфических для тестируемого класса устройств.
- •210 Часть II: Приемы и технологии тестирования
- •Глава 8: Тестирование принтеров и других устройств 211
- •212 Часть II: Приемы и технологии тестирования
- •1. Анализ рынка
- •Глава 8: Тестирование принтеров и других устройств 213
- •Глава 8: Тестирование принтеров и других устройств 215
- •Глава 8: Тестирование принтеров и других устройств 217
- •218 Часть II: Приемы и технологии тестирования
- •Глава 8: Тестирование принтеров и других устройств 219
- •220 Часть II: Приемы и технологии тестирования
- •Глава 8: Тестирование принтеров и других устройств 221
- •Глава 8: Тестирование принтеров и других устройств 223
- •Глава 8: Тестирование принтеров и других устройств 225
- •226 Часть п: Приемы и технологии тестирования
- •Глава 8: Тестирование принтеров и других устройств 227
- •228 Часть II: Приемы и технологии тестирования
- •Глава 8: Тестирование принтеров и других устройств 229
- •Глава 8: Тестирование принтеров и других устройств 231
- •232 Часть II: Приемы и технологии тестирования
- •Глава 8: Тестирование принтеров и других устройств 233
- •Глава 8: Тестирование принтеров и других устройств 235
- •236 Часть II: Приемы и технологии тестирования
- •Глава 9: Адаптационное тестирование 239
- •Глава 9: Адаптационное тестирование 241
- •242 Часть II: Приемы и технологии тестирования
- •Глава 9: Адаптационное тестирование 243
- •244 Часть II: Приемы и технологии тестирования
- •Глава 9: Адаптационное тестирование 245
- •246 Часть II: Приемы и технологии тестирования
- •Глава 9: Адаптационное тестирование 247
- •Глава 10: Тестирование документации 249
- •250 Часть II: Приемы и технологии тестирования
- •Глава 10: Тестирование документации 251
- •252 Часть II: Приемы и технологии тестирования
- •Глава 10: Тестирование документации 253
- •Глава 10: Тестирование документации 255
- •256 Часть II: Приемы и технологии тестирования
- •Глава 10: Тестирование документации 257
- •258 Часть II: Приемы и технологии тестирования
- •Глава 10: Тестирование документации 259
- •260 Часть II: Приемы и технологии тестирования
- •Глава 10: Тестирование документации 261
- •262 Часть II: Приемы и технологии тестирования
- •Глава 10: Тестирование документации 263
- •Глава 11: Инструментальные средства тестировщика 265
- •266 Часть II: Приемы и технологии тестирования
- •Глава 11: Инструментальные средства тестировщика 267
- •268 Часть п: Приемы и технологии тестирования
- •Глава 11: Инструментальные средства тестировщика 269
- •270 Часть II: Приемы и технологии тестирования
- •Глава 11: Инструментальные средства тестировщики 271
- •272 Часть II: Приемы и технологии тестирования
- •Глава 11: Инструментальные средства тестировщика 273
- •274 Часть II: Приемы и технологии тестирования
- •Глава 11: Инструментальные средства тестировщика 275
- •Глава 11: Инструментальные средства тестировщика 277
- •278 Часть II: Приемы и технологии тестирования
- •Глава 11: Инструментальные средства тестировщика 279
- •280 Часть II: Приемы и технологии тестирования
- •Глава 11: Инструментальные средства тестировщика 281
- •282 Часть II: Приемы и технологии тестирования I
- •Глава 11: Инструментальные средства тестировщика 283
- •Глава 12: Планирование и документация 285
- •286 Часть II: Приемы и технологии тестирования
- •Глава 12: Планирование и документации 287
- •288 Часть II: Приемы и технологии тестирования
- •Глава 12: Планирование и документация 289
- •290 Часть II: Приемы и технологии тестирования
- •Глава 12: Планирование и документация 291
- •292 Часть II: Приемы и технологии тестирования
- •Глава 12: Планирование и документация 293
- •294 Часть II: Приемы и технологии тестирования
- •Глава 12: Планирование и документация 295
- •296 Часть II: Приемы и технологии тестирования
- •Глава 12: Планирование и документация 297
- •298 Часть II: Приемы и технологии тестирования
- •Глава 12: Планирование и документации 299
- •300 Часть II: Приемы и технологии тестирования
- •Глава 12: Планирование и документация 301
- •302 Часть II: Приемы и технологии тестирования
- •Глава 12: Планирование и документация 303
- •304 Часть II: Приемы и технологии тестирования
- •Глава 12: Планирование и документация 305
- •306 Часть II: Приемы и технологии тестирования
- •Глава 12: Планирование и документация 307
- •308 Часть II: Приемы и технологии тестирования
- •Глава 12: Планирование и документация 309
- •310 Часть II: Приемы и технологии тестирования
- •Глава 12: Планирование и документация 311
- •312 Часть II: Приемы и технологии тестирования
- •Глава 12: Планирование и документация 313
- •314 Часть II: Приемы и технологии тестирования
- •Глава 12: Планирование и документация 315
- •316 Часть II: Приемы и технологии тестирования
- •Глава 12: Планирование и документация 319
- •Глава 12: Планирование и документация 321
- •322 Часть II: Приемы и технологии тестирования
- •Глава 12: Планирование и документация 323
- •324 Часть II: Приемы и технологии тестирования
- •Глава 12: Планирование и документация 325
- •326 Часть II: Приемы и технологии тестирования
- •Глава 12: Планирование и документация 327
- •330 Часть II: Приемы и технологии тестирования
- •332 Часть II: Приемы и технологии тестирования
- •Глава 12: Планирование и документация 333
- •334 Часть II: Приемы и технологии тестирования
- •Глава 12: Планирование и документация 335
- •336 Часть II: Приемы и технологии тестирования
- •338 Часть II: Приемы и технологии тестирования
- •Глава 12: Планирование и документация 339
- •340 Часть II: Приемы и технологии тестировании
- •Глава 12: Планирование и документация 341
- •342 Часть II: Приемы и технологии тестирования
- •Глава 12: Планирование и документация 343
- •344 Часть II: Приемы и технологии тестирования
- •Глава 12: Планирование и документация 345
- •346 Часть II: Приемы и технологии тестирования
- •Глава 12: Планирование и документация 347
- •348 Часть и: Приемы и технологии тестирования
- •Глава 12: Планирование и документация 349
- •350 Часть II: Приемы и технологии тестирования
- •Глава 12: Планирование и документация 351
- •352 Часть II: Приемы и технологии тестировании
- •Глава 12; Планирование и документация 353
- •Глава 13. Объединяющая
- •Глава 14. Управление группой тестирования
- •Глава 13: Объединяющая 359
- •360 Часть III: Управление проектами и группами
- •Глава 13: Объединяющая 361
- •362 Часть III: Управление проектами и группами
- •Глава 13: Объединяющая 363
- •364 Часть III: Управление проектами и группами
- •Глава 13: Объединяющая 365
- •366 Часть III: Управление проектами и группами
- •Глава 13: Объединяющая 367
- •368 Часть III: Управление проектами и группами
- •Глава 13: Объединяющая 369
- •Глава 13: Объединяющая 371
- •372 Часть III: Управление проектами и группами
- •Глава 13: Объединяющая 373
- •Глава 13: Объединяющая 381
- •382 Часть III: Управление проектами и группами
- •Глава 13: Объединяющая 383
- •384 Часть III: Управление проектами и группами
- •Глава 13: Объединяющая 385
- •386 Часть III: Управление проектами и группами
- •Глава 13: Объединяющая 387
- •388 Часть III: Управление проектами и группами
- •Глава 13: Объединяющая 389
- •390 Часть III: Управление проектами и группами
- •Глава 13: Объединяющая 391
- •392 Часть III: Управление проектами и группами
- •Глава 13: Объединяющая 393
- •394 Часть III: Управление проектами и группами
- •Глава 13: Объединяющая 395
- •396 Часть III: Управление проектами и группами
- •Глава 13: Объединяющая 397
- •398 Часть III: Управление проектами и группами
- •Глава 13: Объединяющая 399
- •402 Часть III: Управление проектами и группами
- •Глава 13: Объединяющая 403
- •404 Часть III: Управление проектами и группами
- •Глава 13: Объединяющая 405
- •406 Часть III: Управление проектами и группами
- •Глава 13: Объединяющая 407
- •408 Часть III: Управление проектами и группами
- •Глава 13: Объединяющая 409
- •410 Часть III: Управление проектами и группами
- •Глава 13: Объединяющая 411
- •412 Часть III: Управление проектами и группами
- •Глава 13: Объединяющая 413
- •414 Часть III: Управление проектами и группами
- •Глава 13: Объединяющая 415
- •416 Часть III: Управление проектами и группами
- •Глава 13: Объединяющая 417
- •418 Часть III: Управление проектами и группами
- •Глава 13: Объединяющая 419
- •420 Часть III: Управление проектами и группами
- •Глава 13: Объединяющая 421
- •422 Часть III: Управление проектами и группами
- •Глава 13: Объединяющая 423
- •Глава 13: Объединяющая 425
- •Глава 13: Объединяющая 427
- •Глава 14: Управление группой тестирования 429
- •Глава 14: Управление группой тестирования 431
- •Глава 14: Управление группой тестирования 433
- •Глава 14: Управление группой тестирования 435
- •Глава 14: Управление группой тестирования 437
- •Глава 14: Управление группой тестирования 439
- •Глава 14: Управление группой тестирования 441
- •Глава 14: Управление группой тестирования 443
- •Глава 14: Управление группой тестирования 445
- •Глава 14: Управление группой тестирования 447
- •Глава 14: Управление группой тестирования 449
- •Глава 14: Управление группой тестирования 451
- •484 Часть III: Управление проектами и группами
- •486 Часть III: Управление проектами и группами
- •488 Часть III: Управление проектами и группами
- •490 Часть III: Управление проектами и группами
- •492 Часть III: Управление проектами и группами
- •494 Часть III: Управление проектами и группами
- •496 Часть III: Управление проектами и группами
- •498 Часть III: Управление проектами и группами
- •500 Часть III: Управление проектами и группами
- •502 Часть III: Управление проектами и группами
- •504 Часть III: Управление проектами и группами
- •506 Часть III: Управление проектами и группами
- •508 Часть III: Управление проектами и группами
- •510 Часть III: Управление проектами и группами
- •512 Часть III: Управление проектами и группами
- •514 Часть III: Управление проектами и группами
- •516 Часть III: Управление проектами и группами
- •518 Часть III: Управление проектами и группами
- •520 Часть III: Управление проектами и группами
- •522 Часть III: Управление проектами и группами
- •524 Часть III: Управление проектами и группами
- •526 Часть III: Управление проектами и группами
- •528 Часть III: Управление проектами и группами
- •530 Часть III: Управление проектами и группами
- •532 Часть III: Управление проектами и группами
- •534 Часть III: Управление проектами и группами
- •536 Часть III: Управление проектами и группами
- •538 Часть III: Управление проектами и группами
- •542 Часть III: Управление проектами и группами
Глава I: Пример серии тестов 31
• Если программист допустит опечатку и вместо меньше 48 напишет меньше 38, программа примет не только символ /, но и девять других нецифровых символов с кодами от 38 до 47.
Для выявления этой ошибки можно проверить любой символ из этого диапазона, граничным значением которого будет код 47.
• Теперь посмотрим на самую большую цифру — 9 (АБСП-код 57). При работе с ней, вероятнее всего, может встретиться ошибка больше или равен 57 вместо равен 57. Если ввести 9, программа отвергнет этот символ как нецифровой.
Такой код неверно работает с одной-единственной цифрой — ее и нужно проверить.
• Программист может захотеть записать второе условие иначе, как больше или равен 58, но по ошибке написать больше 58. Тогда программа примет за цифру двоеточие.
• Еще одной опечаткой программиста может быть 75 вместо 57, тогда программа будет принимать за цифры все символы с кодами от 48 до 75. Эту ошибку можно обнаружить, проверив любой символ из указанного диапазона, но символа с граничным значением кода (двоеточия) будет вполне достаточно.
Для обнаружения любой ошибки, которую программист может допустить при анализе цифровых данных, достаточно проверки всего четырех граничных символов: /, 0, 9, и
Из приведенных в таблице на рис. 1.6 символов два последних мы использовали, чтобы выяснить, как программа реагирует на нецифровые данные. Тест сработал, а программа — нет. Но как быть с шестью перечисленными типами ошибок? Одной проверкой буквы А их не выявить. А буква Ь вообще ничем не поможет. Так что проверять нужно граничные символы (/, 0, 9, и :), поскольку, повторюсь, самыми эффективными являются тесты именно граничных значений.
Первый цикл тестирования. Итоги
Вы начали с простейшего из возможных тестов. Поскольку программа его прошла, вы разработали серию формальных тестов, чтобы проверить, как она работает с допустимыми данными. Эти тесты вы будете использовать и дальше. Поскольку часть проверок программа не прошла, на планирование дальнейших серий тестов вы решили времени не тратить. Вместо этого вы провели несколько неформальных экспериментов и выяснили, что
32 Часть I: Основы
программа вообще очень нестабильна. Вы записали несколько замечаний, к которым обратитесь при тестировании следующей версии программы.
Если бы программа успешно прошла первую серию тестов, вы бы разработали вторую, более обстоятельную. Если бы программа снова показала себя надежной, вы бы продолжили ее тестирование, пока не исчерпались бы идеи или отведенное время. Напоследок вы провели бы несколько беглых тестов, не входивших в ранее разработанные серии, и записали замечания на будущее.
Завершив тестирование и всю бумажную работу, стоит потратить еще немного времени, чтобы обдумать результаты. Вы выполнили самое очевидное, но это еще только начало. У вас нет пока конкретного плана. Вы просто делали то, что первым приходило в голову. По ходу работы вы определили две линии атаки. Теперь же нужно выделить время на обдумывание. Эго очень важно, даже если сроки сильно поджимают.
Второй цикл тестирования
Вы поговорили с программистом, и он сказал, что скорость работы программы исключительно важна, а вот объем кода не имеет никакого значения. Резолюции программиста на ваших отчетах представлены на рис. 1.7.
1. |
Ошибка проектирования: |
На экране нет названия программы. |
|
Резолюция: |
Не будет исправлена. |
2. |
Ошибка проектирования: |
На экране нет инструкций. |
|
Резолюция: |
Не будет исправлена. Примечание: Замечание верное, но вывод инструкций замедлит работу программы. |
3. |
Ошибка проектирования: |
Как остановить программу? |
|
Резолюция: |
Исправлена. На экране отображается подсказка: “Для выхода нажмите <Ш+С>”. |
4. |
Ошибка кодирования: |
Сумма (5) выводится в стороне от слагаемых. |
|
Резолюция: |
Исправлена. |
5. |
Ошибка кодирования: |
Программа “зависает" на отрицательных числах. |
|
Резолюция: |
Исправлена. Программа будет складывать и отрицательные числа. |
6. |
Ошибка кодирования: |
Программа интерпретирует третий введенный символ как нажатие <Еп1ег>. |
|
Резолюция: |
В работе (еще не исправлена). |
7. |
Ошибка кодирования: |
Сбой при вводе нечисловых данных. |
|
Резолюция: |
Не проблема. Комментарий: “Не делайте этого". |
8. |
Ошибка кодирования: |
Сбой при вводе управляющих символов. |
|
Резолюция: |
Не проблема. Комментарий: “См. отчет 7". |
9. |
Ошибка кодирования: |
Сбой при нажатии функциональных клавиш. |
|
Резолюция: |
Не проблема. Комментарий: “См. отчет 7”. |
РИСУНОК 1.7. Революции на отчетах первого цикла тестирования
Глава І: Пример серии тестов 33
Шаг 1. Прежде чем приступить к тестированию, внимательно прочтите резолюции программиста на ваших отчетах - вы узнаете, что нужно делать, а чего не нужно
Как видите, хорошо, что вы не разрабатывали тестов для проверки кода обработки ошибок: этого кода нет и не будет. Более того, хотя программа и будет теперь обрабатывать отрицательные числа, она будет обрабатывать их не все, а только до -9.
Числа от -10 до 199 длиной в три символа она по-прежнему не обрабатывает, интерпретируя третий символ как нажатие клавиши <Еп1ег>. Обратившись к разработанной ранее серии тестов на рис. 1.4, вы видите, что тесты с числами -99, -78 и -14 запускать не придется. Вместо -78 и -14 возьмите пару однозначных отрицательных чисел.
Очень часто программист просит протестировать остальную часть программы, в то время как он занимается исправлением уже найденных ошибок — и это разумно. Некоторые из запланированных тестов нет смысла проводить до исправления ошибки, с другими же вполне можно поработать. Если ждать, пока можно будет провести “лучшие” из тестов, можно оставить без внимания целые области программы, на которые потом уже не хватит времени. В нашем примере можно протестировать числа между -1 и -9 — так вы хоть и не полностью, но проверите, как работает сложение отрицательных чисел, вместо того чтобы опустить эту проверку вообще.
Из резолюций на ваших отчетах вы увидите, какие тесты больше проводить не нужно, а какие нужно заменить новыми. Станут ли резолюции программиста ключом к созданию новых серий тестов? Без сомнения.
Шаг 2. Проанализируйте комментарии к ошибкам, которые не будут исправлены. Возможно, следует провести дополнительное тестирование
В нашей программе хуже всего обстоит дело с обработкой ошибок. Программист не собирается исправлять ситуацию. Как же быть?
Чтобы добиться исправления ошибки, нужно продемонстрировать ситуацию, в которой ее появление абсолютно недопустимо.
Чтобы придумать самые показательные примеры недопустимого поведения программы, постарайтесь выявить суть ситуации.
2
34 Часть I: Основы
В нашем случае программа “зависает”, когда вы нажимаете определенные клавиши. Так она ведет себя с буквами, управляющими и функциональными клавишами. Фактически программа “зависает” при вводе любого недопустимого (нецифрового) символа. Программист говорит, что таких символов вы вводить не должны. С вашей же точки зрения, программа должна вести себя вежливо и не заставлять вас перезапускать компьютер каждый раз, когда вы сделаете что-то не так. Прекрасно. Теперь вернемся назад. Программа некорректно ведет себя в ответ на нажатие некоторых клавиш. Программист считает, что это не страшно, поскольку никто и не ждет, что программа примет эти клавиши.
А что, если программа “зависнет” в ответ на ввод символов, которые, по мнению пользователя, она должна принять? Если найти достаточно таких символов, программисту придется написать код для их обработки, а заодно уж он может обработать и остальные символы.
Подумаем, какие же клавиши люди могут нажимать при работе с арифметической программой. Здесь нужен мозговой штурм. Запишите все клавиши, которые человеку может прийти в голову нажать. Запишите, почему эти клавиши могут показаться уместными. Пусть вас не беспокоит, согласится ли программист с вашими предположениями — позднее вы еще пересмотрите свой список и отберете из него самое существенное. На рис. 1.8 показан список, который получился у нас.
• Цифры, конечно.
• И знак “минус”.
• Если можно нажимать “минус”, то можно и “плюс".
• Пробелы. Люди вводят перед числами пробелы, чтобы аккуратно выровнять их в столбик.
• Если можно вводить пробелы перед числом, то должно быть можно и после него.
• А как насчет арифметических операций, таких как * и / (4/3, например)?
• Знак доллара?
• Знак процента?
• Скобки - отрицательные числа часто заключают в скобки, как, например (1000) вместо -1000.
• Клавиша <ВаскЗрасе> - что, если вы случайно ввели не іу цифру?
• Клавиша <0е1е1е>.
• Клавиша сіпбєііХ Вы ввели 1 и хотите вернуться и ввесіи 7. чшбы получить 21.
• Клавиши управления курсором.
РИСУНОК 1.8. Мозговой штурм. Какие клавиши /кш. «км/иг и. шхочет нажать при вводе числа ?
Глава Г. Пример серии тестов 35
Некоторые из идей в нашем списке явно неудачны. Например, если сказать программисту, что программа не обрабатывает 4/3 + 2, он только посмеется. Но для первой версии списка это не имеет значения. Прежде всего, важно ничего не пропустить. А что внести в отчет, вы решите чуть позже.
Шаг 3. Просмотрите записи, которые вы сделали в прошлый раз, добавьте к ним новые замечание, и приступайте к тестированию
Вам страшно хочется начать с того замечательного и очень сложного теста, который вы только что придумали, не так ли? Не торопитесь. Сначала повторите старые и нудные тесты и убедитесь, что программа по-прежнему может сложить 2 и 2 и не получить при этом 5. С вероятностью 1:2 программа не сработает или в ней возникнут новые неполадки. Поэтому обязательно протестируйте все сначала.
Вы провели все “формальные” серии тестов (см. рис. 1.4), модифицировав несколько примеров для проверки однозначных отрицательных чисел. Программа все их успешно прошла.
По ходу дела вы заметили, что программа отображает подсказку “Для выхода нажмите <С1х1+С>” после каждой операции сложения. На рис. 1.9 показано, что было на экране после сложения первых двух пар чисел.
Программист говорит, что программа должна работать быстро. Тогда все, на что тратится лишнее время, является ошибкой. Вы составили следующий отчет.
10. Ошибка проектирования. На вывод на экран подсказки “Для выхода нажмите <С1г1+С>” тратится лишнее компьютерное время. Поскольку одной из задач разработки является создание очень быстрой программы, это ошибка. Почему бы просто не написать “Для выхода нажмите <0:г1+С>” внизу экрана сразу при запуске программы и никогда больше ничего не выводить в этой строчке? (И если это возможно, почему бы заодно не вывести также и заголовок программы и короткие инструкции?)
Среди ваших заметок есть напоминание проверить однобайтовые суммы. Это диапазон значений от -127 до 127 или от 0 до 255. Поскольку двузначных отрицательных чисел задавать нельзя, -127 в допустимый диапазон не попадает. Однако сложение 99 и 99 дает правильный результат, значит, все в порядке.
Однако не расслабляйтесь. Некоторые из тестов обязательно выявят проблемы, и чем тщательнее вы продумаете свои действия, тем больше обнаружите скрытых недостатков программы.
