Quantum software design and testing