[Рецензія] Effective Software Testing
Test Engineering NotesВчора я дочитав чергову книгу на тему тестування - Effective Software Testing. У сьогоднішньому дописі я хочу поділитися своїми враженнями від книги та відповісти на головне питання - "Чи варто купляти та читати її?"

Про що ця книга?
Книга "Effective Sofware Testing" зовсім нещодавно побачила світ у видавництві Manning. Написав її Dr. Maurício Aniche - асистент професора у Delft University of Technology (Нідерланди).
Як можна побачити із назви - книга розповідає про сучасне тестування. Книга спрямована у першу чергу на розробників. Але ми ж з вами також пишемо (та читаємо) код, чи не так?
В книзі автор розповідає у чому полягає тестування та чому тестувати свій код важливо для кожного розробника. Взагалі уся вона спрямована на те, щоб показати набір підходів та інструментів для тестування, якими володіють розробники.
На сторінках Effective Software Testing - дуже багато прикладів коду. Причому усі приклади я доречними та підкреслюють ту чи іншу думку автора. Приклади коду наведені у книзі мовою програмування Java. Але варто пам'ятати, що підходи - універсальні, а подібні інструменти можна знайти у будь-якому стеку технологій. До того ж - приклади коду не тривіальні (не один і той же калькулятор з одним методом).
Крім того, в кінці кожного розділу автор пропонує відповісти на тестові питання (для закріплення матеріалу). Більшість питань доволі цікаві - їх можна легко задавати на співбесідах автоматизаторів.
Додатково до власних думок про той чи інший вид тестування, Maurício пропонує посилання на багато наукових робіт чи просто статей у блогах. І не завжди наукові роботи підтверджують правильність наведеного матеріалу. Усі наукові роботи також наведені у кінці книги. (Буде, що мені почитати після того, як я прочитаю купу робіт з блокчейну :))
Читаючи цю книгу, мені не один раз спадала думка, що книгу можна використовувати у вигляді навчального посібника на курсі тестування в університеті (на якійсь Compuer Science спеціальності) - так усе структуровано та написано. (Або на курсах нормального тестування).
Я не можу сказати, що якийсь розділ книги є зайвим. Єдине, що не до кінця розкрито у книзі (а можна було б більше) - це теми mutation та fuzzing тестування.
У підсумку можу сказати, що Effective Software Testing - це найкраща технічна книга що я читав з часу Кабанчика. Причому, якщо Кабанчик був більше теоретичний - то тут кожна теоретична частина розглядається разом із практикою.
Гаразд, але що конкретно я дізнаюся з книги?
- Чому взагалі потрібно писати багато різних тестів
- Що значить ефективне та систематичне тестування
- Як пояснити розробнику базові техніки тест дизайну
- Які види тестового покриття коду бувають (та як його рахувати)
- Чим відрізняються контракти, валідація та інваріанти
- Як ефективно застосовувати property-based тестування у Java
- Коли потрібно користуватися Mock фреймворками, а коли це - зайве
- Що таке testability та як його досягти
- Коли потрібно писати інтеграційні та системні тести
- багато іншого...
Чи варто читати цю книгу?
Так - якщо ви розробник та хочете більше дізнатися про те, які тести та яких рівня потрібно писати.
Так - якщо ви SDET або займаєтеся автоматизацією так хочете дізнатися про інструменти тестування та testability.
Ні - якщо ви тестувальник початківець, який тільки-но почав кар'єру в IT. Багато користі ця книга вам не принесе.
Ні - якщо ви шукаєте конкретних відповідей по конкретному фреймворку чи бібліотеці