软件测试(英语:Software Testing),描述一种用来促进鉴定软件的正确性、完整性、安全性和质量的过程。换句话说,软件测试是一种实际输出与预期输出之间的审核或者比较过程。
引言
很多同学在大学时期,并不理解为什么要软件测试。绝大部分人认为自己做开发的时候,就可以顺便测试软件。那么我们为什么需要做测试开发呢?在这篇文章里,我们一起来看看。
最开始的迷茫
很多程序员都经历过这样一段迷之自信的时光,他们相信自己写出来的东西一定不会有Bug。就和很多刚拿到驾照一两年的人,会觉得自己的技术很好,很喜欢开快车是一个道理的。马克思说,量变积累到一定程度必然引起质变。入门编程,就是一个从0到1的量变,经过一段时间的学习之后,我们不断的在增加的量变。当量已经达到我们自己觉得没有什么好增加的时候,我们就会迷之自信。但这个时候,很多人都不知道,我们还没有引起质变,这个世界还有很多未知等待着我们探索。
在大学时期,大部分同学的项目都是课程设计。当课程设计结项之后,我们是不会再维护这个项目的。这个时候,测试开发其实也无关紧要。因为项目不会长期维护,我们也不会往这个项目添加新的功能。所以当我们在开发时,没有发现Bug,那也就决定了这个项目是基本没有Bug的。
意识到不对
随着对编程的不断深入,我阅读了不少优秀的开源项目。我发现这些优秀的开源项目都有一个共同的特点,那就是都做了单元测试。这个时候,我开始对自己产生怀疑。为什么这些大佬、大神都要写测试代码呢?这其中应该有我目前所不知道的理由。
市场有大量测试开发岗位
打开BOSS直聘、智联招聘等招聘平台,我们可以看到有很多测试开发的岗位。如果说测试开发不重要的话,那么为什么那么多公司都在招测试开发的员工呢?
项目在维护之后出现Bug
读大二的时候,我开发了一个长期维护的项目(南苑聚合)。这个项目在于服务全校同学,为全体同学提供便利的校园服务。因此这个项目需要对接学校信息一体化系统。开发这个项目的时候,我还处于一种迷之自信的状态,我觉得我的代码,在我开发的时候,检测过没有Bug,他就是没有Bug。最后的结果很多同校的朋友都知道,南苑聚合出现过很多次Bug,比如说不能登录,从教务系统获取课程表失败等等。
这些Bug是由很多因素造成的。可以很确定的是,第一个上线的版本是没有Bug的。那么后面为什么又会出现Bug呢?
第一个因素:这个项目需要对接学校信息一体化系统。当学校的系统升级时,接口可能会改变,这就会导致系统出现Bug。
第二个因素:基于关系型数据库开发的项目,都具有一定的系统耦合度。当项目添加新功能的时候,开发者可能会忘记修改耦合的模块,这也会造成系统Bug。
这个时候,我开始意识到测试开发的必要性。如果我写了测试代码,那么我只需要在每次维护系统的时候,跑一遍测试代码,就可以确认是否有遗漏的耦合模块未修改、是否有已改变的接口未同步。
尝到好处
最近我在开发一个较复杂的商用后台系统,这也是断更很多天的原因(这和我自己懒是绝对没有关系的)。因为这是一个商用系统,那么他如果出现Bug的话,会造成比较严重的后果。所以我第一次在我的项目中敲下了测试代码。
目前这个系统正在处于初级的开发阶段(只完成了16个接口),基于白盒测试的思想,我已经写了很多的测试用例(50个测试用例)。
如果没有写这50个测试用例,那么每次维护系统之后,就要花大量的人工、大量的时间,去测试系统。这就得不偿失了。
推荐阅读
欢迎关注我的公众号“编程小日常”,原创技术文章第一时间推送。