软件测试基本方法(六)之集成测试和系统测试

在软件开发中,经常会遇到这样的情况,单元测试时确认每个模块都能单独工作,但这些模块集成在一起之后会出现有些模块不能正常工作。例如,在chrome环境下用js写了一个实时捕捉video中特定区域的模块,正常工作;利用worker线程进行webgl场景渲染,也正常;可是当两个运算合并时,出现一个模块不能正常运行,原因在于两个模块不适合在worker线程中结合,基于worker本身的局限性,只能有一个模块正常工作。所以,很有必要进行集成测试。

(1)集成测试定义:

集成测试是将软件集成起来,对模块之间的接口进行测试。

(2)集成种类:

  • 模块内的集成,主要是测试模块内各个接口间的交互集成关系
  • 子系统内的集成,测试子系统内各个模块间的交互关系
  • 系统内的集成,测试系统内各个子系统和模块间的集成关系

(3)两种集成测试模式:

  • 非渐增式测试模式:先分别测试每个模块,再把所有模块按设计要求放在一起结合成所要的程序,如大棒模式
  • 渐增式测试模式:把下一个要测试的模块同已经测试好的模块结合进来进行测试,测试完后再把下一个应该测试的模块结合起来测试。渐增式测试又可以根据每次添加模块的路线分为自顶向下测试自底向上测试混合测试等方式

优缺点:

  • 渐增式需要编写的软件较多,工作量较大,而非渐增式测试开销小
  • 渐增式测试模式发现模块间接口错误早,而非渐增式测试晚
  • 非渐增式测试模式发现错误,较难诊断,而使用渐增式测试模式,如果发生错误则往往和最近加进来的那个模块有关
  • 渐增式测试模式测试更彻底
  • 渐增式测试模式需要较多的机器时间
  • 使用非渐增式测试模式,可以并行测试

具体方法:

  • 自顶向下法:从主控模块开始,沿着软件的控制层次向下移动,从而逐渐把各个模块结合起来。(优点:不需要驱动程序,能在早期发现上层错误;缺点:需要桩,低层错误发现较晚,在早期不能展开人力)
  • 自底向上法:从原子模块开始集成以进行测试。
  • 混合策略:基本使用Top-down,但在早期使用Bottom-up;对中较上层,使用Top-down,中较下层,使用Bottom-up。
  • 大棒法:先是对每一个子模块进行测试(单元测试),然后将所有模块一次性地全部集成起来进行测试。
  • 三明治法:自两头向中间集成。

(4)系统测试

  • 定义:检验系统所有元素之间协作是否合适,整个系统的性能和功能是否达到要求。其测试内容包括:功能测试非功能测试回归测试等。
  • 功能测试:主要是根据产品规格说明书,来检验被测试的系统是否满足各方面功能的使用要求。(黑盒测试也长被称为功能测试,虽然这不是一种准确的说法)
  • 回归测试:在程序有修改的情况下,保证原有功能正常的一种测试方法。
  • 非功能性测试(特征测试):性能测试、压力测试、容量测试、安全性测试、可靠性测试和容错性测试
  • 系统测试依据:需求说明书,概要设计说明书,详细设计说明书,最重要的是需求说明书。
  • 确认测试:确认测试又称有效性测试。有效性测试是在模拟的环境下,运用黑盒测试的方法,验证被测软件是否满足需求规格说明书列出的需求。任务是验证软件的功能和性能及其他特性是否与用户的要求一致。对软件的功能和性能要求在软件需求规格说明书中已经明确规定,它包含的信息就是软件确认测试的基础。

(5)非功能测试实战:

  • pagespeed.webkaka.com在线网站性能测试

选取网站首页和其他几个有代表性的页面进行测试。

http://www.sc.sdu.edu.cn/default.do

http://www.sc.sdu.edu.cn/getMoreNews.do?newsType=84

http://www.sc.sdu.edu.cn/getNewsDetail.do?newsId=7581

这里只截取这三个界面的测试结果

网页统计

结果分析

通过测试,我们发现网站首页的访问速度比其他页面慢很多。访问时间大概在其他网页的4~6倍。整体上,性能可以满足学院师生的访问。

  • Google PageSpeedInsights在线测试工具

结果

问题及解决方案

1)在 HTTP 标头中为静态资源设置过期日期或最长存在时间,可指示浏览器从本地磁盘中加载以前下载的资源,而不是通过网络加载。

利用浏览器缓存存储可缓存的资源。

2)清除首屏内容中阻止呈现的 JavaScript 和 CSS。

网页中有1个阻止呈现的脚本资源和2个阻止呈现的 CSS 资源。这会导致呈现网页的过程出现延迟。

