This document discusses various software testing techniques including: - Equivalence partitioning which divides input data into equivalent classes to reduce the number of test cases. - Boundary value analysis which tests at the boundaries of input domains to identify errors. - Decision table testing which deals with combinations of inputs and outputs through a table. - State transition diagrams which define a system by its states and transitions between states based on rules. - Use case testing which identifies test cases by describing how actors use the system from start to finish. Examples are provided to illustrate each technique.