如何做好软件测试(总结)

软件测试是软件行业中非常重要的一个环节,甚至可以说其重要性比开发更加重要。​

写下此文的初衷

​ 作为一个开发者,最近在公司也做起了测试的工作,之前没有怎么接触过软件测试,也是一脸茫然,虽然在之前的公司和测试的同事很熟,从她们那里也了解到了测试的一些相关的知识,但也只是皮毛而已。最近应某人的要求,我查询了一下相关的资料并且结合自己的实际经历,因此写下这篇自己对软件测试的一些见解,以及学习测试的一些资料整理。

软件测试的发展

​ 软件测试是伴随着软件的产生而产生的,早期的时候,软件规模很小,复杂度低,软件的开发过程也混乱无序,测试的环节基本上是由开发人员完成的,开发人员将测试等同于调试过程,基本上没有专门的测试人员介入。

​ 到了上世纪80年代,随着软件行业的蓬勃发展,软件趋向于大型化,复杂化,单纯的开发人员测试已经无法满足需求了,这时就出现了专门的测试人员,一些软件测试的基础理论和实用技术也开始形成,并且为软件开发制定了各种流程和管理办法,软件的开发过程也逐渐发展到了结构化开发,并且更加注重软件的质量,从此,测试不单单是一个发现错误的过程,并且是作为了软件质量保证(SQA)的主要职能。从此,软件测试不再是简单的测试,而是作为开发后期的活动,与整个开发流程融为一体,成为软件生命周期中不可或缺的一部分,软件测试也成为了一个专业,需要运用专门的手段和方法,需要专门的人员来承担。

​ 在上世纪90年代,随着软件行业的迅速发展,软件的规模变得非常大,由于当时基本是手动测试,测试的效率非常低,在软件测试过程中需要花费大量的人力和时间成本,随着软件复杂度的增加,也会出现一些使用手动测试无法完成的场景,于是,很多测试实践者开始尝试开发商业的测试工具来支持测试,辅助测试人员完成某一类型或某一领域内的测试工作,而测试工具逐渐盛行起来。随着测试工具的发展,软件的自动化测试程度大大提高,也让测试人员从之前的繁琐测试中解脱出来,因此,自动化测试慢慢的火起来了,自动化测试工具有很多,如捕获/回放工具、Web测试工具、性能测试工具、测试管理工具、代码测试工具等等,虽然好多工具都要收费,但是在china,没有不能破解的软件,随便baidu一下都能找到破解的方法。

如何学习测试

对于一个从来没有接触过测试的人员来说,学习测试有两条路选择

  • 找培训机构,跟着培训机构的老师学习,这是最省事的办法,认真学习就可以了。
  • 如果自己的自制能力比较强,也很爱学习,完全可以自己看书,网上找资料自学测试,毕竟测试的门槛很低

其实我是比较建议自学测试的,可能时间长点,但是很锻炼学习能力,我之前大学的时候选的专业并不是计算机,但是毕业后也从事了开发的工作,我并没有报读任何培训班,也是自己看书,找资料学习的编程,虽然遇到了很多坎坷,但是在这个过程中也会有很大的提升。

测试基础知识

​ 作为一个测试的话,测试基础理论知识是必须要学的,最好能够理解,然后用自己的话复述出来,虽然在工作中,可能感觉用不到,但是这些基础知识是进军测试行业必须要的,毕竟在面试的时候,很多面试官会问这些基础知识,如果连这些基础知识都不清楚,那么可能第一步你就失败了。

​ 那么测试的基础有哪些内容呢?

测试的定义

测试的分类

测试的方法

测试的生命周期

测试计划

测试方案

测试策略

测试用例的编写

BUG的定义

BUG的分类

BUG的六要素

BUG的生命周期

测试和开发流程的关系

瀑布流

V字形

W字型(双V)

螺旋型

敏捷等等

戴明环

5W2H等分析管理的方法

质量管理体系CMMI(了解)

注:我不是专业做测试的,测试的这些基础也是网上查询资料所得,每一条都需要自己去了解

关于测试基础,我网上搜罗了一些资料,放在云盘了,可以参考一下(点击下载 提取码: r5y8)