3)启用压缩。

使用 gzip 或 deflate 压缩资源可以减少通过网络发送的字节数。

压缩 JavaScript 代码可以节省大量数据字节空间,并提高下载、解析和执行的速度。

适当地设置图片的格式并进行压缩可以节省大量的数据字节空间。

压缩 HTML 代码(包括其中所含的任何内嵌 JavaScript 和 CSS)可以节省大量数据字节空间,并提高下载和解析的速度。

压缩 CSS 代码可以节省大量数据字节空间,并提高下载和解析的速度。

  • apache ab工具

结果

This is ApacheBench, Version 2.0.41-dev <$Revision: 1.121.2.12 $> apache-2.0

Copyright (c) 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/

Copyright (c) 2006 The Apache Software Foundation, http://www.apache.org/


Server Software:


*****************


Server Hostname:


www.sc.sdu.edu.cn


Server Port:


80


Document Path:


/default.do


Document Length:


21541 bytes


Concurrency Level:


40


Time taken for tests:


0.273954 seconds


Complete requests:


1000


Failed requests:


0


Total transferred:


21757000 bytes


HTML transferred:


21541000 bytes


Requests per second:


3.65


Transfer rate:


79.42 kb/s received


Connnection Times (ms)


 


min


avg


max


Connect:


0


3


47


Processing:


4521


10830


16780


Total:


4521


10833


16827

This is ApacheBench, Version 2.0.41-dev <$Revision: 1.121.2.12 $> apache-2.0

Copyright (c) 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/

Copyright (c) 2006 The Apache Software Foundation, http://www.apache.org/


Server Software:


*****************


Server Hostname:


www.sc.sdu.edu.cn


Server Port:


80


Document Path:


/getNewsDetail.do?newsId=7525


Document Length:


7134 bytes


Concurrency Level:


40


Time taken for tests:


0.5438 seconds


Complete requests:


1000


Failed requests:


0


Total transferred:


7372000 bytes


HTML transferred:


7134000 bytes


Requests per second:


183.89


Transfer rate:


1355.65 kb/s received


Connnection Times (ms)


 


min


avg


max


Connect:


1


1


23


Processing:


14


212


281


Total:


15


213


304

参数解释

Document Path             #测试的页面

Document Length          #页面大小

Concurrency Level        #测试的并发数

Time taken fortests              #整个测试持续的时间

Complete requests         #完成的请求数量

Failed requests              #失败的请求数量

Write errors: 0

Total transferred            #整个过程中的网络传输量

HTML transferred          #整个过程中的HTML内容传输量

Requests persecond       #相当于LR中的每秒事务数,后面括号中的mean表示这是一个平均值

Time per request    #相当于LR中的平均事务响应时间,后面括号中的mean表示这是一个平均值

Time per request    #每个连接请求实际运行时间的平均值

Transfer rate          #平均每秒网络上的流量,可以帮助排除是否存在网络流量过大导致响应时间延长的问题

测试结果

网站首页的访问速度比其他页面慢很多。整体上,性能可以满足学院师生的访问。

  • 网站安全性测试——360在线网站安全检测

输入网址www.sc.sdu.edu.cn,进行检测,下面给出综合结果:

看来网站在设计或制作时存在漏洞,进一步我们得到:

安全漏洞集中在“核心数据被非法更改”和“服务器配置信息泄露”上,应该是在设计数据库和网页时没有做好权限管理。

软件测试基本方法(六)之集成测试和系统测试,布布扣,bubuko.com

时间: 2024-10-11 00:27:57

软件测试基本方法(六)之集成测试和系统测试的相关文章

软件测试基本方法_之集成测试和系统测试

转:https://blog.csdn.net/BlueCloudMatrix/article/details/31821203 (建议打开链接看) 在软件开发中,经常会遇到这样的情况,单元测试时确认每个模块都能单独工作,但这些模块集成在一起之后会出现有些模块不能正常工作.例如,在chrome环境下用js写了一个实时捕捉video中特定区域的模块,正常工作:利用worker线程进行webgl场景渲染,也正常:可是当两个运算合并时,出现一个模块不能正常运行,原因在于两个模块不适合在worker线程

软件测试基本方法(一)之软件测试

为什么要进行软件测试: 产品质量的保证 控制成本的关键 软件可靠性确认 让企业具备国际竞争力 软件测试定义: 软件测试是由"验证(verification)"和"有效性确认(validation)"活动构成的整体. 验证:检验软件是否已正确地实现了产品规格书所定义的系统功能和特性. 有效性确认:确认所开发的软件是否满足用户真正需求的活动. 软件测试和软件开发的关系: 软件缺陷: 定义:是指计算机程序中存在的任何一种破坏正常运行能力的错误,或者隐藏的功能缺陷,其结果会

