Skip to content

Commit 12cd6c0

Browse files
committed
Небольшие правки и дополнения в man 3.1
1 parent 3052183 commit 12cd6c0

File tree

2 files changed

+16
-12
lines changed

2 files changed

+16
-12
lines changed

manuals/3/0__qa_equivalence_classes/article.md

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
# Классы эквивалентности и граничные значения
22

3-
Выделение =классов эквивалентности= и анализ =граничных значений= -- два базовых взаимно-дополняющих друг друга подхода для тестирования программ.
3+
Выделение =классов эквивалентности= и анализ =граничных значений= -- два базовых взаимно дополняющие друг друга подхода к тестированию программ.
4+
5+
Давайте разберём их на примере следующей задачи.
46

57
> **Задача 1:**
6-
Подготовить тестове данные для проверки правильности работы программы вычисления модуля целого числа. На вход программе поступает произвольное значение типа `int`.
8+
Подготовить набор тестовых данных для проверки корректности работы программы вычисления модуля целого числа. На вход программе поступает произвольное значение типа `int`.
79

810
Листинг 1. Программа my_abs.c v.0.1
911
```c
@@ -48,13 +50,13 @@ int main(void)
4850
Тест 2: 25
4951
```
5052
51-
Собственно, уже даже этих тестов хватит, чтобы выявить проблему в нашей программе:
53+
Уже этих тестов хватает, чтобы выявить проблему в нашей программе -- сценарий для положительных чисел работает неправильно.
5254
5355
![](./my_abs_test_1.png)
5456
55-
Исправим нашу программу:
57+
Исправим программу:
5658
57-
Листинг 1. Программа my_abs.c v.0.2
59+
Листинг 2. Программа my_abs.c v.0.2
5860
```c
5961
#include <stdio.h>
6062
@@ -77,12 +79,12 @@ int main(void)
7779
}
7880
```
7981

80-
Теперь программа будет корректно работать на первом наборе тестовых данных.
82+
Теперь программа будет корректно работать на подготовленном ранее наборе тестовых данных.
8183

8284

83-
### Анализ граничных значений
85+
## Анализ граничных значений
8486

85-
Ошибки в программах очень часто возникают на границах между классами эквивалентности. Поэтому, помимо представителей классов стоит протестировать значения на самой границе и рядом с ней.
87+
Ошибки в программах очень часто возникают на границах между классами эквивалентности. Поэтому, помимо представителей классов стоит проверить работу программы на самой границе и рядом с ней.
8688

8789
Очевидная граница для нашей задачи -- это значение `0`.
8890

@@ -100,15 +102,15 @@ int main(void)
100102

101103
Чуть менее очевидными являются крайние значения, связанные с ограниченным объёмом типа `int`.
102104

103-
В моём компиляторе тип `int` занимает `4` байта, а потом минимальное и максимальное значения будут равны `-2147483648` и `2147483647`, соответственно.
105+
В моём компиляторе тип `int` занимает `4` байта, а потому минимальное и максимальное значения будут равны `-2147483648` и `2147483647`, соответственно. О том, как вычислить эти занчения самостоятельно смотри первое практическое задание [здесь](https://youngcoder.ru/lessons/4/math_function) (другой вариант, где ничего вычислять не требуется, указан в конце урока).
104106

105107
Значит надо дополнить наш набор тестов значениями:
106108
`-2147483648`, `-2147483647`, `2147483647`, `2147483646`.
107109

108110
Значения `-2147483649` и `2147483648`, находящиеся с другой стороны границ, включать не требуется, т.к. по условию задачи на вход программе поступают лишь значения типа `int`.
109111

110112

111-
Дополните тестовый набор указанными значениями и снова запустим проверку программы:
113+
Дополним тестовый набор указанными значениями и проверим программу на новом тестовом наборе:
112114

113115
```
114116
// Справа от теста указан результат проверки
@@ -127,7 +129,7 @@ int main(void)
127129
Результат работы программ Листинг 2 на шестом тесте:
128130
![](./my_abs_test_2.png)
129131

130-
В рамках типа `int` исправить эту проблему не получится, т.к. число `2147483648` превосходит максимальное значение (`INT_MAX` из заголовочного файла `limits.h`), которое может храниться в переменной типа `int`. Поэтому этот случай придётся признать исключительным и аварийно завершить программу:
132+
В рамках типа `int` исправить эту проблему не получится, т.к. число `2147483648` превосходит максимальное значение, которое может храниться в переменной типа `int`. Поэтому этот случай придётся признать исключительным и аварийно завершить программу:
131133

132134
Листинг 3. Программа my_abs.c v.1.0
133135
```c
@@ -140,7 +142,7 @@ int main(void)
140142
scanf("%d", &x);
141143

142144
if (x == INT_MIN)
143-
return 1;
145+
return 1; // завершаем программу с ошибкой
144146

145147
if (x < 0)
146148
abs_x = -x;
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,4 @@
11
## Практика
22
**1.** Используя набор тестов, составленных на уроке, протестируйте работу библиотечной функции `abs(x)`.
3+
4+
**2.** Значения `INT_MAX` и `INT_MIN` заданые в заголовочном файле `limits.h`. Найдите его на своём компьютере и посмотрите, чему равны эти значения. Сравните результаты ваших вычислений с этими значениями. Если она не совпадают, значит вы где-то допустили ошибку.

0 commit comments

Comments
 (0)