Про правила та їх однозначне розуміння

Привіт друзі! Читав ту різні цікаві статті в Інтернеті, і на кількох різних ресурсах зустрів дуже схожі за описом проблеми. Вони не мають прямого відношення до тестування, швидше до математики, правил та вимог (тобто про задротство 🤓, не можу таке пропустити).

Власне проблеми були опубліковані вище, як вирішити наступні вирази:
1) 2x : 2x =
2) 5 : 1/5 =

Коли ми навчаємо тестуванню, ми завжди розказуємо, що воно базується на математиці, особливо техніки тест дизайну. А математика – фундаментальна наука, з відомими і зрозумілими всім правилами. Мова, зрозуміла кожному. Правила, аксіоми та теореми – гарна аналогія ідеальних вимог до ПЗ: повні, однозначні, тестовані, і т.д.

А тепер до суті.
✅ В математиці є пріорітет операцій. Множення та ділення виконуються до додавання та віднімання, тобто 2 + 2 * 2 = 6.
✅ Дужки можуть змінювати пріорітет операцій, наприклад (2 + 2) * 2 = 8.
✅ Знак множення у виразах з невідомими та дужками можна не писати, тобто 2х == 2 * х

А тепер повернемось до наших виразів
1) Якщо рахувати буквально, то 2x : 2x = 2 * х : 2 * х = x^2, але багато хто в Інтернеті та навіть в деяких навчальних посібниках сприймають вираз 2x : 2x = (2x) : (2x) = 1. Ось вам і однозначність 🤷‍♂️ Не можу навіть звинуватити, що хтось неправий (мозком розумію, що варіант 1 більш правильний, але сам спочатку порахував за варіантом 2). Сам же, щоб запобігти такій неоднозначності, в програмуванні та математиці користуюсь дужками. В моєму коді в математичних вираз дійсно багато дужок. Хто бачив про приколи з приведенням типів в тому ж JS, певне, теж так роблять

2) Другий вираз здається простішим, але в твітері розгорнувся цілий срач про результат 5 : 1/5 = ❓. Я цей вираз рахую як 5 : 1 : 5 = 1, оскільки це все операції ділення. Інший “табір” стверджує, що його треба сприймати тільки як 5 : 0,2 = 25, тобто сприймати 1/5 не як операцію ділення двох чисел, а як число! Операція ділення / має пріоритет над : ? Щоб запобігти двозначності в таких випадках, я завжди рекомендую користуватись єдиним способом позначати операції.

Як бачите, навіть в таких фундаментальних речах, як запис математичних виразів можуть бути баги (чудова відмазка, чому не знайшов той баг з прода 😁). Тому не втрачайте пильності!

Позначки:
29 Квітня 2021
Автор: 
  • Неочевидний баг
  • ISTQB CTEL. Improving the testing process
  • Нас > 500
  • З Днем Тестувальника!

Залишити коментар

Залишити вiдгук