软件测试基本介绍
一,软件测试定义
通过手工或者工具对“被测对象”进行测试操作,从而验证实际结果与预期结果之间是否存在差异。
(打一巴掌还一口,差异就是bug简称缺陷)
二,软件测试的作用
1,通过测试工作可以发现并修复软件当中存在的缺陷,从而提高用户对产品的使用信心。
2,测试可以记录软件运行过程中产生的一些数据,从而为决策提供数据支持。(12306购票,同一时间访问量没有考虑到,测试过程中设定1亿用户到10亿用户,公共网络某一时段)
3,测试可以降低同类型产品开发遇到问题的风险(让别人先去看看,自己再去,实验品,同类型:qq-微信)
三,测试原则
所谓的测试原则指的就是我们在执行测试工作时必须要遵守得一些原则
1,测试证明软件存在缺陷(无论做多少只能证明当前软件是有缺陷的)
2,不能执行穷尽测试(没有办法把所有情况都罗列出来,所以任何的测试工作都与结束的时候),(从现在到死都测不完,进公司一年就测一个功能点,测得的很全,肯定不要你)
3,缺陷存在群集现象(28理论,核心=20%,非核心=80%)
(qq功能常用的核心功能很小的一部分20%, 其他功能80%都不是核心功能,核心功能抢占市场,要集中所有的人力物力财力测核心功能,100人测20%,1人测80%。 那种测出问题的机率大? 100双眼睛盯着一个人发现的多。 会发现更多的缺陷=缺陷群集)
在实际工作中我们会集中测试20%的核心功能,所以这个部分发现缺陷的几率就会高于80%。因此我们就会遇到缺陷都集中在20%功能模块里的现象
4,某些测试需要依赖特殊的环境(南北方温度不同,手机电池低温下未做测试)
5,测试应尽早介入:为了更多的发现和更好的解决软件中的缺陷,我们追求测试工作尽早的展开
(发现bug 开发人员要改 改完保证没有问题不行 你说没问题就没问题啊,必须在测试,关联测试,牵一发而动全身)
6,杀虫剂现象:同样的一个测试用例不能重复的执行多次,因为软件会对她产生免疫(产生抗体,)
(我告诉你2.3+3.7不等于6 你会怎么做呢?想尽一切办法去做改成好用的,所以再测试的时候就不能在用同样的数据,所以开发人员讨厌测试人员)
7,不存在缺陷谬论
(我的软件没问题?谬论,指鼻子骂他。)
测试对象介绍
对于当前的测试行业来说我们最经常测试的主体就是软件(主体功能),但是需要我们明白的是一个软件也不仅仅只有功能需要测试。我们可以将软件分为三个部分组成:
功能集合+使用说明书+配置数据
配置数据:默认提供给客户的也要是对的(冰箱)
地图软件,淘宝打开有东西吧 默认数据 为了让客户快速的看到网站默认的东西
手机买回来会自带的软件都属于配置数据
对于一款软件来说从无到有需要一个过程,我们把可以将这个过程分为不同阶段,然后每个阶段都会有相应的测试
1,需求分析阶段:各种需求规格说明书
(用户有可能怎样用,用户按照他的操作会得到一个什么样的结果,写出来 测试人员拿到这个说明书进行设计,不要觉得这个连软件都没有要怎么测呢,字错了都算测试,不是所有的功能都能实现,不可行的需求,测试阶段提出建议,半年之内从地球到火星,可能吗?)
2,软件架构设计:API接口文档(接口测试)
设计的概念:房屋构造
Cto:首席技术执行官,不需要做底层代码编写,站在一定的高度,把整个公司的框架搭起来,要实现多少个功能,每个功能有多少个模块,每个模块又有多少个小的模块,画好了出一套文档,程序员拿到了做开发工作
接口文档 接口测试
3,编码时间阶段:源代码(白盒测试,黑盒测试)
a,确定想法做什么 b,怎么做,c,动手做
这一阶段我们测试对象是源代码(如果测试人员也会代码,那就是两个程序员,成本太高,)
如果可以的话就可以给客户用了
4,系统功能使用(测试阶段):这一阶段测试对象是软件功能主体,当前行业做的最多的一种测试
相当于让测试人员充当客户,对功能主体进行验证,OK了,拿到市面上给客户用
总结:不要认为测试的对象就是软件,这是狭义的错误的,
软件本身有三个部分组成:
1,软件有一堆的功能指令,(关闭,最小化)功能说明书,使用人员要培训
2,默认的配置数据(拿到客户面前给客户看的时候第一次展示的内容,是对的)
3,一款软件从没有到有需要很多阶段,作为测试人员每个阶段都有要测的东西(测试需求文档,测试api文档,测试源代码,测试主体功能)
测试级别
软件的开发都会依据相应的开发模型,则测试级别指的就是在这个模型当中我们认为定义的开发步骤。其中对于测试来说我们最常见的一种级别分类如下:
1,单元测试(UT unit test):在软件测试中单元指的就是组成软件最小的底层代码结构,一般就是类,函数,组件(当下的软件测试行业,不会可以要求测试人员对源代码进行测试,谁开发谁测试)
小区的单元,小模块进行测试
就是对底层的源代码进行测试,组成构成当前源代码最小的部分,
常见的有三种类型:类,函数,组件(不明白代码没事,找到集合,最小的组成部分)
不管界面多漂亮 ,只管底层的代码对不对,逻辑结果对比不对
2,集成测试(IT system ingertation test):
将不同的多个单元模块组合在一起,然后验证它们之间沟通的“桥梁”是否能正常工作(换成人话:接口测试 )
单元是最小部件,集成就时组合在一起,
例一:小汽车,雨刷,挡风玻璃。组合三米长的雨刷和挡风玻璃在一起不行了。
例二:两人没结婚前没事,一结婚在一起天天吵架
3,系统测试(ST system test):这是当前行业做的最多的一种测试,有测试人员充当用户然后对软件的功能主体进行测试
4,验收测试:
核心:为了让用户为这个软件进行买单(不是为了挑毛病,)
例子:我是包工头,在外边几经周折接了一个小工程,前期需要投钱进去比如100万,把楼盖出来了,然后找让我盖楼的(托关系才接到的活)人来验收,看看我盖的怎么样,当我让他验收时是希望她找到毛病还是不希望。肯定是不希望。我不可能自己花了100万然后跟他说你给我挑挑毛病吧,那不是我有毛病吗
(1)α测试---内测(公司内部,测试开发在一起)
(2)β测试---公测(提问题,反馈,邮箱反馈,奖励)
(3)UAT(user acceptance test)测试---由客户派出本公司业务精通人员来使用该软件,从而对功能进行测试
客户花钱买软件,客户觉得你们懂技术但不一定懂我们的业务,所以客户要站在自己的业务需求角度,派出本公司业务精通人员来对软件进行使用测试(场景)