首页 > 其他 > 详细

软件测试理论知识学习

时间:2019-03-15 11:25:51      阅读:161      评论:0      收藏:0      [点我收藏+]

 

技术分享图片

 

善于学习,善于总结,从我做起,从现在开始!
     
技术少女的旧时光

技术分享图片

一、软件测试的分类:

 

1)单元测试:对程序中单个子程序或具有独立功能的代码进行测试。一般来说,要根据实际情况去判定其具体含义,如C语言中单元指一个函数,

  Java里单元指一个类,图形化的软件中可以指一个窗口或一个菜单等。总的来说,单元就是人为规定的最小的被测功能模块。

  单元测试是在软件开发过程中要进行的最低级别的测试活动,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。

 

2)集成测试:集成测试是在单元测试基础之上的,先通过单元模块组成系统或者子系统,    在进行测试,

  主要是检查模块之间的接口是否正确。它最简单的形式是:把两个已经测试过的单元组合成一个组件,测试它们之间的接口。

  所有的软件项目都不能摆脱系统集成这个阶段。

 

3)系统测试:是对整个系统的测试,将硬件、软件、操作人员看作一个整体系统测试是针对整个产品系统进行测试,

  检验它是否有不符合系统说明书的地方,以及软件系统的正确性和性能等是否满足其需求规格的要求。

 

4)验收测试:验收测试是部署软件之前的最后一个测试阶段,在软件产品完成了单元测试、集成测试和系统测试之后,

  验收测试的目的就是确保软件准备就绪,向用户展示该系统能够满足使用者的需求。

 

如图所示:

技术分享图片

 

 

白盒测试、黑盒测试、灰盒测试

 

       白盒测试与黑盒测试,主要是根据软件测试工作中对软件代码的可见度进行的划分。

 

1??、黑盒测试

    所谓的黑盒测试,我们可以把它理解为一个黑色的盒子,我们不知道它里面具体构造如何,我们要测试的是每个功能点是否可用,

    是否满足客户需求规格,黑盒测试是从用户的角度,从输入数据与输出数据的对应关系出发进行测试,

    它只检查软件功能是否按照需求规格正常使用,不考虑内部逻辑结构,其实主要就是针对于软件界面和软件功能进行测试。

 

2??、白盒测试

    顾名思义就是一个透明的盒子,我们能看见盒子中内部结构是怎样的,我们需要了解程序内部逻辑结构、对所有逻辑路径进行测试。

    检查程序中的每一条逻辑是否按预定要求来完成。白盒测试法的覆盖标准有逻辑覆盖循环覆盖和基本路径测试。

    其中逻辑覆盖包括语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合和路径覆盖。

 

3??、灰盒测试

    主要介于黑盒测试于白盒测试之间。

    灰盒测试多用于集成测试阶段,既关心输入数据与输出结果的正确性,同时也需要关心内部结构表现,

    只不过所关心的不像白盒测试那样详细、完整,它只是通过一些现象、事件、标志来判断内部的运行状态,

有的时候输出的数据是正确,但内部其实已经发生错误。

 


 

二、功能测试:

 

        主要检查实际功能是否符合用户的需求。由测试人员手工去执行测试用例,通过键盘鼠标等输入一些参数,并观察返回结果是否符合预期结果,细分种类如图所示:

 

技术分享图片

1)冒烟测试:

      对一个新版本进行大规模的系统测试之前,先验证一下软件的基本功能是否实现,是否剧本可测性。

 

2)回归测试:

      在开发修改了旧代码后,重新进行测试以确认修改后没有引入新的错误或导致其他代码产生错误。

      回归测试一般是在进行第二轮软件测试开始的,验证第一轮软件测试中发下问题是否得到修复,当然,

  回归也是一个循环的过程,如果回归的问题不通过,需要开发人员修改后再次进行回归,知道所有问题回归通过为止。

 

3)随机测试:

      在测试中所有输入数据都是随机生成的,目的就是模拟用户的真是操作,并发现一些边缘性的问题。    

      随机测试可以发现一些隐蔽的错误,但是也有很多缺点,例如测试不系统,无法统计代码覆盖率和需求覆盖率,

  发现的问题难以重现,一般是在测试的最后执行,

 

4)安全测试:

        在产品开发基本完成至发布阶段,对产品进行检验以验证产品符合安全需求定义和质量标准的过程。

        安全测试现在越来越受企业重视和关注,因为由于安全性的问题造成的后果是不可估量的,尤其是互联网产品,最容易受到各种安全攻击。

 


三、分层的自动化测试

 

技术分享图片

 

测试金字塔(Test Automation Pyramid)迈克科恩在2009年的著作Succeeding with Agile:Software Development using Scrum (《Scrum敏捷软件开发》)

中提到,在这本书中,自动化测试金字塔被定义为一种三层的金字塔形结构,是一种自动化测试过程的金字塔形策略结构。

最下层是单元测试,单元测试是自动化测试策略稳固的根基,因此也是金字塔结构的最底层;最上层是用户界面,通常用户界面是脆弱的,

测试和修改的经济成本和时间成本较高;中间服务层是为了过渡用户界面和程序单元而设计的,认为所有应用程序都由各种服务组成,

服务是指实现某一具体功能的程序集合,服务通过对输入进行响应而体现。

 

技术分享图片

 

1)单元接口自动化测试

        对软件中的最小可测试单元进行检查和验证,java中的单元是指一个类,图形化的软件中是指一个窗口或一个菜单等。

    总的来说单元测试就是人为规定的最小的被测的功能模块。规范的进行单元测试需要借助单元测试框架,

    如java语音的Junit、TestNG、C#语言的Nunit,以及Python语言的unittest,pytest等。

 

2)接口自动化测试

    接口测试是对系统或组件之间的接口进行测试,接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。

    接口测试属于第二层服务集成测试范畴。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。

 

3)UI自动化测试

    UI界面是用户使用的入口,所有的功能都会通过该层展示给用户,也会该层中进行集中测试,早期主流的的自动化测试主要有:

    UFT、Watir、RobotFramework、Selenium等,除了UI层测试外,前端代码也需要测试,前端技术主要javaScript脚本语言,

    而Qunit就是针对js的有个强大的单元测试框架。在金字塔中每一层测试的投入比例都要根据产品的实际特征来划分,

    在《Google测试之道》一书中提到,产品类型划分为:小测试、中测试、大测试,采用10%、20%、70%的比例对应UI、Service、Unit层。

 

技术分享图片  欢迎关注,等你来撩!

 

技术分享图片

 
 
  

软件测试理论知识学习

原文:https://www.cnblogs.com/-pyj/p/10535802.html

踩
(0)
赞
(0)
   
举报
评论 一句话评论(0)
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!