Testing and Analyzing Correctness in Concurrent Systems: From Microprocessors to IoT and Distributed Systems