Functional testing types include: - Testing functionality according to requirements - Testing web services interfaces and compliance with standards - Conducting testing for software version changes and data migration Non-functional testing types include: - Performance testing to ensure systems meet specified performance levels - Load testing to identify bottlenecks and determine behavior under heavy loads - Stress testing to detect errors under excessive operational capacity - Compatibility testing to ensure applications work in different environments - Security testing to adopt security procedures and probe for vulnerabilities - Usability testing to evaluate from an end-user perspective