软件测试基本方法(七)之验收测试

验收测试是在功能测试和系统测试之后进行的,所以验收测试的前提条件是系统或软件产品已通过了内部测试.然后和用户一起验收软件,在真实环境下运行软件,看是否存在与用户需求不一致的问题或违背产品规格书的要求.由于测试人员不可能完全用户实际使用情况,所以软件是否真正满足最终用户的要求,应由用户进行一系列的验收测试. (1)验收测试定义: 检查软件是否符合合同要求,包括需求规格说明.设计规格说明和用户手册等. (2)测试内容: 易用性测试(用户界面和可用性测试) 兼容性测试(软件兼容性测试.数据共享兼容性测

集成测试和系统测试

软件工程测试大致分为三个步骤:单元测试,集成测试,系统测试,单元测试上次已经介绍了,这次就从集成测试开始. 一. 集成测试是处在中间阶段,在单元测试之后,而且也必须在单元测试之后,因为顾名思义,它本身就是对不同的单元进行集成,将小的单元构成子系统,进行测试.为此,它有一个大前提,就是所有的单元在本单元内测试是没有问题的,集成测试只负责测试单元之间的接口之类的有没有错误,单元内的问题不该集成测试管了.而且,若是单元内的错误,集成测试有应该也发现不了,因为是寻找接口之间的错误,将错误定位为消息传递,

软件测试基本方法(二)之白盒测试

白盒测试 概念:按照程序内部的结构测试程序,通过测试来检测产品内部动作是否按照设计规格说明书的规定正常进行,检验程序中的每条通路是否都能按预定要求正确工作. 分类:白盒测试是基于覆盖的测试,尽可能覆盖程序的结构特性和逻辑路径,所以其具体方法有逻辑覆盖.循环覆盖.基本路径覆盖.逻辑覆盖又可进一步分为语句覆盖.判定(分支)覆盖.条件覆盖.判定-条件覆盖.条件组合覆盖等.白盒测试主要用于单元测试(我们需要了解程序源码和结构,而且基于输入输出,适合单元模块).下面重点介绍常用的几种白盒测试方法. 语句覆

软件测试基本方法(三)之黑盒测试

黑盒测试: 概念:也称功能测试,它是通过测试来检测每个功能是否都能正常使用.在测试中,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构情况下,在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息.黑盒测试着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试. 分类:黑盒测试有很多具体方法,这里只选取两种最常用的--等价类划分法和边界值分析法. 等价类划分法: 定义:分为有效等价类和无效等价类.有效

软件测试基本方法(四)之测试过程模型

瀑布模型是最常见也是最基本的过程模型,但实践中受到越来越大的局限性,我认为现代软件越发庞大和复杂,我们往往不能一眼洞穿,加上用户需求的多样化和不确定性,都让瀑布模型力不从心.于是出现了原型模型.迭代模型.敏捷过程模型和并发模型.例如原型模型就是为了加大与用户的交流,挖掘用户真正的需求.这里只是泛泛地谈一谈一些著名的测试过程改进模型. TMM(测试成熟度模型) 过程能力:描述了遵循一个软件测试过程可能达到的预期结果的范围. TMM的建立得益于: 充分吸收CMM的精华 基于历史演化的测试过程 业界的

软件测试基本方法(五)之单元测试

这是我们最亲密的测试,我们平常写课程设计,当然谈不上商业级的测试,往往就一个单元测试占据了测试.有些人习惯先搭起框架,然后再单元测试:也有些人在完成了一个功能模块后即着手进行该模块的测试.但殊途同归,要保证软件系统的质量,首先就要保证构成系统的单元的质量,这些单元可能是一个对象.类和函数,也可能是更大的单元--组件或模块. (1)为什么要进行单元测试: 软件中存在的错误发现得越早,则修改和维护的费用就越低,而且难度越小,单元测试是早期抓住这些错误的最好时机. (2)定义: 单元测试是对软件基本组

单元测试、集成测试、系统测试和验收测试的联系和区别

根据不同的测试阶段,测试可以分为单元测试.集成测试.系统测试和验收测试体现了测试由小到大.又内至外.循序渐进的测试过程和分而治之的思想. 单元测试的粒度最小,一般由开发小组采用白盒方式来测试,主要测试单元是否符合"设计".   集成测试界于单元测试和系统测试之间,起到"桥梁作用",一般由开发小组采用白盒加黑盒的方式来测试,既验证"设计",又验证"需求".   系统测试的粒度最大,一般由独立测试小组采用黑盒方式来测试,主要测试系