Join chat t.me/sqaunderhood and subscribe to receive notificatons with updates.
This page collects resources for anyone considering the use of software testing and formal methods.
There are many axes along which one can organize such a list, such as the level of expertise of the intended audience (from experts to the public at large) or disciplinary orientation (computer science, mathematics, mathematical logic, etc.). Here I have chosen to classify the material by type of subject matter.
If you would like add something, just send the text as you would like it to appear to [email protected], preferrably already formatted in markdown.
- Books
- Courses
- Podcasts
- Conferences
- Workshops and interactive learning tools
- Learned lessons
- Awesome lists
- Perspectives on Agile Software Testing
- A Practical Guide to Testing in DevOps
- Programs and Proofs. Mechanizing Mathematics with Dependent Types. - Ilya Sergey @ilyasergey
- Measure Software Quality using Application Security (WIP) - Dinis Cruz
- The "A" Word - Alan Page
- Professional Software Development (Chapter: "5. Software Quality") - Mike G. Miller
- Acceptance Test Engineering Guide, Vol. I - RC1
- A Software Testing Primer (PDF)
- Classic Testing Mistakes (PDF) - Brian Marick
- Code Coverage Analysis - Steve Cornett
- Practical Software Testing - STH in association with Chindam Damodar
- A Tutorial in Exploratory Testing (PDF)
- Essential Acceptance Testing
- Embedded Software Testing Methods Juho Lepistö
- Foundations of Software Testing: Fundamental Algorithms and Techniques Aditya P. Mathur
- Introduction to software testing (PDF)
- Manual Testing Help
- Mobile Testing: Ready Reckoner (PDF) - Ajay Balamurugadas, Sundaresan Krishnaswami
- Performance Testing Guidance
- Random testing book DRAFT
- Software Testing: A Comprehensive Approach - Bill Laboon
- Software Testing Tutorial
- Software Testing Dictionary
- The Way of Testivus
- The Essential Guide to Mobile App Testing (PDF)
- UI and UX Testing: Ready Reckoner (PDF) - Ajay Balamurugadas
- What If: A collection of tips from a software tester (PDF) - Ajay Balamurugadas
- What If: 50+ tips to win testing contests (PDF) - Ajay Balamurugadas
- What If: 50+ tips to boost your productivity (PDF) - Ajay Balamurugadas
- What If: 50+ tips to improve tester-programmer relationship (PDF) - Ajay Balamurugadas
- Handbook of Software Reliability Engineering
- Mutation Testing: Better Code by Making Bugs - Filip van Laenen
- The Tao of Testing. A Field Manual for Software Engineers. - Jason Polites
- Observing and Reasoning About Errors
- The Little Black Book On Test Design -- Rikard Endgren
- Generating Software Tests. Breaking Software for Fun and Profit. -- by Andreas Zeller, Rahul Gopinath, Marcel Böhme, Gordon Fraser, and Christian Holler
- Software Testing and Analysis: Process, Principles, and Techniques -- Mauro Pezze, Michal Young (slides)
- Software Testing Glossary
- Quality Assistance and here and for youtube
- Testing Standards Working Party
- The International Software Testing Standard
- Standard for Software Component Testing (PDF)
- Everything You Need to Know About Software Test Formats (in Russian)
- Software Testing Standards in NASA
- ECSS-Q-ST-80C Rev.1 – Software product assurance
- СИСТЕМНАЯ И ПРОГРАММНАЯ ИНЖЕНЕРИЯ: ГОСТ Р 56922—2016/ISO/IEC/IEEE 29119- 3:2013
- DO-278
- DO-178B
- PHPUnit PHP Test-Driven Development - Automated Tools to Improve Your PHP Code Quality
- Practical PHP testing
- Testing Erlang
- Testing in Scala
- Test-Driven Development - Extensive Tutorial - Grzegorz Gałęzowski
- Testing and Debugging JavaScript
- Web Application Testing in Ruby Željko Filipin
- The Evolving Art of Fuzzing (PDF) - Jared DeMott
- AccelTest (PDF)
- A Step-by-Step Guide to Functional Testing with TestComplete
- HP Quality Center Tutorial
- HP QuickTest Professional Tutorial
- .NET Performance Testing and Optimization - The Complete Guide (zip) - RedGate, By Paul Glavich and Chris Farrell
- Record-Playback Test Automation: Sahi & Selenium IDE
- Selenium 2.0 Using the WebDriver API to Create Robust User Acceptance Tests
- SoapUI 101: Beginner's Guide to Functional Testing
- TestNG Tutorial
- JUnit Tutorial
- PropEr Testing - Fred Hebert
- Better Unit Testing with Microsoft Fakes
- Testing for Continuous Delivery with Visual Studio 2012
- Testing mypy stubs, plugins, and types - Nikita Sobolev
- Learn TLA+ - Hillel Wayne @hwayne
- Specifying Systems - Leslie Lamport
- The TLA+ Hyperbook - Leslie Lamport
- Books and papers about TLA+ and formal verification by Leslie Lamport
- Alloy Documentation - Daniel Jackson
- Introduction to Spin - Multiple Authors
- Software Foundations: 4.0, current, draft , epub - Benjamin C. Pierce & Co
- Verified Functional Algorithms - Andrew W. Appel
- Foundations of Computer Science - Dr Larry Paulson
- Principles of Model Checking - Christel Baier, Joost-Pieter Katoen
- Certified Programming with Dependent Types - Adam Chlipala @achlipala
- Formal Reasoning About Programs - Adam Chlipala @achlipala
- Concrete Semantics - Tobias Nipkow and Gerwin Klein @lsf37
- ML for the Working Programmer, 2nd Edition - Lawrence C. Paulson
- Proofs and Types - Jean-Yves Girard, Yves Lafont and Paul Taylor
- Proof assistants: History, ideas and future - H. Geuvers
- Introduction to Logic - Michael Genesereth, Eric Kao (Stanford University)
- An Introduction to Formal Logic - P.D. Magnus (University at Albany)
- A Problem Course in Mathematical Logic - Stefan Bilaniuk (Trent University)
- Language, Proof, and Logic - Jon Barwise, John Etchemendy
- Mathematical Logic - Helmut Schwichtenberg
- Mathematical Logic - Stephen G. Simpson (Pennsylvania State University)
- Formal Logic - Miguel Palomino
- Is Parallel Programming Hard, And, If So, What Can You Do About It? (chapters "Validation" and "Formal verification") - Paul E. McKenney @paulmckrcu
- More books...
- Formal Methods of Software Design
- Черная книга менеджера (pdf, epub, mobi) Слава Панкратов
- Белая книжная полка менеджера (epub, mobi, zip)
- Как стать менеджером (pdf, epub, mobi) - Слава Панкратов, Александр Орлов
- It starts with a great product
- Test-Driven Development in Practice - Сергей Борисов
- Тестирование программного обеспечения. Базовый курс. - Святослав Куликов
- Всё, что вам нужно знать о форматах отчётов в тестировании ПО - Сергей Бронников
- Руководство по тестированию пользовательского опыта для сайтов, мобильных приложений и прототипов
- Автоматизация тестирования от «А» до «Ы» - Gennadiy Alpaev
- Учебник по SilkTest - Gennadiy Alpaev
- Учебник по TestComplete - Gennadiy Alpaev
- Software Engineering: Introduction
- Software Debugging
- Software Analysis & Testing
- Fundamentals of TDD
- Critical Reasoning for Beginners
- Reasoning Across the Disciplines
- Discrete Mathematics and Probability Theory
- Mathematical Logic
- Engineering Ethics
- Engineering Ethics
- Software Development Process: Part 1, Part 2, Part 3
- Test Automation Universities (free)
- Black Box Software Testing course - Cem Kaner, J.D. Ph.D.
- Software Testing
- Embedded Software Testing
- Software Testing Fundamentals
- Software Testing Methods
- QA Academy
- QA and Automation course
- Software Testing and Verification
- Introduction to Software Testing
- Software Testing - Black-box Strategies and White-box Testing
- Diploma in Software Testing
- Software Testing - Testing Levels and Object-Oriented Program Testing
- Software Testing - Condition Coverage and Mutation Testing Strategies
- Software Testing Training
- Quality Center Training
- QTP Training
- Selenium Tutorials
- Selenium WebDriver Course
- Software Testing - Mauro Pezz
- Intro: Unknown vulnerability management and discovery using fuzzing
- Part 1: What are unknown vulnerabilities and why should I care
- Part 2: What is fuzz testing, and where does it fit in the world of software?
- Part 3: How and why fuzz testing, and managing your unknown vulnerabilities saves money
- Part 4: Fuzz testing techniques: unfuzzing the fuzzing
- Formal Specification
- Formal Software Verification and Formal Software Verification (previous page of the course)
- Logic, Languages, Compilation, and Verification (Youtube)
- A survey of automated theorem proving
- Tutorials and advanced lectures
- Types Project
- Introduction to Formal Systems and Computation
- CSE 814 Formal Methods in Software Engineering
Slides
- A survey of automated theorem proving - John Harrison
- Coq in a Hurry
- Introduction to the Coq Proof Assistant
- Coq Intensive - DeepSpec Summer School
- Interactive Computer Theorem Proving
- Coq tutorials
- Type Theory and Coq
- Logical Verification
- Modelling and verifying algorithms in Coq: an introduction
- Formal Reasoning About Programs
- Software foundations in Coq 0.1 - Benjamin Pierce
- Compiler Certification — Xavier Leroy
- SPIN/Promela Model Checking Concurrent Programs
- Software Verification - Natasha Sharygina
- Alloy Courses
- The TLA+ Video Course
- Dr. TLA+ Series
- Theorem Proving and Model Checking in PVS - Edmund M. Clarke
- mCRL2 System Validation: Automata and behavioural equivalences
- mCRL2 System Validation (2): Model process behaviour
- mCRL2 System Validation (3): Requirements by modal formulas
- mCRL2 System Validation (4): Modelling Software, Protocols, and other behaviour
- Основы программной инженерии, Youtube - Владимир Ицыксон
- Введение в программную инженерию
- Введение в технологию программирования
- Юнит-тестирование и метрики покрытия кода тестами
- Методы анализа и обеспечения качества ПО
- Основы тестирования программного обеспечения
- Основы тестирования ПО
- Основы тестирования программного обеспечения
- Школа автоматизации процессов разработки
- Школа тестирования баннерной системы
- Software Testing
- Software Testing 101 (на английском, на русском)
- Software Testing 102
- Software Testing 103
- Тестирование ПО
- Школа тестирования: Ручное тестирование и Автоматизация тестирования (Youtube)
- Тестирование на основе моделей (слайды), Youtube - Кулямин Виктор
- Серия семинаров по тестированию (автоматизация) - Сергей Андреев
- Тестирование ПО: Базовый уровень - курс основан на официальной программе обучения "Сертифицированный тестировщик ПО Базового уровня" ISTQB и предназначен для подготовки к сдаче сертификационных экзаменов
- Верификация программ на моделях
- Верификация параллельных и распределенных программных систем (Youtube - Юрий Карпов
- Формальные методы обеспечения качества ПО
- Верификация программного обеспечения
- Software Verification
- Введение в формальные методы верификации программ -- А.С. Камкин
- Методы верификации программного обеспечения -- В.В. Кулямин
- Формальная спецификация и верификация программ (практикум)
- Введение в язык формальной верификации Coq - Антон Трунов
- Введение в верификацию программ - Антон Трунов (спецкурс для МФТИ)
- Anki:
- Software Testing
- Foundations of Software Testing - Glossary
- ISTQB Glossary of Terms in Software testing
- Coding and Design
- Design Patterns
- Object Oriented Design Patterns
- Regular Expressions
- 106 Linux Commands
- Bash Command Line For Linux
- LPIC 101 and 102
- SQL basics
- Distributed Computing
- Learn how to design large-scale systems
- Testing Mnemonics Game
- The Deadlock Empire: Slay dragons, learn concurrency!
- Learn TLA
- tla_workshop
- test-anything
- https://math-comp.github.io/mcb/
- LibFuzzer Wokshop
- LibFuzzer Tutorial
- Interactive Z3 Guide
- Code-defenders game (mutation testing)
- RoboBUG: A Debugging Game
- Robot ON! A Program Understanding Game
- FireFinder
- Threaded Paws: A Concurrency Game
- Verigames
- Edukera
see podcasts
- NASA Public Lessons Learned System
- Flight Software Engineering Lessons
- Forum on Risks to the Public in Computers and Related Systems
- CPU Bugs
- Illustrative Risks to the Public in the Use of Computer Systems and Related Technology
- Wikipedia: List of software bugs
- Postmortems
- Resources for Teaching with Formal Methods
- Fuzzing testing by secfigo and by cpuu
- Mutation testing
- Chaos Engineering
- Static analysis
- TAP (Test Anything Protocol)
- Awesome Testing
- Symbolic execution
- History of symbolic execution
- awesome-provable
- Visual regression testing
- UI Automation Tools
- List of verification and synthesis tools
- Testing of distributed systems
- SecLists - collection of multiple types of lists used during security assessments, collected in one place.
- Awesome Falsehood
- Awesome Appium
- Awesome AutoIt
- Awesome Coq
- Awesome Selenium
- Awesome Tsung
- Awesome JMeter
To the extent possible under law, Sergey Bronnikov has waived all copyright and related or neighboring rights to this work.