Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
книги хакеры / Питер_Гудлиф_Ремесло_программиста_Практика_написания_хорошего_кода.pdf
Скачиваний:
16
Добавлен:
19.04.2024
Размер:
9.23 Mб
Скачать

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

Контрольныеm

вопросы

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

209Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

w

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

.c

 

 

.

 

 

 

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

ливым кодом. Нельзя начинать заниматься тестированием и проблема% ми качества, когда разработка подходит к концу – это нужно делать с самого начала, разрабатывая и прогоняя тесты одновременно с кодом.

Хорошие программисты…

Пишут тесты для всего своего кода (возможно, даже преж# де самого кода)

Тестируют на микроуровне, чтобы не осложнять тестиро% вание на макроуровне глупы% ми ошибками кодирования

Заботятся о качестве продук% та и несут за него ответствен%

ность,

принимают

участие

в общей

процедуре

тестиро%

вания

 

 

Плохие программисты…

Не считают тестирование важной и необходимой частью разработки программного продукта, а также

своей обязанностью

Передают непротестированный код в отдел QA и очень удивляются, когда обнаруживаются ошибки

Осложняют себе жизнь тем, что об% наруживают ошибки слишком поздно, не проводя тестирования на ранних этапах, когда выявить ошибки гораздо проще

См. также

Глава 9. Поиск ошибок

Что делать при обнаружении сбоя – процедура поиска и исправле% ния ошибок.

Глава 20. Рецензия на отстрел

Анализ кода как прием тестирования – ручная форма статического анализа кода.

Контрольные вопросы

Подробное обсуждение этих вопросов можно найти в разделе «Ответы и обсуждение» на стр. 615.

 

 

 

 

hang

e

 

 

 

 

 

 

C

 

E

 

 

 

X

 

 

 

 

 

-

 

 

 

 

 

d

 

F

 

 

 

 

 

 

t

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

to

 

 

 

 

w Click

 

 

 

210m

 

 

 

 

w

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

.

 

 

 

 

 

.c

 

 

p

 

 

 

 

g

 

 

 

 

df

 

 

n

e

 

 

 

 

-xcha

 

 

 

Вопросы для размышления

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

Глава 8. Время испытанийClick

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

w

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

.c

 

 

.

 

 

 

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

1.Напишите комплект тестовых примеров для кода определения наи% большего общего делителя (greatest_common_divisor), приведенного в начале главы. Постарайтесь проверить как можно больше случа% ев. Сколько отдельных контрольных примеров у вас получилось?

a.Сколько успешно прошло?

b.Сколько не прошло?

c.С помощью своих тестов найдите ошибки и исправьте код.

2.Каковы различия между тестированием приложения электронной таблицы и системы автоматического пилотирования самолета?

3.Нужно ли тестировать тестовый код, который вы пишете?

4.В чем разница между тестированием, проводимым программистом, и тестированием в отделе QA?

5.Нужно ли писать набор контрольных примеров для каждой отдель% ной функции?

6.Существует методика, требующая сначала писать тесты, а потом код. Какого рода тесты вы стали бы писать?

7.Следует ли писать тесты для C/C++, чтобы проверить правильность обработки параметров, имеющих значение NULL (нулевых указате% лей)? В чем ценность такого теста?

8.Первоначально тестирование может происходить не на той плат% форме, для которой пишется код – она может быть недоступна для вас. Что лучше – отложить тестирование, пока вы не получите в свое распоряжение целевую платформу, или начать его сразу?

Если код предназначен для работы в другой среде (например, на мощном сервере или во встроенном устройстве), как обеспечить адекватность тестирования?

9.Как определить, что проведено достаточно тестов? Когда можно ос# тановиться?

Вопросы личного характера

1.Для какой части своего кода вы пишете тесты? Вас это удовлетворя% ет? Входят ли ваши тесты в процедуру автоматизированной сбор% ки? Как вы проводите тестирование остального кода? Адекватно ли оно? Собираетесь ли вы изменить свою процедуру?

2.Какие у вас отношения с сотрудниками отдела QA? Какое мнение у них сложилось о вас?

3.Как вы обычно поступаете, обнаружив ошибку в своем коде?

4.Пишете ли вы отчет по каждой обнаруженной в коде проблеме?

5.Какой объем тестирования обычно осуществляют инженеры про%

екта?