软件测试需要掌握哪些知识