首页 > 代码库 > 答读者问(7):有关实习、毕业论文及软件开发和测试的关系等问题
答读者问(7):有关实习、毕业论文及软件开发和测试的关系等问题
最近收到一位研究生朋友的邮件,让我想到自己研究生毕业之前,也曾有过很多的疑惑,希望得到过来人的解答。互联网不仅是我们最好的老师,同时也是最好的桥梁。我们都要感谢并善于利用它。
闲话不说,言归正传。邮件原文如下:
周前辈,您好
我是XXX研究生,我叫XXX。专业是信息与通信工程。现在研二,过了暑假马上就研三了。我在CSDN上无意间看到您的一些文章,写的很好,感触很多。所以就一直在关注您!
下面我简单说下我的情况,我本科和研究生到目前,还没有工作过,也没有实习过。这个暑假,我找了一个实习,是XXX公司的软件测试实习生,因为看到XXX这个公司是一个很不错的公司,再加上自己没有过实习经验,所以自己想去实践下。
因为之前自己一直想着自己毕业后的工作方向是软件开发,然后现在是找了个软件测试的工作,所以自己有点矛盾,我想问下您对软件开发和软件测试的看法,网上找的很多都是复制的。我想听听前辈您真实的看法。自己身边缺少您这样的人,有的时候在工作方面的迷茫不知向谁请教。
还有就是今天我跟我导师说了我去实习的事,我导师同意了。但是他也说我的毕业论文方面的进展不能落下,暑假过后的得看到一些成果。自己想想,去实习后,肯定会影响毕业论文方面的进度,一想到毕业论文和实习之间的矛盾,我就有点心烦,矛盾起来,心里不是滋味。但是这种心情又不能对身边的人说。我导师的学生不多,我毕业论文的方向是图像取证,就我一个人在搞,而且导师自己也不懂,没有接触过,然后自己身边的人也没有做这个方向的,所以在做这个的时候没有人讨论请教,弄的比较艰难。所以,加上这些因素,我就有点烦。以及马上就秋季校招了,得复习工作方面的一些东西,所以时间还是很紧张。感觉自己有多的事情啊,忙不过来似的。
希望能得到您中肯的建议,谢谢您的阅读,辛苦了!
我的答复如下:
学弟,你好!
感谢你对我的信任。我写博客的宗旨就是分享自己的经验,表达自己的看法。只要大家能够从中学到哪怕是一丁点的东西,我的目的也就达到了。
你叫我“前辈”,我愧不敢当,我只不过是比你早几年工作而已,我也是在工作中慢慢地学到了一些东西。建议你叫我“学长”更好,呵呵。
从你发的邮件中,我得到了如下信息:
(1) 你从上大学到现在没有实习或工作中,这对于像我们这种理工科的学生来说,是一个找工作的劣势,要尽量弥补。因为现在单位招人,都希望新人能够很快上手,节约单位的成本,所以还是要求(虽然没有在招聘广告中写出来)即使是应届毕业生,也有实习或工作经验。
(2) 你对于写论文和找工作很是矛盾,不知道该如何选择。确实,对于即将毕业的学生来说,心里矛盾的地方还有很多,比如:是实习还是写论文?是去做开发还是测试?是回家工作还是留在发达地区?等等。我也是过来人,其中的酸甜苦辣也很有体会。
(3) 你不知道软件开发和测试的区别和联系是什么?你或许认为软件测试没有什么技术含量,觉得搞软件测试学不到什么东西。
我总认为,事情一多的时候,每个人都不免会手忙脚乱,但我们做事应该把握重点,事也分轻重缓急。下面说一下我的看法:
(1) 对于是去实习还是在学校写论文的问题,我认为从你目前的情况来看,尽量还是去实习为好。为什么呢?因为你还是想毕业后就去工作,那么有一个实习的经历,对于找工作还是有一些帮助的。至少你在自己的简历上,可以写上自己到某某公司实习过,面试官问起来,也可以说上几句。当然,希望你在实习的时候能够认真工作,学到一些东西,那么这些东西一定会在未来的某个时候帮你的忙的。既然是去实习,你就先不要在乎是开发还是测试了,我有很多同学实习的时候,也是做的测试,但最后也都找到开发相关的工作了。你不用担心测试学不到东西。
(2) 对于写论文的事情,如果你选择出去实习了,那么肯定要辛苦一点,平时下班之后多花点心思在论文上。根据我的经验,研究生的毕业论文并不难写,主要是如何找到创新点。对于找创新点的问题,请参考我的博文《写大论文的一些注意事项(续):我是如何找到创新点的?》(http://blog.csdn.net/zhouzhaoxiong1227/article/details/6891966)。另外,你说“身边的人也没有做这个方向的”,那么这个时候,你可以利用学校图书馆去下载一些经典的“图像取证”方面的小论文和大论文来看,总结一下别人是如何写的?创新点是什么?你该如何着手来写?等等。在写大论文之后,你一定要多阅读一些你研究方向相关的论文,并做好笔记(这个非常重要)。等你积累得多了,创新点自然就会有了,正所谓“滴水石穿”、“水到渠成”嘛。
(3) 有关软件开发和软件测试的区别和联系。我本人是做软件开发的,但我也要对自己写的程序进行测试。在我们公司,也有专门的测试人员。
软件开发人员主要做这几件事情:
1) 对软件需求说明书进行评审,弄清楚要开发一个什么样的软件。
2) 编写软件详细设计、单元测试和集成测试规程文档。软件详细设计文档是最重要的文档,在里面,要写清楚自己程序的流程、函数设计、异常保护考虑等。在动手写程序之前,一定要将软件详细设计文档写好,等评审通过了再写代码。
3) 编写代码,用程序实现软件的功能。很多人认为的软件开发就是写代码,其实这是一种很狭隘的理解,写代码在整个开发流程中,只占了很小的部分。
4) 程序写好之后,开发人员要对它进行单元测试和集成测试(也叫自测),确保程序的正确性。这里就出现了“测试”二字,但与软件测试所做的“测试”是不同的,他们做的是“系统测试”。等自测通过之后,并且相关文档也写好之后,就可以提交程序版本,供测试人员进行相对专业的测试了。
软件测试人员主要做这几件事情:
1) 搭建测试环境。这个是很重要的,也是比较难的事情。什么是“测试环境”呢?就是说,不管什么软件,都有个运行的条件,如操作系统类型、参数设置及配套软硬件设施等,这些统称为“环境”。为了保证程序功能的正确性,要在软件发布之前,尽量模拟软件实际的运行环境,这就是搭建测试环境时要做的事情。很多软件在正式商用之后出问题,就在于测试的时候没有还原现场的环境所致。
2) 对软件进行系统测试并输出测试报告。所谓系统测试,就是指将配套的所有软件都运行起来,看一下所有的功能是否正常。当出现问题的时候,要及时和开发人员联系,以修正软件缺陷。
3) 指导现场人员安装软件程序,并在必要的时候亲自出差到现场去安装软件。因此,测试人员也可能会经常出差的。
软件开发和测试人员要做的主要事情就是这些。总的说来,开发人员编写的程序要比测试人员多很多,但“七十二行,行行出状元”,这并不意味着测试就没有前途,他们对整个系统的把握要比开发人员好一些。如果你做事比较细心,那么去搞软件测试也未尝不可。
以上便是我个人的一点看法,请参考。希望你好好把握剩下的不长的在校时光,并找到满意的工作。感谢你对我的信任,请继续关注本人博客。
周兆熊
2014-7-13
(本人微博:http://weibo.com/zhouzxi?topnav=1&wvr=5,微信号:245924426,欢迎关注!)