一提起软件工程,给人的第一印象往往是软件的开发。我们从一个新手逐渐成长为一个能编简单程序的程序员,往往都是从编程语言,数据结构,算法等软件开发的相关知识起步。但开发过程中的调试等工作,往往只是很简单地使用在语句间夹杂输出语句来判断程序运行错误或逻辑错误的原因。这学期开始学习的软件测试课程补足了我们在软件工程中这一块知识的空白。
学习编程已有很长时间,未学习软件从测试前,我们使用的测试用例往往很单一,程序中应对用户的输入考虑的也十分不周全。比如当我们制作一个卡牌游戏时,往往默认用户执行的都是正确地操作,程序流程中处理的逻辑也是按照正确操作执行的。又比如我们制作一套web系统,我们潜意识中往往默认用户是善良的,因此程序在接受用户输入时并没有做什么处理。以上这些在我们学习软件测试技术前可能没有这种全面思考的习惯,导致非法输入、恶意输入被放进我们的程序中,造成毁灭性的后果。
软件测试给我们的启发不仅仅是检测自己已完成是否有缺陷、错误、bug,更重要的是在软件开发的过程中,我们处理用户输入将会更加严谨。学习完这门课程,我们再开发应用时都会有这样的观点:用户都是不可信任的。所以我们处理输入也将考量各种情况,程序应对各种输入都有一套处理方法,并给出正确的响应,而不是导致程序崩溃,更严重的结果甚至导致不怀好意的用户通过输入获取数据库中他人信息。