软件测试(Software Testing),描述一种用来促进鉴定软件的正确性、完整性、安全性和质量的过程。近来,软件测试行业发展迅速,企业越来越重视测试了。越来越多的人加入了测试大军中,很多人也想通过自学来学习软件测试技术加入这个行业,但是现在软件测试的书籍越来越多,也良莠不齐,而且软件测试涉及的技术也越来越多。
软件测试概述、
程序+文档+数据=软件
狭义的软件测试定义:为发现软件缺陷而执行程序或系统的过程
广义的软件测试定义:人工或自动地运行或测定某系统的过程,目的在于检验它是否满足规定的需求或弄清预期结果和实际结果间的差别
为什么要做软件测试
发现软件缺陷
功能错
功能遗漏
超出需求部分
性能不符合要求
软件质量高低:是否符合用户习惯、符合用户需求
测试的任务
找出
定位
修改
修改后要做回归测试,对已修改的部分进行再次的测试,避免引入新的错误
测试用例的定义和组成部分
测试用例是为特定的目的而设计的一组测试输入、执行条件和预期的结果。测试用例是执行的最小实体。简单地说,测试用例就是设计一个场景,使软件程序在这种场景下,必须能够正常运行并且达到程序所设计的执行结果。
包含
用例ID
用例名称
测试目的
测试环境
前提条件
测试步骤
预期结果
其他信息
软件测试的原则
所有的测试都应追溯到用户的需求
尽早地和不断地进行软件测试(缺陷具有放大的特点,测试成本随阶段深入而上升)
2-8原则
测试中发现的错误80%很可能起源于程序中的20%
提前测试可发现80%,系统测试找出剩余bug的80%(总体的16%),最后的4%可能只有用户大范围长时间使用后才暴露出来
80%的工程用在20%的需求上(即关键需求)
…
软件缺陷的寄生虫性:找到的缺陷越多说明软件遗留的缺陷越多
避免自己测试自己的程序
回归测试:避免引入新的错误
软件测试流程
制定测试计划->测试设计->测试开发->测试执行->评估测试
注意
测试不是开发后期的一个阶段
测试入门其实稍容易,但要求技术一样高
测试多数情况下不能覆盖所有输入
不要“有时间多测,没时间少测”
软件测试不止是测试人员的事,也是开发人员的事
调试和测试不一样
测试绝非只运行一下软件看结果对不对
软件测试的根本目的是确保软件满足用户需求
软件测试的目的在于箴言被测软件系统是否满足规定的需要,即保证被测软件符合用户需求是软件测试的最终目的,换句话说,只要软件系统不符合用户需求,就认为其存在缺陷,必须进行处理。因此,用户需求是测试的唯一依据,也是缺陷判定的依据。
那么怎样成为一个好的测试工程师?
作为一名软件工程师,需要的能力并不多,但是要成为一名优秀的软件测试工程师,需要的能力就比较多了,自己整理出来8个方面,每个方面都会分成很多细小的方便并进行举例说明。
《优秀的软件测试工程师必备的“8个能力”》
一、业务分析能力
1.分析整体业务流程
不了解整个公司的业务,根本就没办法进行测试
2.分析被测业务数据
了解整个业务里面所需的数据有哪些?哪些是需要用户提供的?哪些是自己提供的?有哪些可以是假数据?有哪些必须是真数据?添加数据的时候可以用哪个库?
明白了整个软件的数据库架构,才能知道哪一个数据是从哪一个表里头带出来的,它的逻辑是什么,有没有连带关系。
3.分析被测系统架构
用什么语言开发的?用的是什么服务器?测试它的话需要用什么样的环境进行测试?整体的测试环境是什么样的?
如果缺少了,需要进行环境搭建,架构搭建。一般去一家新公司之后,架构是搭建好的,了解它即可,熟悉之前的这些老员工们使用什么样的架构发表去做的。
4.分析被测业务模块
整个软件有哪些模块,比如说首页面、注册页面、登录页面、会员页面、商品详情页面、优惠券页面等等
明白有多少个模块需要测试,每个模块之间的连带关系,进而怎样进行人员分工
5.分析测试所需资源
我需要几台计算机,需要几部手机,手机需要什么样的系统,什么样的型号。
比如测一个网站的性能的时候,电脑的配置达不到测试并发5000人的标准,要么升级电脑的硬件配置,要么多机联合,多机联合时需要几台电脑,都需要提前筹划。
6.分析测试完成目标
我的性能目标是什么样的?我的功能目标是什么样的?我要上线达到的上线标准是什么样的?性能目标,比如我要达到并发5000人的时候,CPU占用率不能高于70%,内存占用率不能高于60%,响应时间不能超过5秒功能目标,比如整体的业务流程都跑通,所有的分支流程都没有问题,所有的接口都能够互相调用,整体的UI界面没有问题,兼容性没有问题等
把这些问题都弄清楚,测试的思路会非常的清晰
二、缺陷洞察能力
1.一般缺陷的发现能力
至少你要满足一般缺陷的发现能力,这个是最基本的,如果要连最简单的一般的缺陷都发现不了的话,别说优秀测试工程师了,你说你是测试我都不信
2.隐性问题的发现能力
在软件的测试过程当中有一些缺陷藏的比较深,有的是性能方面的问题,有的是功能方面的问题,它需要有一些设定特定的条件的情况下才会出现这样的问题。
比如说买双鞋必须选择的是什么品牌,必须选择是红颜色,必须选择44号,而且必须选择用特定的支付方式才会出现这样的bug的时候,那么这种就属于特别隐性的bug,对于这样的问题的发现能力一定要比别人更强,要找到一些别人可能发现不了的bug。
3.发现连带问题的能力
当发现了一个缺陷之后,能够想到通过这个缺陷可能会引发其他哪个地方出现问题,这就叫做连带的问题。而不是说发现这一个bug之后提了这一个就算完了,一定要有一个察觉,可能其他地方也存在这样的问题。
软件测试学习群:672899761,欢迎来学习交流,免费学习资料可供下载