The Internet of Things (IoT) has revolutionized the way we interact with technology and devices. Several IoT systems are being deployed across diverse domains, including but not limited to health, transportation, agriculture, and manufacturing. They fulfill critical tasks and, thus, must function correctly and securely and meet the users' expectations. However, testing IoT systems poses many challenges, primarily due to their distributed nature, dynamism, and heterogeneity as well as the multiple layers of which they are composed, i.e., device, edge, cloud, and application layers. The absence of testing guidance can hinder the quality of IoT systems. Testing guidelines, including taxonomy, are vital for proper IoT systems testing. In the context of software testing, taxonomy organizes and categorizes testing aspects, helping testers to understand what, how, and when to test. However, no IoT systems testing taxonomy exists, and traditional software testing taxonomy may not sufficiently meet IoT systems testing requirements. To address this, we introduce an IoT-specific testing taxonomy, informed by a review of 83 primary studies and validated through surveys with 16 IoT industry practitioners. We assess its effectiveness by conducting an empirical evaluation with 12 testers. The results show that our taxonomy can help IoT testers become more efficient by fostering their understanding of various aspects of testing IoT systems. This taxonomy can help the testers to increase test coverage, enhance the efficiency and effectiveness of testing efforts, and ensure thorough testing of important system aspects, thus ensuring functional correctness, improving the security of IoT systems, and better meeting users' expectations.