测试工具

​ 关于测试,会有好多工具,其实没必要每一个工具都精通,对于几个基础的工具会用就行了,以后对于其他的工具有需求再学就可以了。现在好多工具都实行傻瓜式操作,我们需要做的操作很少,上手起来很快。

​ 下面说一下测试过程中常用的一些工具

  • 性能测试工具:loadrunner、jmeter
  • 接口测试工具:postman (挺好用的一个工具,能够实现任何形式的http请求,可以安装客户端版,也可以在chrome中使用插件的形式安装,不过这个软件需要登陆账号,可以使用google账号登陆,但是需要科学上网才行)
  • 抓包工具:fiddle (非常好用,对于app接口调用及数据交互获取很实用)
  • 数据库管理工具:Navicat、HeidiSql(Navicat 需要收费,Heidisql是一款免费,也挺好用的)
  • 项目/bug管理工具:禅道,redmine
  • 搜索:百度,谷歌(做开发的都比较喜欢用google)

如果学好以上的工具的使用,那么对于测试这份工作,基本可以胜任了,在后面就是一些测试方法和测试思想的提升。这些工具的下载,可以直接官网下载,或者百度下载别人pojie的。

后面会整理一下这些工具的使用方法,有兴趣的可以参考一下。

编程语言的使用

学会了测试的基础和工具的使用,那么就正式踏入了测试的大门,成为了一个初级的测试工程师了,接下来就是要考虑测试的发展方向了。

测试大致分为以下几个方向:

  • 自动化测试工程师
  • 性能测试工程师
  • 安全测试工程师那么选择哪个方向比较好呢,看到别人写的一篇文章,可以参考一下。https://www.zhihu.com/question/34426895/answer/235063852此阶段,就要开始学习代码了,我推荐javapython两种语言。所以如果有人是开发转测试,那么在这方面就会有一定的优势,毕竟你有一个开发者的思维。

    对于编程语言的学习,当然不用像开发一样学的那么深入,毕竟人的精力是有限的,只需要学习java和python中的一种就可以了,java只需要学习javaSE的部分就足够了,python会基本部分就可以了。

    然后就是对于数据库的操作,目前使用比较多的是mysql,可以学习mysql 的基本增删改查,当然,复杂的连接查询,多表查询也可以学习一下,以后总会用的到的。

mysql:

python

自动化方向

编程语言学会后,就可以学习自动化测试了,查找了一些自动化测试的框架。

  • 单端测试框架:unittest(python)、pytest(python)、JUnit(java)
  • WEB自动化测试框架:selenium(适用于java\python\javascript)
  • APP自动化测试框架:appium(适用于java\python\javascript)

根据学习的语言选择对应的框架进行学习,这些框架的教程网上太多,可以直接找别人的博客,或者视频教程进行学习。有编程基础后,这些内容应该会很容易就能弄懂。

性能方向

  • 工具的使用对于性能测试,主要使用到的就是loadrunner和jmeter,需要对这两个工具有更深入的理解,能够手动书写脚本,脱离录制。
  • 脚本的编写能够使用java/python书写多线程脚本,不使用工具对系统进行压测。
  • linux 的掌握毕竟服务器都是使用的linux,需要熟悉linux的基本操作。
  • 系统架构学习通过学习系统的架构,分析系统的瓶颈,从而更有效的提升系统的性能。

其实如果性能测试做到一定的地步,基本就达到了架构师的水平了。

安全方向

对于安全测试,更加偏向于网络攻防,就是我们常听到的黑客。

主要包括一下几个方面:

  • 渗透测试
  • sql注入
  • 暴力破解
  • 脱库
  • 等等

具体细节,自己网上查找资料。

总结

以上对做一个测试要学习的东西和测试的方向做了简要的说明,后面会整理一下测试的工具使用方法。测试需要使用的那些工具,使用都很简单,只要肯花时间,认真学习,就会很快的跨入测试的大门,当然还需要学习一些面试的技巧,毕竟只有面试过了,进入公司了才能正式成为一个测试。

转载需保留链接来源:VCBeta.CN » 如何做好软件测试(总结)

赞 (0)