这是软件工程实践第四次个人博客作业,任务要求:在软件测试章节中,我们介绍了不少VSTS的软件测试工具,请使用一些其他平台上的测试工具,并写博客介绍如何在你的项目中具体使用。

  首先去查了一下VSTS的意思,百度百科:VSTS的全称是Visual Studio Team System,是由微软开发的一套具有高生产力、高集成性、可扩展的生命周期开发工具,VSTS使得整个开发团队拥有更好的沟通与合作,并且保证了更好的质量。对于VS有一点了解,之前用过Visual Studio来编写C和C++,现在电脑上装有Visual Studio Code,可以用VScode运行很多不同的语言,这个和eclipse一样,是个集成开发的软件。这个学期主要学习了安卓的开发和java的深入学习,使用了eclipse软件进行Junit测试,在网页上使用IDE测试网站,寻找Bug,可以导出side文件。

  因为对软件测试工具没有深入的了解,在平时的代码测试中,都采用了人工测试,简单的输入,测试运行结果是否与预想的相同。而软件测试这一门课,颠覆了我的认知,原本的我认为软件测试就是我的软件达到了预期的效果,没有找到bug就可以了,虽然之前的项目有很多bug,但是偷懒,没有去找,去修改bug,在代码的实现上存在了许多不严谨的逻辑。在百度百科中,对软件测试给出了这样的解释:软件测试(英语:Software Testing),描述一种用来促进鉴定软件的正确性、完整性、安全性和质量的过程。换句话说,软件测试是一种实际输出与预期输出之间的审核或者比较过程。软件测试的经典定义是:在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。在自动化的时代,也出现了许多自动化测试工具,帮助我们更好的对代码进行测试完善,虽然现在还在头疼着实现功能,而并不是去发现bug,对安卓和java的使用并不是很娴熟。

  在编写java代码和安卓开发的过程中,出现了许多问题,像我之前开发的小程序,根本用不到测试工具,主要是达到我的预期效果,只要达到了,就不会去测试其他环节,不过,这样也有很多麻烦,有时候一小部分代码不会出错,一到合并的时候就出现了很多问题,然后就在疯狂的找bug,时间也就浪费过去了。还记得第一学期做C语言的开发,做一个管理系统,是真的头疼,当时对cpp文件的使用并不是很好,想着把不同功能的代码分开存放,可是就是合不起来,最后还是把所有的代码放在了一个cpp文件中。当时的测试和debug就是不断的编译运行,然后根据报错来修改错误。

  从软件测试这门课中,我们最开始做的是用例分析的实验报告,对我们测试的项目或网站进行用例分析,我记得我测得就是博客园的注册账号的测试,不得不说,博客园的账号密码要求真复杂,我不仅忘记了密码,还忘记了账号,还好我记得邮箱,可以通过邮箱找回账号和密码。在软件测试的实验中,我们还是用了IDE,一个相当于记录操作的软件或者说可以在浏览器上配置使用的很方便的一个工具,虽然我只用过一次,我只知道它能够把我的每一步记录下来,还可以回看步骤,这个和我在后面用到的badboy有点类似,不过badboy真的是跟不上时代了,版本太低了,上一次的小组作业对创客贴网站的测试都无法显示出具体的界面,还真是对着乱点。IDE可以保存到本地,生成一个Side文件,突然忘记那个叫什么IDE,去查了一下,认识了一下IDE,集成开发环境。后面没有用到过,我也没有安装,这就有点尴尬了。

  在测试方面我们主要使用Junit和JMeter的使用,利用Junit对java类方法的测试,测试复杂度,压力测试,单元测试,性能测试等。我使用JUnit对几个类进行了测试,还没说JUnit是什么呢,百度百科:JUnit是一个Java语言的单元测试框架。它由Kent Beck和Erich Gamma建立,逐渐成为源于Kent Beck的sUnit的xUnit家族中最为成功的一个。 JUnit有它自己的JUnit扩展生态圈。多数Java的开发环境都已经集成了JUnit作为单元测试的工具。JUnit是对软件中最小可测试单元进行检查和验证,我们也刚好是对java的每一个类进行了测试。

  在JUnit的使用中,我印象最深的还是下面这个绿色的进度条,因为绿色就代表我们对了,不用改bug了,看到红色,想到安卓开发满满的红色波浪,一个人找bug的痛并快乐着,那么JUnit的好处是什么,自动判断啊,可以一下子测试很多方法,只需要看是不是绿色的就可以判断是否通过。想想每次新加了其他功能,相同的部分还是要重新测试,每一次的测试都多花一点时间,也是十分的麻烦,在后面的更改后,前面的代码是否受到了影响,安卓开发就是,每次添加点功能,我就需要把所有实现的功能再手动测试一遍,一天下来,效率很低,主要的时间就是一遍遍测试自己的代码,为什么不写完再测试?我怕是想放弃,才这样去做,写完很多代码,然后红红的一片,错误都不知道从哪里开始改起,各种问题,各种红色的英文,想想就可怕。

  在测试图标的时候,就出现了问题,但是不是我改图标的问题,而是我把图标和软件标题一起改了,我在安装的时候,软件安装成功了,但是运行不了,在这里我就折腾了半天,我以为是图标的问题,一直以为是直到我新建项目,重新复制,把错误之前的代码进行测试,再添加新的内容再进行测试,才发现是我的那个notitle出现了问题,然后我就把这个给删掉了。

  在我们的安卓项目中,有很多的Button,所以我每一次运行,都要测试我的Button,还要看布局是否匹配我的手机,仅仅是我的手机型号,明明在xml的design界面好好的,一到手机上运行就变了样。调整布局和一遍遍的测试按钮,再加上等待软件运行,安卓运行得本来就不快,这样一来,大部分的时间就用在了测试上面。

  不同的手机型号分辨率不同,显示的图片和控件会错位,我在布局的调节上不知道花了多长时间,主要是每一次都需要重新运行,一次运行需要一分钟,我每添加一部分功能就测试一遍,再加上测试失败debug的过程,一天能做的事情就变得少了,可以说那些红色的错误提示,和一大串的英文,让我头疼,想想很多人也停留在了debug上,软件的更新很快,问题也很多,各种兼容问题,不想吐槽win10,刚使用win10的时候,老师给的安装包都是win7 xp可用的,win10不兼容,可以说我们在安装的步骤上就停留了很长的时间,也并不是我们不想学,我在eclipse上配置安卓环境可以说是真的头疼,总共配置了四五次,每一次配置就是一整天,各种兼容问题,各种报错,复制,百度,可以说每次都是查到吐,终于最后在实验室的电脑上配置好了,而我自己的电脑死活配不上。而android studio的安装,我已经安装了十几次安卓,自己安装,帮同学安装,感觉非常不好,安卓和win10真的是废。可以说安卓的安装把很多人困倒了,还没迈开步就被绊倒了。

  JMeter接口测试的使用,我主要进行了HTTP请求,刚开始遇到了一些问题,在输入网址的时候多加了http://,在执行的时候看到的只有红色,经过几次观察,才发现有一个地方出现了http://http://,自然而然地想到是多输入了http://,还有在协议地选择上,刚开始输入了https,后来发现还是有错误,通过百度的帮忙,总算解决了问题。在HTTP请求的测试中,可以看到线程增加,访问人数增多,网站就开始出现了错误,出现无法访问的错误。我突然想起来之前测试校园网,发现如果不退出账号,重新从官网登陆,不论密码账号正确错误与否,都会登陆之前的账号,这个bug是在测试过程中发现的,可能我们在开发的时候可能就想不到,其实我也没想到,用了那么久,我才第一次发现。所以说测试真的十分重要,自动化测试可以帮助我们更好更快的敲代码。

  在我们的安卓代码中,并没有怎么采用自动化测试工具,更多的是人工测试,还是白盒测试,对测试的方面进行的不是很好,因为在代码的实现上,也很勉强,主要是采用执行查看结果,一遍遍测试是否达到我预期的效果。

  这是几张JMeter使用的图,通过修改线程组数据,对网站进行性能测试,如果我们人工的话,莫非就需要几千个人同时登陆,那么没有发布之前该如何测试呢,可以说这个工具让软件在发布之前进行了完善,减少了发布后更大的经济损失,可以把开发成本降低。越早发现错误,成本越低,不用在编写完之后,更改需求,重新编写,1000种改需求的理由,程序员的痛苦。

  使用测试工具可以减少我们一遍遍手工测试的时间,测试工具还可以帮我们找到我们难以发现的错误,所以说,我还是赶紧学会使用自动化测试工具为妙。