软件测试入门基础知识汇总

第一部分:软件评测知识

1  软件质量与软件测试

软件测试:在规定条件下对程序进行操作,以发现错误,对软件质量进行评估,包括对软件形成过程的文档、数据以及程序进行测试

软件质量:软件特性的总和,软件满足规定或潜在用户需求的能力

2  软件测试与质量保证

软件测试只是质量保证工作中的一个环节,软件质量保证与软件测试是软件质量工程的两个不同层面的工作;

质量保证:通过预防、检查与改进来保证软件质量,采用全面质量管理和过程改进的原理来开展质量保证工作,主要关注软件质量的检查与测试,主要着眼于软件开发活动的过程、步骤和产特

软件测试:通过执行软件来,对过程中的产物(开发文档和程序)进行走查,发现问题,报告质量

3  软件测试的目的

测试是程序的执行过程,目的在于发现错误;

一个好的测试用例在于发现了至今未发现的错误;

一个成功的测试是发现了 至今未发现的错误的测试;

4  软件测试原则

所有的软件测试都应追溯到用户需求

应当把尽早地和不断地进行软件测试作为测试者的座右铭

完全测试是不可能的,测试需要终止

测试无法显示软件潜在的缺陷;

充分注意测试中的群集现象

程序员应避免检查自己的程序

尽量避免测试的随意性

5  软件测试对象

程序开发过程中的各个文档、源程序

6  软件测试过程模型-V模型

是软件开发瀑布模型的变种,主要反映测试活动与分析和设计的关系;

局限性:把测试作为编码之后的最后一个活动,需求分析等前期产生的错误直到后期的验收测试才能发现

7  软件测试过程模型-W模型

V模型的基础上,增加千开发阶段的同步测试,形成W模型;测试与开发同步进行,有利用尽早的发现问题

局限性:仍把开发活动看成是从需求开始到编码结束的串行活动,只有上一阶段完成后,才可以开始下一阶段的活动,不能支持迭代,自发性以及变更调整

8  软件测试过程模型-H模型

H模型中,软件测试过程活动完全独立,贯穿于整个产品的周期,与其他流程并发地进行,某个测试点准备就绪时,就可以从测试准备阶段进行到测试执行阶段;软件测试可以进行尽早的进行;软件测试可以根据被测物的不同而分层次进行

9  测试模型使用

在实际工作中应灵活地运用各种模型的优点

 V模型

强调了在整个软件项目开发中需要经历的若干个测试级别,并与每一个开发级别对应;忽略了测试的对象不应该仅仅包括程序,没有明确指出对需求、设计的测试

W模型

补充了V模型中忽略的内容,强调了测试计划等工作的先行和对系统需求和系统设计的测试;与V模型相同,没有对软件测试的流程进行说明

H模型

强调测试是独立的,只要测试准备完成,就可以执行测试

 10  单元测试

定义

又称模块测试,是针对软件设计的最小单位程序模块进行正确性检查的测试工作;可以从程序的内部结构出发设计测试用例,多个模块测试可以平行地独立进行测试

目的

发现模块内部可能存在的各种差错

内容

模块接口测试、局部数据结构测试、路径测试、错误处理测试、边界测试

步骤

利用设计文档设计测试用例;创建被测模块的桩模块或驱动模块;利用被测试模块、驱动模块和桩模块来建立测试环境,进行测试

 11.集成测试

定义

又称组装测试或联合测试,在单元测试基础上,将所有模块按概要设计和详细设计进行组装

目的

发现模块连接中的接口可能存在的各种差错

内容

穿越模块之间的数据是否会丢失;一个模块组装后是否会对另一模块或其他模块存在影响;各个子功能组装在一起是否会达到预期的父功能;全局数据结构是否有问题;单个模块的错误累积起来是否会放在

组装方法

一次性组装方式,非增殖式方式也叫整体拼装,对模块分别测试然后将所有模块组装;第二种增殖式组装方式,可以是自顶向下或自底向上

完成标志

成功地执行了测试计划中规定的所有测试用例;修正了所发现的错误;测试结果通过专门小组的评审

 12.确认测试

目的

验证软件的功能和性能及其他特性是否与用户的要求一致

测试内容

有效性测试 运行黑盒测试方法验证所测软件是否满足需求规格说明书列出的需求;所有文档正确且便于使用;软件可移植性、易用性、兼容性进行测试;软件配置复查 保证软件配置的所有成分都齐全

 13.系统测试

目的

验证和确认系统是否达到其原始目标,而对集成的硬件和软件系统进行的测试

测试内容

在真实或模拟系统运行环境下,检查完整的程序系统能否和系统(硬件设备、网络、系统软件)正确配置、连接,满足用户需求

 14.验收测试

测试内容:根据任务书或合迥、供需双方约定的验收依据文档进行对整个系统的测试与评审,确认是否接收或拒绝系统;

15.开发方测试

通常也叫验收测试‘a测试,在软件开发环境中,开发者检测与证实软件的实现是否满足软件设计说明或软件需求说明的要求

16.用户测试

在用户的应用环境下,用户检测与核实软件实现是否符合自己预期的要求。B测试通常被认为是用户测试,把软件有计划地免费地分发到目标市场,让用户大量使用、评价检查软件

17.第三方测试

由第三方测试机构来进行的测试,也称独立测试

18.动态测试

通过人工或使用工具运行程序进行检查,分析程序的执行状态和程序的外部表现

19.静态测试

   不运行程序,能过人工对程序和文档进行分析与检查,包括走查、符号执行、需求确认等

20.白盒测试

通过对程序内部结构的分析、检测来寻找问题,检查程序的结构及路径是否正确,检查程序的内部动作是否按照设计说明的规定正常进行

21.黑盒测试

又称功能测试,通过运行程序发现其缺陷和错误,在程序界面处进行测试

22.灰盒测试

介于白盒和黑盒测试之间,关注输出对于输入的正确性,也关注程序的内部结构,但没有白盒测试那样详细、完整

23.测试分类

开发过程

单元、集成、确认、系统、验证

实施组织

开发方、用户、第三方

测试技术

白盒、黑盒、灰盒或静态、动态

 24.软件问题分类

软件错误、软件缺陷、软件故障、软件失效

软件错误:在软件生存周期内的不希望或不可接受的人为错误

软件缺陷:存在于软件(文件、程序、数据)之中的不希望或不可接受的偏差

软件故障:软件运行过程中出现的一种不希望或不可接受的内部状态。

软件失效:软件运行时产生的一种不希望或不可接受的外部行为

25GB/T16260.1 产品质量-质量模型

质量模型:代表软件质量属性的总体

软件质量特性与度量:质量特性和子特性、外部度量、内部度量

外部、内部质量的质量模型:质量属性包括:功能性、可靠性、易用性、效率、维护性和可移植性

26GB/T18905.1 软件工程 产品评价-概述

概述了软件产品评价的过程,提供了评价需求和指南

27GB/T18905.5 软件工程 产品评价-评价者用的过程

 28.软件测试的国内外现状

国外:软件测试已成为一个独立的产业,在软件公司占有重要的地位,软件测试理论研究蓬勃发展,软件测试市场繁荣,开发了大量的测试工具;

国内:软件测试成为一个新兴产业,测试技术贫乏,从业人员少,测试服务没有足够规模;著名的软件公司已成立了专业的测试队伍,国家在职业资格中新增了软件评测师,企业资集认证时软件测试能务成为重要指标,软件产品增加了登记测试,成立第三方测试机构,软件测试成为一个独立课程

29.软件评测发展趋势

    测试工作将进一步前移

软件架构师、开发工程师、QA人员、测试工程题将进行更新的融合

测试行业将得到充分的尊重

设置独立的测试部门将得到越来越多公司的软件公司的共识

测试外包服务将快速增长

30.测试过程的特性与要求

软件测试过程

是一抽象的、遵循GB/T18905《评价者用的过程》中定义软件评价过程的模型

评价过程的特性

可重复性:同一评价者按同一评价规格说明对同一产品进行重复地评价,应产生同一种可接受的结果

可再现性:同不同评价者同一评价规格说明对同一产品进行评价,应产生同一种可接受的结果

公正性:评价应不偏向任何特殊的结果

客观性:评价结果应是客观事实

评价过程的要求

一般要求

组织和质量体系:评价者应立足于一个组织;评价组织为保证质量,可以建立质量体系

请求者职责:对软件产品确立必要的合法权利;为标识和描述产品提供必要的信息;阐述初步评价需求,与评价者协商确定实际需求,需求遵守相关的法规和标准;阐述对评价提交的信息的保密性需求;必要时在开发者和评价者之间起中介作用;必要时向评价者提供计算机和其他设备

评价者职责:检查请求者对软件产品是否有充分合法的权利;按规定对请求者提供保密承诺;提供有资格的人员,以便实施评价;提供评价工具和技术;按照评价需求实施测试;保证评价过程中的所有记录 ;保证及时向请求者提交评价报告

活动要求

确立软件评价需求

编制评价规格说明

制定评价计划

评价执行

作评价结论

 31.软件测试与配置管理

配置管理活动

配置项标识:标识测试样品、标准、工具、文档报告等配置项的名称和类型、标识各配置项的所有者及储存位置

配置项控制(变更控制):规定测试基线、基线创立时间、变更控制委员会人员组成、职能、确定变更请求的处理程序和终止条件、变更过程中测试人员变更的职能等

配置状态报告:定义报告形式、内容和提交方式、确认过程记录和跟踪问题报告、更改请求、更改次序;确定测试报告提交的时间与方式;

配置审计:确定审计执行人员和执行时机;确定审计的内容与方式;确定发现问题的处理方法

 32.测试的组织与人员  

测试的组织

组织结构设计因素:垂直还是缓、市场还是产品、集中还是分散、分级还是分散、专业人员还是工作人员、功能还是项目

独立测试组织:没有此组织,建立系统不会理想

集中管理的测试组织:成立独立部门,集中管理

选择测试组织结构方案的准则:提供软件测试的快速决策能力;利于合作;能够独立运作并具有精干的人员配置;有利于协调测试与质量管理的关系;有利于满足软件测试过程管理要求;有利于为测试技术提供专有技校;充分利用现有测试资源;对测试者的职业道德产生积极影响

测试的人员

测试组织管理者

具有理解与评价软件测试政策、标准、过程、工具、培训和度量的能力;具有领导能力;具有吸引并留住杰出测试专业人才的能力;具有沟通、支持和控制能力;具有测试时间、质量和成本控制能力

测试人员

应具有的能力

一般的表达、交流、协调、质量意识、软件工程能力;测试技能和方法;测试规划能力;测试执行能力;测试分析、报告和改进能力;

职业发展:

12年测试技能;34年测试过程;45年测试组织工作;56年技术管理;612年测试管理

人员培训

按培训内容分类:测试基础知识和技能培训;测试设计培训、测试工具培训;测试对象软件产品培训;测试过程培训;测试管理培训

 33.软件测试风险分析

软件测试风险:是软件测试过程出现的或潜在的问题,造成的原因主要是测试计划的不充分、测试方法有误或测试过程的偏离,造成测试的补充以及结果不准确

软件测试风险主要是对测试计划执行的风险分析与制定要采取应急措施;重点在措施

测试计划的风险:一般指测试进度滞后或出现非计划事件;常见的有交付日期、测试需求、测试范围、测试资源、人员的能力、测试预算、测试环境、测试支持、测试工具;

34.软件测试的成本管理

测试实施成本

测试准备成本、测试执行成本、测试结束成本

低测试实施成本

测试准备环境尽可能使用软件和测试环境配置自动化;测试实施尽可能采用自动化测试工具(测试用例自动化执行),人工测试最好请初级技术人员,不使用测试工程师;测试结束编制测试报告测试结果与预期结果比较采用自动化方法(测试文档编制模板化)

质量成本要素

一致性成本(用于测试实施成本)、非一致性成本(由出现的问题和故障引起)

质量成本=一致性成本+非一致性成本

缺陷探测率DD P

Bugstester/ Bugstester+ Bugscustomer)) 衡量测试投资回报的一个重要指标注:第116页计算题

 35.文档测试的范围

用户文档

用户手册、操作手册、维护修改建议

开发文档

需求说明书、概要设计、数据库设计、详细设计、可行性研究报告

管理文档

项目开发计划、测试计划、测试报告、开发进度月报、开发总结报告

 36.用户文档的内容

包装上的文字及图案;宣传材料、广告及其他插页;授权/注册登记表;最终用户许可协议;标签和不干胶条;安装和设置指导;用户手册;联机帮助;指南、向导;样例、示例和模板;错误提示信息;

37.用户文档测试的要点

明确读者群:根据读者群(如初级、中级、高级用户)的不同来检查文档内容,保证用户能够看得懂、能理解

术语:文档中术语的描述要适合定位的读者群,用法一致,标准定义与业界规范相吻合

文档内容的正确性:要保证所有信息是真实正确的

文档内容的完整性:要完全根据提示逐步操作,检查是否存在遗漏的地方

文档与程序的一致性:按照文档操作后,检查软件返回的结果与文档描述是否一致

文档的易用性:检查是否便于用户查找相应的内容

图表与界面截图:检查所有图表与界面截图与发布的程序版本一致

样例和示例:检查所有的样例和示例能够正确完成;

语言:中文文档保证无错别字和二义性

印刷与包装:印刷质量,包装质量

38.用户手册的测试

准确的按照手册的描述使用程序;尝试每一条建议;检查每条陈述;查找容易误导用户的内容;

39.在线帮助的测试

内容的准确性;帮助功能的可靠性;每一条索引和主题列表要逐条检查,是否能够由索引进入主题;帮助系统中的每一个超级链接;主题是否全部能够在索引中找到;帮助系统的风格应简洁;

40.功能易用性测试

业务符合性

程序实现的业务逻辑与实际业务逻辑是否一致;

功能定制性

对软件功能应能够灵活定制

业务模块集成度

对于存在紧密关系的模块,是否方便功能转换,从一个功能进入到别一个功能

数据共享能力

对于多处使用的数据应可以一次输入多处使用,减少用户重复工作

约束性

对于流程性强的操作,应能够限制操作顺序;对非法信息应不允许进行系统

交互性

对于用户的每一次操作,应能够给出提示或回应,使用户清晰的看到系统的运行状态

错误提示

对于关键操作完成后或删除数据之前给出明确的提示信息;

 41.用户界面测试:界面整体、界面元素测试

界面整体

规范性测试:符合现行标准和规范

合理性测试:界面与软件功能是否相融洽,界面的布局是否协调

一致性测试:使用的控件、标签风格、错误提示信息、操作方法是否一致

界面定制性测试:界面元素的可定制性;工具栏的可定制性;统计检索的可定制性;报表的可定制性

界面元素

窗口测试:大小、显示、窗口大小改变、多个窗口同时打开、支持操作方法等

菜单测试:是否符合需求;措辞是否准确;顺序是否合理;图形布局是否一致

图标测试:是否符合表达习惯;不同的目标是否采用不同的图标;图标尺寸是否合适;建议与对应功能相似;图标上是否有标注

鼠标测试:交互环境中是否可以识别鼠标操作;多次点击是否识别;无规则点击是否会产生无法预料的结果;右键弹出菜单是否正确;

文字测试:界面文字是否正确,准确,无二义性;

 42.硬件兼容性测试

目的

确认软件系统对于服务器端、客户端及网络所需的环境是否正确、合理

测试内容

最低配置是否能满足系统运行的需要;在推荐配置下系统的响应是否迅速;考察软件对运行硬件环境有无特殊说明;软件系统能否运行在多种硬件配置环境下

与整机兼容性

确认要求的最低配置和推荐配置的合理性和正确性;主要指标:机型的要求;CPU;内存;硬盘

与板卡及配件兼容性

独立板卡;主板芯片组;驱动程序中的自由软件

与打印机的兼容性

对不同厂商、不同型号的打印机进行以下测试:安装;打印测试页;调整纸张大小;选择分辨率;调整打印方向;逐页、多份打印;双面打印、网络打印

其他

红外线鼠标、键盘、扫描仪、视频软件,刻录软件的兼容性

 43.软件兼容性

操作系统的兼容性

确认软件系统是否与多种类型的操作系统兼容,包括安装、关键流程的检查;操作系统包括Windows平台、Linux平台、UNIX平台;Macintosh 图形专用软件

与数据库的兼容性

确认软件系统在不同数据库的可移植性、互操作性,对完整性、应用系统测试;性能测试;数据库包括SQLODBCJDBCADOOLE DBJDO

与中间件的兼容性

指对不同版本、不同补丁包的兼容性进行测试,检查应用程序是否能够正确运行,性能的变化;

与浏览器的兼容性

创建一个兼容性矩阵,测试不同厂商、不同版本的浏览器对某些构件和设置的适应性;如Applets,JavaScript,ActiveX,VBScript

与其他软件的兼容性

与支持软件(财务软件导出Excel)的兼容性测试;与其他同类软件的兼容性(与其他同类软件同时在机器中使用);与其他非同类软件的兼容性

 44.数据兼容性测试

不同数据格式兼容性

确认软件之间能否正确地交互和共享信息,不同格式的信息是否兼容;包括系统与其他系统复制粘贴文字是否正确;旧版本信息在新版本是否能打开;新版本文件在旧系统中是否能打开;同类软件是否可以进行数据交换

XML符合性

XML能够使不同来源的结构化的数据较容易地结合在一起,提供一个描述数据和交换数据的有效手段;测试步骤:在测试工具中建立标准模板;用被测软件按要求导出数据;将导出的数据与标准模板进行对比匹配测试;输出测试结果;

 45.平台化软件兼容性测试

平台化软件概述

用来构建与支撑应用软件的独立软件系统;基本要素包括支撑环境(应用系统开发与运行的基本条件)和开发体系(开发与维护管理应用软件的工具与方法);分类包括技术支撑型平台和应用实现平台

平台化软件优点

应用的广泛性(各行业);良好的开发性(保证接口的统一);具有灵活性和扩展性;快捷的适应性

平台化软件兼容性

测试内容:跨硬件平台能力(不同规模硬件平台上式);跨操作系统能力;支持多种数据库系统;客户端兼容性测试;数据兼容性测试

 46.新旧系统数据迁移测试

新旧系统数据迁移

数据迁移:新旧系统进行切换时,将历史数据进行清理、转换,并装载到新系统的过程;

数据迁移的实现

数据迁移的准备、数据迁移的实施、数据迁移后的校验

数据迁移的测试

对旧系统到新系统、新系统到旧系统进行迁移测试;生成备份测试迁移后的数据完整可靠性;

 47.安全测试-测试内容

用户认证机制

用户认证机制分为数字证书(检验用户身份的电子文件)、智能卡、双重认证、安全电子交易协议(SET电子商务中安全电子交易的国际标准);测试时有必要对用户认证机制进行全面测试,评价认证机制的合理性

加密机制

对加密、解密机制进行测试,验证使用是否合理,强度是否满足当前需求;保护数据安全的重要手段

安全防护策略

安全防护策略包括安全日志、入侵检测、隔离防护、漏洞扫描,是系统对抗攻击的主要手段

数据备份与恢复手段

是一种数据安全策略,需要对备份和恢复的效果进行测试,保证实际数据的安全性

防病毒系统

基本的防病毒技术:集中式管理、分布式杀毒(以策略为中心、以服务器为中心);数据库技术、LDAP技术的应用;多引擎支持;不同操作系统的防护;远程安装或分发安装;

测试时对网络防病毒软件的选购、部署方式、策略定义进行评估和测试

 48.安全测试-测试策略

安全系统

安全系统防护体系

由实体安全、平台安全、数据安全、通信安全、应用安全、运行安全、管理安全七层次,因此安全性测试测策针对7层进行测试和评估

基本安全防护系统

一般采用防火墙、入侵检测、漏洞扫描、安全审计、病毒防治、Web信息防篡改等基础安全技计,来保障应用系统的安全;测试时从以上方面分别进行测试

证书业务服务系统

包括证书认证及证书审核注册,需验证功能和性能;测试采用过程是否符合标准;证书类型是否正确;证书格式、申请、审核、下载功能是否正确;并发性、扩展性、备份

证书查询验证服务系统

验证功能和性能;测试查询、管理、证书信息发布、下载、更新功能;并发性、扩展性

密钥管理系统

验证功能和性能;测试密钥生成、发送存储、查询等基本功能,安全管理功能、系统管理功能;并发压力、最大量密钥系统的基本功能、密钥的保存期、备份;

密码服务系统

验证功能和性能;测试加解密功能、多密码算法支持、增加功能;长度、系统速度、扩展能力

可信授权服务系统

集中式授权服务 验证是否具有用户管理、审核管理、资源管理、角色管理等主要功能;分布式授权服务 验证其是否有资源访问的签名授权、授权管理等功能;同时还要对系统进行并发压力测试

可信时间戳服务系统

验证功能和性能;测试时间来源是否正确、保存功能、签发功能;时间精度、验证时间戳请求并发性、可扩展性

网络信任域系统

:由通过安全审查的网络可信接入设备和网络信任域管理系统组成;验证功能和性能;接入认证交换机、限制、管理、管理配置功能;认证时间、认证接入请求数并发性、接口

故障恢复与容灾备份

故障恢复、数据备份、容灾备份

 49.安全性测试方法

功能验证

采用黑盒测试方法,对涉及安全的软件功能进行测试

漏洞扫描

采用主机或系统漏洞扫描器自动检测远程或本机安全性弱点

模拟攻击试验

采用冒充、重演、消息篡改、服务拒绝、内部攻击、外部攻击、陷阱门、特洛伊木马方法进行测试

侦听技术

对数据进行截取分析的过程,主要用于对网络加密的验证

 50.软件产品安全测试

侧重于用户对数据或业务功能的访问控制,数据存储和数据通信的远程安全控制

用户管理和访问控制

用户权限控制

测试用户权限分配合理性、用户名、用户密码的各项限制

操作系统安全性测试

测试是否关闭和卸载了不必要的服务和程序、是否存在不必要的账户、权限设置合理性

数据库权限的测试

测试用户的权限,用于存储用户和口令的表信息尽量加密,程序中是否存在默认的用户名和密码

通信加密

测试软件系统通信息加密情况,采用验证和侦听技术完成,

安全日志测试

测试日志的完整性、正确性,是否提供安全日志的智能统计分析能力,

 51.网络系统全生命周期测试策略

建设生命周期

生命周期测试策略

规划设计阶段

利用仿真技术测试设计方案、网络设备评估,为网络选型提供依据;

实施阶段

进行网络质量测试,如吞吐量、包转发率、丢包率,保证系统的可用性和稳定性,为网络应用系统开发提供基准值

与应用系统集成阶段

完成应用系统的功能和性能测试,保证运行基本稳定后,将程序应用到网络上进行网络级测试,测试并发用户访问能力、响应时间、应用对网络资源占用情况,保证应用系统在网络平台上的性能

 52.网络测试-网络仿真技术

定义

是一种通过建立网络设备、链路和协议模型,并模拟网络流量的传输,从而获取网络设计或优化所需要的网络性能数据的仿真技术,也称为网络模拟技术或网络预测技术

原理

在计算机构造虚拟的环境反映现实的网络环境,利用数据建模和统计分析的方法模拟网络行为,从而获取特定的网络特性参数;采用基于包的建模机制来模拟实际物理网络中包的流动,包括处理、组包、拆包过程

应用

在网络规划中应用

为网络规划、设计提供可靠的定量依据;可以验证实际方案或比较多个方案

在企业网络管理和优化中应用

作为网络辅助管理工具、可以对企业业务网络通信情况进行统计找出瓶颈、可以查出业务配置的错误、可以模拟故障了解系统的处理情况、对新增业务进行性能测试、模拟访问量预测网络的承受负载

在网络研发中应用

构建接近于真实网络环境和业务,可以有效的模拟新协议的各种行为细节,作出公正的评判新协议的性能;对于大型通信设备制造商,可以作为其网络设备、协议以及应用开发的工具

网络预测

设置服务水平、完成日常网络容量规划、离线测试网络、网络失效和容量极限分析

软件

OPNET OPNET公司)、NS

 53.网络性能测试

指标

吞吐量:指被测试设备或被测试系统在不丢包的情况下,能够达到的最大包转发速率

丢包率:高负载状态下由于缺少资源而未转发的包的比例

延时:系统在有负载的情况下转发数据包所需的时间

背靠背性能:通过以最大帧速率发送突发传输流,并测量无包丢失时的最大突发长度来测试缓冲区容量

TCP/IP 47层负载匀衡:建立连接数、会话连接数、连接数据

IP语音网络测试:测试语音、数据流包的丢失、单向延时,延时抖动

宽带XDSL网络性测试:帧测试、端到端IP测试、信元测试、PPP容量测试、ATM完整性测试

VPN网络测试:最大隧道创建数量、包丢失、延时、响应时间

路由测试:协议、路由压力性能

类型

可靠性测试、可接受性测试、瓶颈测试、容量规划测试、升级测试、功能/特性测试、吞吐量测试、响应时间测试、衰减测试、配置规模测试、网络设备评估测试

对象

网络平台:网络操作系统、文件服务器、工作站

应用层:应用程序的客户端、桌面操作系统和数据软件

子系统:路由器、集线器、交换机、网桥

全局网络路径

方法

网络设备:(1)放入仿真网络环境中通过分析行为进行测试(2)使用的网络测试专用设备

网络布线:使用工具,如网络电缆测试仪、令牌环网测试仪、以太网测试仪、光缆测试仪、企业级网络测试仪

网络协议:专用工具

网络性能:七层网络结构分析模型法、网络连接结构的分析法,客户端、网络链路、服务器端三个模块

标准

RFCYD/T

工具

物理线缆测试仪、网络运行模拟工具、协议分析仪、专用网络测试设备

 54.网络测试-网络应用测试

网络应用监控

概述

监控功能主要能过网络探测器设备安装在某一网段上采集数据

目标

及时准确了解网络状况,定位问题的根源

工具

Network Vantage:全面应用监控和报告产品,帮助发现和优化网络上的应用性能;

Sniffer:捕捉流量、监控网络活动、分析错误信息,定位问题

网络故障分析

步骤

清楚故障现象;收集需要的用于帮助隔离可能故障原因的信息;根据收集到的信息考虑故障原因;根据分析的故障原因,建立一个诊断计划;执行诊断计划;改变参数确认结果

软件问题诊断

建立在网络应用分析的基础上,分析关键因素:会话信息(往返行程和流量信息)、包信息、响应时间信息、负载信息、高峰信息、线程信息、响应时间预测、带宽模拟  注意421页故障定位举例

硬件问题诊断

物理层:连接方式、连接电缆、设备配置是否正确  使用show interface命令;

数据链路层:路由器的配置、连接端口、接口与通信设备封装;通过查看路由器配置检查封装,show命令

网络层:沿源到目标的路径,查看路由表,同时检查路由器接口的IP地址

 55Web应用的测试策略

按系统架构分类

客户端的测试、服务器端的测试、网络上的测试

按职能分类

应用功能的测试、Web应用服务的测试、安全系统的测试、数据库服务的测试

按软件质量特性分类

功能测试、性能测试、兼容性测试、安全性测试、易用性测试

按开发阶段分类

设计测试、开发测试、应用测试

 56Web应用设计测试

设计测试的主要内容是对设计从全面性、适合性、标准性等方面进行检查

总体架构设计测试

采用瘦客户端或胖客户端是否合需求:瘦客户端 客户端只作少量处理、业务逻辑规则在服务器端执行;胖客户端 客户端即显示用户页面,又执行部分业务逻辑;验证设计中采用的模式是否适合需求

确定Web架构的组成部分是否满足需求:验证各种服务器、中间件形成的架构是否满足需求,各种搭配是否兼容

服务器的配置及分布是否满足需求:验证服务器的配置和分布是否满足用户的功能、性能、成本等需求

客户端设计测试

功能设置的测试:验证Web应用中各项功能设置是否满足需求,应主要实现信息服务、办公自动化、Internet支持

信息组织结构设计的测试:信息组织结构设计模式包括线性结构、分层结构、非线性结构;验证设计模式是否符合用户需求,能否使用户直观、快捷的浏览到所需信息

页面设计的测试:页面显示一致性、友好性、直观的导航系统、不同类型浏览器、布局

服务器端设计测试

容量规划测试:将所要求的延迟和带宽与该体系结构中每一环节的额定容量作一下比较,每个组成部分都必须满足需求;估算点击率是否满足需求;估算延迟和流量是否满足需求;估算Web应用系统所需服务器的资源消耗

安全系统设计测试:对常识性安全策略、加密技术、防火墙、防毒体系进行测试

数据库设计测试

 57Web应用开发测试

Web应用的源代码和组件进行测试,保证代码的正确性、组件的功能正常

代码测试

测试源代码规则、链接测试、框架测试(窗口大小改变信息改变情况)、表格测试(大小调整情况)、图形测试

组件测试

进行表单测试、Cookies测试、脚本测试、CGI(服务器端技术)、ASP测试(代码、不同浏览器)、ActiveX控件测试(客户端技术)

使用Junit进行单元测试

 58Web应用运行测试

与其他系统比较

相同:测试内容、测试方法、测试手段基本相同;

不同:测试重点不同;采用的工具不同

功能测试

可以采有黑盒测试方法进行功能测试,注意客户端的选择测试、客户端浏览器的配置、客户分辨率显示、内容测试

自动化技术:Web应用链接质量保证技术、Web应用功能测试技术

易用性测试

界面测试:页面中各元素布局的协调性、不同页面风格的统一性、用户在界面中操作的便利性、界面动态操作测试

辅助功能测试:用户是否能够较快的找到相应的使用说明、导航、站点地图、帮助信息功能

图形测试:主要查看所有图形信息是否有明确的用途、大小、质量、颜色、风格

负载压力测试

负载测试测量Web系统在某一负载级别上的性能;压力测试测试系统的限制和故障恢复能力

测试步骤:确定交易执行响应时间;做计最大并发用户数;模拟用户请求,逐步加压;负载没有达到应优化

客户端配置与兼容性测试

浏览器的配置测试:缓存设置、cookies设置、显示设置、安全设置各项不同的设置对Web功能的影响程序,影响的配置在功能说明书中是否进行描述

平台兼容性测试:不同操作系统兼容性测试

浏览器兼容性测试:与平台兼容性测试结合,测试不同操作系统下不同浏览器类型的应用

安全性测试

安全体系测试:测试内容包括部署与基础结构、输入验证、身份验证、授权、配置管理、敏感数据、会话管理、参数操作、异常管理、审核和日志记录

应用级安全测试:测试注册与登录、在线超时、操作留痕、备份与恢复

传输级安全测试:测试经客户端传送到服务器端可能存在的安全漏洞以及服务器防范非法访问的能力

 59.负载压力测试基本概念

负载压力

指系统在某种指定软件、硬件以及网络环境下承受的流量,如并发的用户数、持续运行时间、数据量等。其中并发的用户数是负载压力的重要体现。

负载压力测试

指在一定测试约束条件下,测试系统所能承受的并发用户量、运行时间、数据量,以确定系统所能承受的最大负载压力,负载压力测试是性能测试的重要组成部分

性能测试

用来保证产品发布后系统的性能能够满足用户需求,包括两种测试策略:性能评测、性能调优

负载测试

通过逐步增加系统负载,测试系统性能的变化,并最终确定在满足性能指标的情况下,系统所能承受的最大负载量的测试

压力测试

通过逐步增加系统负载,测试系统性能的变化,并最终确定在什么负载条件下,系统性能处于失效状态,并以此来获得系统能提供的最大服务级别的测试压力测试是为了发现在什么情况下系统的性能会变得不可接受

并发性能测试

并发性能测试的过程,是一个负载测试和压力测试的过程;

逐渐增加并发用户数负载,直到系统的瓶颈或者不能接收的性能点,能过综合分析交易执行指标,资源监控指标来确定系统并发性能的过程;

并发性能测试是负载压力测试中的重要内容;

并发性能测试包括:应用在客户端性能的测试、应用在网络上性能的测试、应用在服务器端上性能的测试三个方面

疲劳强度测试

采用系统稳定运行情况下所能支持的最大并发用户数,或者日常运行用户数,持续执行一段时间业务,保证达到系统疲劳强度需求的业务量,通过综合分析交易执行指标和资源监控指标,来确定系统处理最大工作量强度性能的过程

大数据量测试

l   大数据量测试包括独立的数据量测试和综合数据量测试两类

l   独立的数据量测试:指针对某些系统存储、传输、统计、查询等业务进行的大数据量测试

l   综合数据量:指和压力性能测试、负载性能测试、疲劳性能测试相结合的综合测试

 60.负载压力测试解决方案

一.  并发性能测试

并发压力过程与测试定位

1        并发负载压力的实施:客户端――应用客户端的测试

2        负载压力的传输介质:网络――应用网络上的测试

3        压力到达:各类服务器――应用服务器端的测试

二.并发性能测试-应用服务端测试

1 目的:模拟大量并发用户执行不同业务操作,达到实施负载压力的目的

1  测试环境

1        测试工具主控台(1个):负责管理各个测试工具代理,收集各类测试数据

2        负载生成器(多个):即代理,模拟虚拟用户

3        服务器

2  测试过程

1        创建方案:方案信息包括    虚拟用户组(Vuser

                                  Vuser将运行的测试脚本

                                  用于运行脚本的负载生成器

2        定义测试目标:  虚拟用户数:测试应用程序可以同时运行多秒个Vuser

每秒点击次数

每分钟页面数    测试服务器稳定性

每秒事务数

事务响应时间:测试在期望的事务响应时间内可以同时运行多少个Vuser,在脚本中指定要测试的事务名称以及Vuser的范围

3        制定方案执行计划:制定方案执行的时间安排,如开始时间、执行持续时间、启动/停止多少个Vuser数量等。注:如果脚本中包含有集合点,方案将不会按计划运行;集合点:在方案中指定Vuser,各Vuser执行的脚本,运行的时间,启动方案后,并不能保证所有的Vuser能够达到同步操作的效果,设置集合点,Vuser执行到集合点时,会被Controller滞留在集合点,等待所有Vuser全部到达后,执行某一项指定操作,从而达到同步并发的效果

3  影响服务器的负载级别

1        选择在方案运行过程中活动的集合点

2        选择加入每个集合的Vuser

4  控制服务器上的负载峰值

1)创建Vuser脚本,插入必要的集合点(采用录制功能将操作过程录制形成脚本,插入某一项操作的集合点)

2)创建方案(建立Vuser组,指定每组的user及数量、运行的脚本等信息)

3)向方案中添加Vuser组,搜索设置的集合点,并将集合点名称添加到集合信息列表中

4)设置虚拟用户负载的级别

5)通过选择加入到方案中的集合点及加入每个集合的Vuser数,可以确定负载的精确级别

6 设置集合的属性

7)对于每一个集合,都可以设置集合策略

8)运行方案(在此之前,可以同时配置负载生成器和Vuser行为)

5.客户端交易处理性能指标

1)并发用户数指标

2)交易处理指标:平均事务响应时间、每秒事务数、每秒事务总数、事条摘要、事务性能摘要、事务响应时间(负载下、百分比、分布)

3 Web请求指标:每秒点击次数、吞吐量、吞吐量摘要、HTTP状态代码摘要、每秒HTTP响应数、每秒下载页面数、每秒重试次数,重试次数摘要、连接数、每秒连接数、每秒SSL连接数

4 Web页面组件指标:激活网页细分、页面组件细分(随时间变化)、页面下载时间细分(随时间变化)、第一次缓冲时间细分(随时间变化)、已下载组件大小

二.并发性能测试-应用网络上性能测试

    应用网络上性能测试包括:应用网络故障分析和网络应用性能监控

1 应用网络故障分析

1 测试目标:显示网络带宽,延迟、负载和TCP端口的变化是如何影响用户的响应时间的

2)作用

优化性能

预测系统响应时间

确定网络带宽需求

定位应用程序和网络故障

3)网络故障分析工具

作用:使应用跨越多个网段的活动过程变得清晰

                提供有关应用效率的统计数据

                模拟用户在不同网络配置环境下的响应时间,决定应用投产的网络环境

工作原理:  多个捕捉点:Agent,被动监听数据包来实现实时数据采集

                一个分析:Agent Manager进行对所跟踪的数据的分析

获取信息:  监控不同探针之间的连接状态,传输的字节数以及通信往返行程次数

会话性能概要,监控哪段网络延迟大,带宽对网络双向性能的影响,节点用于处理和用于传输的时间

服务器与客户端之间帧传输情况统计,监控到与应用相关的帧的分布,对每一个帧可以与相关的数据包关联,并且可以对帧解码

服务器与客户端之间传送包信息统计,监控包的详细信息,并且可以将包与帧及线程相关联

线程信息统计,监控线程的内容和生存周期,以及线程与数据包的关系

负载的高峰时刻,负载的平均值,高峰时刻可以与相关的线程、数据包、帧相关联

故障错误总结:应用级错误、TCP错误、IP错误、其他错误

   2 网络应用性能监控指标

1        测试目标:在系统试运行之后,需要及时准确地了解网络上正在发生什么事;什么应用在运行,如何运行;多少PC正在访问LANWAN;哪些应用程序导致系统瓶颈或资源竞争

2        作用

分析关键应用程序的性能

定位问题的根源是在客户端、服务器、应用程序还是网络

哪些应用程序占用大量带宽

哪些用户产生了大量的网络流量

3        网络应用性能监控工具

组成:      探针:采集与存储数据,并根据应用对数据进行分类,设置的原则是根据网络组成和监控要求

探针管理器:管理配置探针,设定数据采集与上传时间,合并收集的数据;

时间服务器:对探针进行时针同步

交互界面:数据展示平台

监控信息:  应用监视:

关键特性:客户和服务器通信量,应用响应时间和资源应用的业务水平等

按会话统计传输负载:测试应用和会话级响应时间,以及自动为通过网络中每一个联网设备的每一个应用程序生成负载图

应用、会话级、事务响应时间

延迟在何处被引入网络,瓶颈在哪里

趋势分析

 三.并发性能测试-应用服务器端的测试

(一)概述

1.对应用服务器端的测试主要包括三方面:操作系统、数据库和中间件的监控

2.监控手段:可以采用工具自动监控,也可以使用操作系统、数据库、中间件本身提供的监控工具

3.利用工具监控的优点

1        减少故障诊断和分析时间 

2        减少手工定位的时间和避免误诊

3        在问题发生前定位故障

4        验证可达到的性能水平和服务水平协议

5        持续的服务器、数据库和应用性能和可用性监控

6        故障诊断和恢复:自动报警、故障恢复程序、故障恢复信息

7        服务器、应用可用性和性能报告

(二)操作系统监控

操作系统的监控涉及后台重要服务器的操作系统监控,对于主流的操作系统,主要关注:内存、CPU、硬盘

监控建议:

1.磁盘管理

1        采集物理读/写和逻辑读/写信息

2        收集操作系统和其他平台上的磁盘忙信息

3        监控I/O

2.文件系统

1        显示每个文件系统的使用率,检测文件系统空闲空间的大小

2        剪裁文件系统-删除指定的CORE(核心)文件和其他文件

3        显示文件系统的mount on devicetypesize

4        可以监控特殊的文件系统,如NFS(网络文件系统),CD-ROM

5        检测特定文件的存在及超出特定期限的文件存在

3.内存

1        显示可用的内存数量

2        决定当前的内存短缺量

3        帮助分析内存问题

4        显示内存的实存、所有虚存和kernel(核心内存)的状态等信息

4CPU

1        记录CPU的使用率

2        监测CPU参数,包括CPU idle(空闲),CPU waits,CPU system usage,CPUuser usage,run queue length(运行队列长度)

3        显示CPU context(上下关系) switches 的总数

4        显示CPU处理系统任务和完成用户任务的时间比例

5.操作系统举例

1        UNIX操作系统

2        Windows操作系统

(三)数据库监控

1.共性的指标

1        监控数据库系统中关键的资源

2        监测读写页面的使用情况

3        监控超出共享内存缓冲区的操作数

4        监测上一轮询期间作业等待缓冲区的时间

5        跟踪共享内存中物理日志和逻辑日志的缓冲区的使用率

6        监控磁盘的数据块使用情况以及被频繁读写的热点区域

7        监控用户事务或者表空间监控事务日志

8        监控数据库锁资源

9        监测关键业务的数据表的表空间增长

10      监控SQL执行情况

2.监控建议-针对监控内存缓冲区、会话及磁盘等方面

1        监控超出共享内存缓冲区的操作:可以调整缓冲区大小,更好的支持系统运行

2        扩展的会话/用户检查以及参数控制:发现不合理顺序扫描操作,从而分配附加的资源,修改应用程序,降低对系统资源的要求

3        磁盘:监控数据块的使用情况以及被频繁读写的热点区域,可以平衡数据量的存储分配及I/O分配

3.数据库举例

1        Oracle:内存统计、SQL分析、会话统计、事件统计

2        Sysbase

3        DB2

4        SQL Server

 (四)中间件监控

1.中间件分类

1        Web服务器: Apache

2        Web应用服务器: WebsphereWebLogic

3        应用服务器: tuxedo

2.中间件举例

1        TUXEDO

2        WebSphere:队列性能计数器、通道性能计数器

3        WebLogicLogBaroadcasterRuntimeServerSecurityRuntime

 四.负载压力测试解决方案-疲劳强度测试

强调长时间的考核,主要是过长时间运行系统,发现问题

1.日常强度疲劳强度测试

   模拟系统的日常业务(正常情况),持续执行一段时间,暴露系统的性能问题,如内存泄露、资源争用

2.高峰业务疲劳强度测试

1  模拟系统的高峰业务(最大业务量),持续执行一段时间,暴露系统的性能问题

2  时间指标要满足:(1)这段模拟时间所处理的交易量要达到系统疲劳强度需求的业务量 2 在这段测试周期中必须通过加大负载,以及尽可能长的测试周期来保证疲劳强度测试

 五.负载压力测试解决方案-大数据量测试

1.大数据量测试类型

1        独立数据量测试:针对某些系统存储、传输、统计、查询等业务进行单用户大数据量测试,如大量的批处理任务

2        综合数据量测试:采用并发测试、疲劳强度测试以及大数据量测试相结合的综合测试方案

2.自动生成大数据量

1        借助自动化测试工具,利用数据库测试数据自动生成工具,如TESTBytes

2        利用自动化负载压力测试工具,模拟用户业务操作,同时并发数百个或数千个用户生成相关数据

3        自主开发数据生成工具

4        数据库本身的辅助工具

3.大数据量管理

1        手工管理:

2        自动化工具管理:File-Aid/CS 数据库管理工具 ,完成比较数据和数据库结构;转换关系数据库数据成XML数据;比较XML数据与关系数据库数据;比较XML文件;数据迁移

 61.负载压力测试指标分析

   主要包括客户端交易处理性能指标、服务器资源监控指标、数据库资源监控指标、Web服务器监控指标、中间件监控指标

62.负载压力测试实施

测试计划

分析应用程序:系统组件、系统配置、分析使用模型、分析任务分布

定义测试目标:以可度量的指标制定目标、确定测试时间

计划方案实施

检查测试目标:响应时间、最优硬件配置、可靠性、瓶颈、系统容量

测试需求分析

采用8020原理测试强度估算及UCML压力需求分析、任务分布图、交易混合图方法   275例子

测试案例制定

测试策略:对比测试环境和真实业测试环境;测试案例:表格形式显示数据案例;测试内容:并发、疲劳、资源监控

测试环境、工具、数据准备

测试脚本录制、编写与调试

场景制定

创建Vuser组、配置Vuser组中的Vuser、配置Vuser运行时的设置、配置负载生成器、配置终端服务设置、配置WAN仿真设置、配置脚本

测试执行

运行场景、在执行期间查看Vuser、监视场景、

获取测试结果

结果评估与测试报告

交易处理性能评估、资源占用性能评估、故障分析、数据库服务器性能问题及原因分析

 63.软件自动化测试基本概念

定义

通过测试工具或其他手段,按照测试工程师的预定计划对软件产品进行自动的测试

优点

提高测试质量、提高测试效率、缩短测试工作时间、提高测试覆盖率、执行手工测试不能完成的测试任务、更好的重现软件缺陷能力、更好的利用资源、增进开发人员与测试人员的合作伙伴关系

缺点

对于定制型项目、周期短的项目不适于;业务规则复杂的对象工具很难实现;人体感观与易用性测试无法实现、不稳定的软件、涉及与物理设备交互

 64.选择自动化测试工具

分类

负载压力测试工具、功能测试工具、白盒测试工具、网络测试工具、测试管理测试工具、测试辅助工具

应用策略

从功能、价格、测试工具的长期投资三个方面考虑

 65.功能自动化测试

作用

帮助测试工程师自动处理测试开发到测试执行的整个过程中的问题,可以创建可修改且可复用的测试脚本,随时执行脚本,减少劳动量、提高测试效率

原理

采用录制回放的方式来模拟用户的实际操作;采用环境判断录制模式或模拟模式

步骤

创建脚本、调试脚本、执行测试、结果分析

 66.负载压力自动化测试

作用

可以记录客户端的操作,模拟上百或上千虚拟用户同时操作的情景,对系统进行性能测试

原理

采用录制回放的方式来模拟用户的实际操作;

步骤

协议选择、创建测试脚本、参数化测试数据、创建虚拟用户、执行测试、结果分析

5 黑盒测试

一.黑盒测试概述(2.10 黑盒测试)

1.定义

也称功能测试,它是通过测试来检测每个功能是否都能正常使用

把程序看成一个黑盒子,完全不考虑程序内部结构和内部特性,着眼于程序外部结构,不考虑内部逻辑结构

在程序接口进行测试,只检查程序功能是否按照需求说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息

主要针对软件界面和软件功能进行测试

2.试图发现的错误类型

功能不正确或遗漏

界面错误(输入能否正确的接受?能否输出正确的结果)

数据库访问错误(如数据结构定义错误或外部信息(如数据文件)访问错误)

性能错误

初始化和终止错误

3.黑盒测试用例设计方法

1      等价类划分法:把程序的输入域划分成若干部分,然后从每个部分中选取少数代表性数据作为测试用例。每一类的代表性数据在测试中的作用等价于这一类的其他值

2      边界值分析法:通过选择等价类边界的测试用例。不仅重视输入条件边界,而且也必须考虑输出域边界

3      错误推测法:基于经验和直觉推测程序中所有可能存在的各种错误,从而有针对性地设计测试用例的方法

4      因果图法:从用自然语言书写的程序规格说明的描述中找出因(输入条件)和果(输入或程序状态的改变),可以通过因果图转换成判定表

5      判定表驱动法:利用判定表进行测试用例的设计

6      正交试验设计法:使用已设计好的正交表格来安排试验,并进行数据分析的一种方法,目的是用最少的测试用例达到最高的测试覆盖率

7      功能图法:用功能图形象地表示程序的功能说明,并机械地生成功能图的测试用例。功能图模型由状态迁移图和逻辑功能模型构成

二.黑盒测试用例设计方法

1.等价类划分法

1)划分基础:需求规格说明书中输入、输出要求

2)等价类:某个输入域的子集合;分为有效等价类和无效等价类

l  有效等价类:指对于程序规格说明书来说是合理的、有意义的输入数据构成的集合。利用有效等价类可以检验程序是否实现了规格说明书中的功能和性能

l  无效等价类:与有效等价的定义恰巧相反

3)划分等价类原则(6条)

序号

输入条件(数据)

划分等价类

1

规定了取值范围

值的个数

一个有效等价类

两个无效等价类

2

规定了输入值的集合

规定了必须如何的条件

一个有效等价类

一个无效等价类

3

是一个布尔量

一个有效等价类

一个无效等价类

4

输入数据的一组值(n个),并且程序对每一个输入值分别进行处理

n个有效等价类

一个无效等价类

5

规定必须遵守的规则

一个有效等价类(符合规则)

若干个无效等价类

6

在确知已划分的等价类中,各元素在程序处理中的方式不同的情况下,则应再将该等价类进一步地划分为更小的等价类

    4 列出等价类表

在确定了等价类之后,建立等价类表,列出所有划分出的等价类

输入条件

有效等价类

无效等类

……

……

……

 5 确定测试用例步骤

l  第一步:为每个等价类规定一个惟一的编号

l  第二步:设计一个新的测试用例,使其尽可能多地覆盖尚未覆盖的有效等价类。重复这一步骤,最后使得所有有效等价类均被测试用例所覆盖

l  第三步:设计一个新的测试用例,使其只覆盖一个无效等价类。重复这一步骤,最后使得所有有效等价类均被测试用例所覆盖

小结:采用等价类划分方法设计测试用例,按照划分等价类、列出等价列表、确定测试用例三个步骤完成,目标是把可能的测试用例组合缩减到仍然足以满足软件测试需求为止。

 2.边界值分析法

1 边界类型

l  边界条件:可以在产品说明书中有定义或者在使用软件过程中确定

l  次边界条件:在软件内部,也称为内部边界条件

l  其他边界条件:如输入信息为空(对于此类问题应建立单独的等价类空间)、非法、错误、不正确和垃圾数据

2)边界值的选择方法(遵循原则)

序号

输入条件(数据)

输入边界值数据

1

规定了取值范围

刚刚达到这个范围

刚刚超越这个范围

2

规定值的个数

最大个数、比最大个数大1

最小个数、比最小个数少1

3

根据规格说明书的每个输出条件,使用 原则12

4

输入或输出是个有序集合

集合的第一个、最后一个元素

5

程序中使用一个内部数据结构

内部数据结构边界上的值

6

分析规格说明,找出其他可能的边界

 3)例子:

l  允许文本输入1255个字符:测试用例-12552540256

l  程序读写软盘:测试用例-文件很小、等于软盘容量限制之内、空、超过

l  程序允许在一张纸上打印多个页面:测试用例-只打印一页,规定最大页,0页,大于允许最大页数

 3.错误推测法

基本思想:列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据它们选择测试用例

 4.因果图法

   侧重于输入条件的各种组合,各个输入情况之间的相互制约关系

1      因果图设计方法

从用自然语言书写的程序规格说明的描述中找出因果,通过因果图转换成判定表

2      因果图导出测试用例步骤

l   第一步:分析程序规格说明的描述中,哪些是原因,哪些是结果。原在因常常是输入条件或是输入条件的等价类,结果是输出条件

l  第二步:分析程序规格说明的描述中语义的内容,并将其表示成连接各个原因与各个结果的因果图

l  第三步:标明约束条件

l  第四步:把因果图转换成判定表

l  第五步:为判定表中每一列表示的情况设计测试用例

3      因果图基本图形符号

通常在因果图中,用Ci 表示原因,Ei表示结果,各结点表示状态,可取值0(状态不出现) 1(某状态出现)

l  恒等:若原因出现,则结果出现;若原因不出现,则结果不出现

l  非(~):若原因出现,则结果不出现;若原因不出现,则结果出现

l  或(V):若几个原因中有一个出现,则结果出现;若几个原因都不出现,则结果不出现;

l  与():若几个原因都出现,结果才出现;若其中有一个原因不出现,则结果不出现

4      因果图的约束符号

从输入(原因)考虑四种约束

l  E(互斥):表示两个原因不会同时成立,两个中最多有一个可能成立

l  I(包含):表示三个原因中至少有一个必须成立

l  O(惟一):表示两个原因中必须有一个,且仅有一个成立

l  R(要求):表示两个原因,a出现时,b也必须出现,a出现时,b不可能不出现

从输出(结果)考虑一种约束

l  M(屏蔽):两个结果,a1时,b必须是0,当a0时,b值不定

5.判定表驱动法

1      判定表:是分析和表达多逻辑条件下执行不同操作的情况的工具

2      判定表组成

l  条件桩:列出了问题的所有条件

l  动作桩:列出了问题规定可能采取的操作

l  条件项:列出针对它所列条件的取值,在所有可能情况下的真假值

l  动作项:列出在条件项的各种取值情况下应该采取的动作

l  规则:任何一个条件组合的特定取值及其相应要执行的操作

注:判定表中贯穿条件项和动作项的一列就是一条规则;

3      判定表的建立(步骤)

l  第一步:确定规则的个数。假如有n个条件,每个条件有两个取值(0,1),故有2n种规则

l  第二步:列出所有的条件桩和动作桩

l  第三步:填入条件项

l  第四步:填入动作项。制定初始判定表

l  第五步:简化。合并相似规则或者相同动作

4      适合使用判定表设计测试用例的条件

l  规格说明以判定表的形式给出,或很容易转换成判定表

l  条件的排列顺序不影响执行哪些操作

l  规则的排列顺序不影响执行哪些操作

l  当某一规则的条件已经满足,并确定要执行的操作后,不必检验别的规则

l  如果某一规则要执行多个操作,这些操作的执行顺序无关紧要

6.正交试验法

1      概述

l  从大量的试验数据中挑选适量的、有代表性的点,从而合理地安排测试的一种科学的试验设计方法

l  使用已造好的表格正交表来安排试验并进行数据分析的一种方法

l  因子:影响实现指标的条件

l  因子的状态:影响实现因子的条件

2      优点

l  节省测试工时

l  可控制生成的测试用例的数量

l  测试用例具有一定的覆盖率

3      设计步骤

l  提取功能说明,构造因子状态表。

l  加权筛选,生成因素分析表;

l  利用正交表构造测试数据集,正交表的推导依据Galois理论

L:代表正交表,L827)代表7为因子数,2为因子的水平数,8为此表行的数目(试验次数)

行数为mn型的正交表中,试验次数(行数)=(每列水平数-1)+1

例:53水平因子及一个2水平因子,表示为35*21,试验次数=5*(3-1)+1*(2-1)+112,即L1235*2

7.功能图法

1      程序功能说明的组成

l  动态说明:描述输入数据的次序或转移次序

l  静态说明:描述输入条件和输出条件之间的对应关系

2      功能图:由状态迁移图和布尔函数组成,状态迁移图用状态和迁移来表示。一个状态指出数据输入的位置(或时间),一个迁移指明状态的改变,同时要依靠判定表或因果图表示的逻辑功能

3      功能图法概述

l  用功能图形象地表示程序的功能说明,并机械地生成功能图的测试用例

l  功能图模型由状态迁移图和逻辑功能模型构成

v    状态迁移图:用于表示输入数据序列以及相应的输出数据;由输入数据和当前状态决定输出数据和后续状态

v    逻辑功能模型:用于表示在状态中输入条件和输出条件的对应关系。由输入数据决定输出数据。此模型只适用于描述静态说明

l  功能图测试用例由测试中经过的一系列状态和在每个状态中必须依靠输入/输出数据满中的一对条件组成

4      测试用例生成方法

从状态迁移图中选取测试用例,用节点代替状态,用弧线代替迁移,状态图就可转化成一个程序的控制流程图形式

5      测试用例生成规则

为了把状态迁移(测试路径)的测试用例与逻辑模型(局部测试用例)的测试用例组合起来,从功能图生成实用的测试用例,在一个结构化的状态迁移(SST)中,定义3种形式的循环:顺序,选择和重复

6      功能图生成测试用例步骤

l  生成局部测试用例:在每个状态中,从因果图生成局部测试用例。局部测试用例由原因值(输入数据)组合与对应的结果值(输出数据或状态)构成

l  测试路径生成:利用上面的规则生成从初始状态到最后状态的测试路径

l  测试用例合成:合成测试路径与功能图中每个状态的局部测试用例。结果是初始状态到最后状态的一个状态序列,以及每个状态中输入数据与对应输出数据的组合。

l  测试用例的合成算法:采用条件构造树

 8.场景法

1      基本流和备选流

采用此方法进行设计时,需要进行场景的设计,在场景中采用基本流和备选流表示经过用例的每条路径

l  基本流:采用直黑线表示,是经过用例的最简单的路径(无任何差错,程序从开始直接执行到结束)

l  备选流:采用不同颜色表示,一个备选流可能从基本流开始,在某个特定条件下执行,然后重新加入基本流中,也可以起源于另一个备选流,或终止用例,不在加入到基本流中;(各种错误情况)

2      设计步骤

l  根据说明,描述出程序的基本流及各项备选流

l  根据基本流和各项备选流生成不同的场景

l  对每一个场景生成相应的测试用例

l  对生成的所有测试用例重新复审,去掉多余的测试用例,测试用例确定后,对每一个测试用例确定测试数据值

三.黑盒测试用例设计方法的选择策略

1        首先进行等价类划分,包括输入条件和输出条件的等价类划分,将无限测试变成有限测试,这是减少测试量和提高测试效率的最有效办法

2        在任何情况下都必须使用边界值分析方法。此方法设计的测试用例发现程序错误的能力最强

3        可以用错误和推测法追加一些测试用例

4        对照程序的逻辑,检查已设计的测试用例的逻辑覆盖度,如果没有达到要求,应在补充

5        如果程序的功能说明中含有输入条件的组合情况,一开始就可以使用因果图法和判定表驱动法

6        对于参数配置类的软件,要用正交试验法选择较少的组合方式达到最佳效果

7        功能图法也是很好的测试用例设计方法,我们可以通过不同时期条件的有效性设计不同的数据

8        对于业务流清晰的系统,可以利用场景法贯空整个测试案例过程,在案例中综合使用各种方法

四.测试用例的编写

1. 测试用例概述

1      定义

l  将测试行为具体量化的方法之一

l  设计一种情况,软件程序在这种情况下,必须能够正常运行并且达到程序所设计的执行结果

l  为达到最佳的测试效果或高效的揭露隐藏的错误而精心设计的少量测试数据,

l  一个好的测试用例是在于它能发现至今未发现的错误

2      优点:

l  在开始实施测试之前设计好测试用例,可以避免盲目测试并提高测试效率

l  测试用例的使用令软件测试的实施重点突出、目的明确

l  在软件版本更新后只需修正少部分的测试用例便可展开测试工作,降低工作强度,缩短项目周期

l  功能模块的通用化和复用化使软件易于开发,而测试用例的通用化和复用化使软件测试易于开展,并随着测试用例的不断精化其效率也不断攀升

2.计划测试用例的目的

3      计划测试用例,是达成测试目标的必由之路

4      组织性:使测试用例具有组织性,便于全体测试员和其他项目小组人员有效地审查和使用

5      重复性和跟踪,可以明确测试过程中测试用例的执行情况,保证测试的全面性

6      计划测试用例,可以避免发布忽略某些测试用例的软件

7      测试证实,正确的测试用例计划和跟踪提供了一种证实测试的手段

3.测试设计说明

1      定义:在测试计划中提炼测试方法,要明确指出设计包含的特性以及相关的测试用例和测试程序,并指定判断通过/失败的规则

2      目的;组织和描述针对具体特性需要进行的测试,注:不给出具体的测试用例或执行测试的步骤

3      包含的部分内容(来自ANSI/IEEE829   ANSI 美国国家标准化组织)

l  标识符:用于引用和定位测试设计说明的惟一标识符

l  要测试的特性:对测试设计说明所包含的软件特性的描述。还将明确出要间接测试的特性

l  方法:描述测试的通用方法。如果方法在测试计划中描述,在测试设计说明中要详细描述要使用的技术,并给出如何验证测试结果的方法

l  测试用例信息:用于描述所引用的测试用例的相关信息。如测试用例编号

l  通过/失败规则:描述用什么规则来判定某项特性的测试结果是通过还是失败。

4.测试用例说明

1      定义(ANSI/IEEE829):编写用于输入的实际数据和预期结果,并明确指出使用具体测试用例产生的测试程序的任何限制

2      包含的内容

l  标识符:由测试设计过程说明和测试程序说明引用的唯一标识符

l  测试项:描述被测试的详细特性、代码模块等

l  输入说明:列举执行测试用例的所有输入内容或者条件

l  输出说明:描述进行测试用例预期的结果

l  环境要求:执行测试用例的软件、硬件、测试工具及人员等要求

l  特殊要求:描述执行测试用例的特殊要求

l  用例之间的依赖性:注明与其分用例的依赖关系或受其他用例的影响

5. 测试程序说明

1      定义:明确指出为实现相关测试设计而执行具体测试用例和操作软件系统的全部步骤,有时也称为测试脚本说明,即详细定义了执行测试用例的每一步操作

2      包含的内容

l  标识符:把测试程序与相关测试用例和测试设计相联系的惟一标识

l  目的:本程序描述的目的以及将要执行的测试用例的引用信息

l  特殊要求:执行测试所需的其他程、特殊测试技术或者特殊设备

l  程序步骤:执行测试用例的详细描述,包括

v    日志:指出记录测试结果和现象的方式

v    设置:如何准备测试

v    启动:启动测试的步骤

v    程序:运行测试的步骤

v    衡量标准:描述如何判断结果

v    关闭:描述因意外原因页推迟测试的步骤

v    终止:描述正常停止测试的步骤

v    重置:说明如何把环境恢复到测试前的状态

v    偶然事件:说明如何处理计划之外的情况

测试用例设计练习1.采用因果图方法设计测试用例

某个软件的规格说明中包含下面的要求:

第一列字符必须是AB,第二列字符必须是一个数字,在此情况下进行文件的修改。但如果第一列字符不正确,则给出信息L,如果第二列字符不是数据,则给出信息M

 6 白盒测试技术

相关知识点

软件测试方法:分为两类

1)静态测试:不要求在计算机上实际执行所测程序,主要以一些人工的模拟技术对软件进行分析和测试

2)动态测试:通过输入一组预先按照一定的测试准则构造的实例数据动态运行程序,而达到发现程序错误的过程,特点如下:

必须生成测试数据来运行被测试程序,取得程序运行的真实情况、动态情况,进而进行分析

测试质量依赖于测试数据

生成测试数据,分析测试结果的工作量大,使开展测试工作费时、费力、费人

动态测试中涉及多方面工作,人员多,设备多,数据多,要求有较好的管理和工作规程

 一.概述

1 定义

也称结构测试或逻辑驱动测试,按照程序内部的结构对程序进行测试,通过测试来检查产品内部动作是否按照设计规格说明书的规定正常进行,检查程序中的每条通路是否能按照预定要求正确工作

2 测试内容

把测试对象看成是一个打开的盒子,测试人员依据程序内部逻辑结构相关信息,设计或选择测试用例,对程序的所有逻辑路径进行测试,通过不同点检查程序的状态,确定实际的状态与预期的状态一致

3 测试基本技术

1)词法分析与语法分析

2)静态错误分析

3)程序插桩技术

4 测试方法

1)代码检查法

2)静态结构分析法

3)静态质量度量法

4)逻辑覆盖法

5)基本路径测试法

6)域测试

7)符号测试

8Z路径覆盖

8      程序变异

5.黑盒测试与白盒测试

黑盒测试

白盒测试

不涉及程序结构

考查程序逻辑结构

用软件规格说明书生成测试用例

用程序结构信息生成测试用例

可适用于从单元测试到系统联调

适用于单元测试和集成测试

某些代码段得不到测试

对所有逻辑路径进行测试

 二.白盒测试基本技术

1.词法和语法分析

1)获取信息

可以获取软件组成的重要基本因数,如变量标识符、过程标识符、常量等

组合获取的基本因数,可以得到软件的基本信息,如:

标号交叉引用表:列出各模块中出现的全部标号及标号的属性,模块以外的全局、计算标号

变量交叉引用表:列出变量定义及引用信息,变量的属性,变量类型(全局、局部)

子程序、宏和函数表:列出各个子程序、宏及函数的属性,输入、输出参数信息

等价表:列出在等价语句和等值语句中出现的全部变量和标号

常数表:列出全部数字常数和字符常数

2)作用

直接从表中查出说明/使用错误,如标号交叉引用表、变量交叉引用表

为用户提供辅助信息,如子程序、宏和函数表、等价表、常数表

用来做错误预测和程序复杂度计算,如操作符和操作数的统计表

2.静态错误分析

用于确定在源程序中是否有某类错误或危险结构,包括以下几种:

1      类型和单位分析

对源程序的类型进行检查,为了强化检查效果,扩充一些新的数据类型,进行静态预处理程序,分析程序中的类型错误

2      引用分析

对程序中变量的引用进行检查,发现引用异常错误(如变量在定义前被引用,变量定义后未被引用)。

采用深度优选的方法遍历程序流图的每一条路径

建立引用异常的探测工具,包括变量定义表和变量引用表

3      表达式分析

对表达式进行分析,以发现和纠正在表达式出现的错误,如:

在表达式中不正确的使用了括号造成错误

数组下标越界错误

除数为零

浮点数计算的误差(最复杂)

4      接口分析

接口一致性是程序的静态错误分析和设计分析共同研究的题目,接口分析主要对下内容时进行一致性的分析:

各模块之间接口一致性

模块与外部数据库的接口一致性

形参与实参在类型,数量,顺序,维数,使用上的一致性

全局变量和公共数据区在使用上的一致性

3.程序插桩技术

1      概述

在动态测试中,是一种基本的测试手段,有广泛的应用

主要借助向程序中插入操作,来实现测试目的的方法(即向源程序中添加一些语句(也称探测器),实现对程序语句的执行、变量的变化等情况进行检查)

2      设计时考虑的问题

明确要探测哪些信息

在程序的什么部位设置探测点

需要设计多少个探测点

3      探测点设置位置(以Fortran为例)

程序块的第一个可执行语句之前

l entry语句的前后

有标号的可执行语句处

循环语句之后

条件语句之后

l logical if语句之后

l call语句之后

Go to语句之后

4      断言语句

在程序中的特定部位插入某些用以判断变量特性的语句,使得程序执行中这些语句得以证实,从而使程序的运行特性得到证实,我们把这些插入的语句称为断言语句。

三.白盒测试方法-静态测试

1        代码检查法

1 目的

通过桌面检查,代码审查和走查方式,对以下内容进行检查

检查代码和设计的一致性

代码对标准的遵循、可读性

代码逻辑表达的正确性

代码结构的合理性

程序编写与编写标准的符合性

程序中不安全、不明确和模糊的部分

编程风格问题等

2 代码检查方式

 方式名称

执行人员

检查内容

检查过程

桌面检查

程序员

对源程序代码进行分析、检验,并补充相关的文档,发现程序中的错误

代码审查

程序员和测试员组成的审查小组

通过阅读、讨论和争议,以程序进行静态分析的过程

第一步:小组成员提前阅读设计规格书、程序文本等相关文档

第二步:召开程序审查会,开发人员读程序,审查小组讨论、发现、解决问题

走查

程序员和测试员组成的审查小组

通过逻辑运行程序,发现问题

第一步:小组成员提前阅读设计规格书、程序文本等相关文档

第二步:利用测试用例,使程序逻辑运行,记录程序的踪迹,发现、讨论、解决问题

 3 代码检查项目(采用分析技术)

检查变量的交叉引用表:检查未说明的变量和违反了类型规定的变量,变量的引用和使用情况

检查标号的交叉引用表:验证所有标号的正确性

检查子程序、宏、函数:验证每次调用与所调用位置是否正确,调用的子程序、宏、函数是否存在,参数是否一致

等价性检查:检查全部等价变量的类型的一致性

常量检查:确认常量的取值和数制、数据类型

标准检查:检查程序中是否违反标准的问题

风格检查:检查程序的设计风格

比较控制流:比较设计控制流图和实际程序生成的控制流图的差异

选择、激活路径:在设计控制流图中选择某条路径,到实际的程序中激活这条路径,如果不能激活,则程序可能有错

对照程序的规格说明,详细阅读源代码,比较实际的代码,从差异中发现程序的问题和错误

补充文档

根据以上检查项目,可以编制代码规则,规范和检查表等作为测试用例

4 编码规范

程序编写过程中必须遵守的规则,规定代码的语法格式、语法规则,如排版、注释、标识符命名、可读性、变量、函数、过程、可测性、程序效率、质量保证、代码编辑、编译、审查、代码测试、维护、宏等各方面的编码要求

5 代码检查规则

对程序逻辑结构检查时,所规定的规则,形成

6 缺陷检查表

主要包括一些容易出错的地方和在以往工作中遇到的典型错误,形成表格形式

 

重要性

审查项

结论

文件结构

重要

头文件和定义文件的名称是否合理

 

2        静态结构分析法

在静态结构分析中,测试者通过使用测试工具分析程序源代码的系统结构、数据结构、数据接口、内部控制逻辑等内部结构,生成函数调用关系图模块控制流图、内部文件调用关系图等各种图形图表,清晰地标识整个软件的组成结构,便于理解,通过分析这些图表,检查软件有没有存在缺陷或错误;包括控制流分析、数据据流分析、接口分析、表达式分析

1      函数调用关系图:通过应用程序各函数之间的调用关系展示了系统的结构。列出所有函数,用连线表示调用关系,作用:

可以检查函数的调用关系是否正确

是否存在孤立的函数而没有被调用

明确函数被调用的频繁度,对调用频繁的函数可以重点检查

2      模块控制流图:由许多结点和连接结点的边组成的图形,其中每个结点代表一条或多条语句,边表示控制流向,可以直观地反映出一个函数的内部结构。

*例子1GIS软件:存在无法执行的死代码;有多个出口,可能没有在所有出口进行内存释放与回收,有内存泄露的可能

*例子2MIS软件:有多个出口,存在内存泄露的可能;有10逻辑判断结点,易出现逻辑错误,降低可靠性,可能会破坏对CPU操作进行优化的处理,影响其运行性能

3        静态质量度量法

1      软件质量:根据ISO/IEC9126 国际标准,包括以下六个方面:

功能性(functionality

可靠性(reliability

可用性(usability

有效性(efficiency

可维护性(maintainability

轻便性(portability

2      质量度量模型(从上到下)

质量因素(Factors):与分类标准的计算方式相似,依据各分类标准取值组合权重方法来计算,依据结果将软件质量分为四个等级,与分类标准等级内容相同

分类标准(criteria):对某一软件质量分为不同的分类标准,每个分类标准由一系列度量规则组成,每个规则分配一个权重,每个分类标准的取值由规则的取值与权重值计算得出,依据结果将软件质量分为四个等级:

优秀(excellent):符合本模型框加中的所有规则(可以接受)

良好(good):未大量偏离模型框架中的规则(可以接受)

一般(fair):违背了模型框架中的大量规则(可以接受)

较差(poor):无法保障正常的软件可维护性(不可以接受)

度量规则(Metrics):使用代码行数、注释频度等参数度量软件各种行为属性

四. 白盒测试方法-动态测试(即设计测试用例的方法)

1        白盒测试的动态测试原则-根据程序的控制结构设计测试用例

1      保证每个模块的所有独立路径至少被使用一次

2      对所有的逻辑值均测试truefalse

3      上下边界及可操作范围内运行所有循环

4      检查内部数据结构以确保其有效性

2        逻辑覆盖法

1       概述

         逻辑覆盖是通过对程序逻辑结构的遍历实现程序的覆盖

2       分类-依据覆盖源程序语句的详尽程度

语句覆盖 SCStatement Coverage

判定覆盖 DCDecision coverage

条件覆盖 CCCondition Coverage

条件判定组合覆盖 CDCCondition/ DecisionCoverage

多条件覆盖 MCC Multiple ConditionCoverage

修改条件判定覆盖 MCDCMultiple ConditionDecision Coverage

3       语句覆盖

选择足够多的测试数据,使被测程序中每条语句至少执行一次

缺点:对程序执行逻辑的覆盖很低

4       判定覆盖

设计足够多的测试用例,使得程序中的每一个判定至少获得一次值和值,或者使得程序中的每一个取分支或取分支至少经历一次,因此又称分支覆盖

可以满足语句覆盖

缺点:主要对整个表达式最终取值进行度量,忽略了表达式内部取值

5       条件覆盖

设计足够多的测试用例,使得每一判定语句中每个逻辑条件的可能值至少满足一次

不能够满足判定覆盖

6       条件判定组合覆盖

设计足够多的测试用例,使得判定中的每个条件的所有可能(真/假)至少出现一次,并且每个判定本身的判定结果也至少出现一次

缺点:没有考虑单个判定对整体结果的影响,无法发现逻辑错误

7       多条件覆盖

也称条件组合覆盖,设计足够多的测试用例,使得每个判定中条件的各种可能组合都至少出现一次(以数轴形式划分区域,提取交集,建立最少的测试用例)

满足条件覆盖一定满足判定覆盖、条件覆盖、条件判定组合覆盖

缺点:判定语句较多时,条件组合值比较多

8       修正条件判定覆盖

每一个程序模块的入口和出口点都要考虑至少要被调用一次,每个程序的判定到所有可能的结果值要至少转换一次

程序的判定被分解为通过逻辑操作符(andor)连接的bool条件,每个条件对于判定的结果值是独立的

 练习1:采用多条件覆盖方法,对下程序进行白盒测试用例设计

if ((a >1 )&&( b= = 0))

{

   x=x/a;

}

if (( a = = 2)|| (x > 1 ))

{

   x=x+1;

}

第六章 白盒测试->四.白盒测试方法

3        基本路径覆盖

1      概述

在程序控制流图的基础上,通过分析程序控制流图的环路复杂性,导出基本可执行路径的集合,然后据此设计测试用例

设计出的测试用例要保证在测试中程序的每一条可执行语句至少执行一次

2      程序控制流图

控制流图是描述程序控制流的一种方式

图形符号:圆圈代表一个结点 表示一个或多个无分支的语句或源程序语句

边和点圈定的部分叫做区域。当对区域计数时,图形外的一个部分也应记为一个区域

判断语句中的条件为复合条件时,即条件表达式由一个或多个逻辑运算符连接的逻辑表达式(a and b),则需要改变复合条件的判断为一系列只有单个条件的嵌套的判断

   图形符号图所示

 3      程序环路复杂性

程序的环路复杂性即McCabe复杂性度量,简单的定义为控制流图的区域数

从程序的环路复杂性可导出程序基本路径集合中的独立路径条数,这是确保程序中每个可执行语句至少执行一次所必须的测试用例数目的上界

独立路径:包括一组以前没有处理的语句或条件的一条路径

通常环路复杂性可用以下三种方法求得:

将环路复杂性定义为控制流图中的区域数。

E为控制流图的边数,N为图的结点数,则定义环路复杂性为 V(G)EN2

若设P为控制流图中的判定结点数,则有 V(G)P1

4      基本路径测试步骤

以详细设计或源代码为基础,导出程序的控制流图

计算得到控制流图G的环路复杂性v(g)

确定线性无关的路径的基本集

生成测试用例,确保基本路径集中每条路径的执行

 五.其他白盒测试方法

1        域测试

1      概述

是一种基于程序结构的测试方法,基于对程序输入空间(域)的分析,选择适的测试点进行测试

2      Howden错误分类-相对于程序路径分类

域错误:程序的控制流存在错误,对于某一特定的输入可能执行的是一条错误路径,这种错误称为路径错误,也叫做域错误

计算型错误:对于特定输入执行的路径正确,但赋值语句的错误导致输出结果错误,称为计算型错误

丢失路径错误:由于程序中的某处少了一个判定谓词而引起的

3      测试理想结果:检验输入空间的每一个输入元素是否都产生正确的结果

4      缺点

为进行域测试对程序提出的限制过多

当程序存在很多路径时,所需的测试点很多

2        符号测试

1)概述

基本思想是允许程序的输入不仅仅是具体的数值数据,而且包括符号值,符号值可以是基本的符号变量值,也可以是符号变量值的表达式。

符号测试执行的是代数运算,可以作为普通测试的一个扩充

符号测试可以看作是程序测试和程序验证的一个折衷办法

2)测试理想情况:程序中仅有有限的几条执行路径,如果都完成了符号测试,就可把握的确认程序的正确性了

3)缺点

分支问题

二义性问题

大程序问题

3        Z路径覆盖

1      概述

对循环机制进行简化,减少路径的数量,使得覆盖所有路径成为可能,简化循环意义下的路径覆盖称为Z路径覆盖

2      循环简化:限制循环次数,只考虑循环一次或零次情况

4        程序变异

1)概述

是一种错误驱动测试

错误驱动测试:指该方法是针对某类特定程序错误的,即专门测试某类错误是否存在

错误驱动测试分类:程序强变异和程序弱变异

2)优点:便于集中目标对软件危害最大的可能错误,提高测试效率,降低成本

六. 白盒测试综合策略

1       白盒测试中测试方法的选择策略

1     在测试中,首先尽量使用测试工作进行静态结构分析

2     采用先静态后动态的组合方式,先进行静态结构分析,代码检查和静态质量度量,然后现进行覆盖测试

3     利用静态结构分析的结果,通过代码检查和动态测试的方法对结果进一步确认,使测试工作更为有效

4     覆盖率测试是白盒测试的重点,使用基本路径测试达到语句覆盖标准;对于重点模块,应使用多种覆盖标准衡量代码的覆盖率

5     不同测试阶段,侧重点不同

单元测试:以代码检查、逻辑覆盖

集成测试:增加静构结构分析、静态质量度量

系统测试:根据黑盒测试结果,采用白盒测试

2      最少测试用例数计算

将构成循环操作的重复型结构用选择结构代替,因此在N-S图中只存在顺序和分支操作

l N-S图按分支结构分层,整个程序的最少测试用例数为每个分层中最少测试用例数的乘积

3      测试覆盖标准

l FosterESTCA覆盖标准

l Woodward等人的层次LCSAJ覆盖标准

 总结:黑盒测试与白盒测试

 【例6】下面是快速排序算法中的一趟划分算法,其中datalist是数据表,它有两个数据成员:一是元素类型为Element的数组V,另一个是数组大小n。算法中用到两个操作,一是取某数组元素V[i]的关键码操作getKey ( ),一是交换两数组元素内容的操作Swap( )
   int Partition ( datalist &list, int low, int high ) {
   //
在区间[ low, high ]以第一个对象为基准进行一次划分,k返回基准对象回放位置。
int  k = low;  Element pivot = list.V[low];    //基准对象
   for ( int i = low+1; i <= high; i++ )       //检测整个序列,进行划分
      if ( list.V[i].getKey ( ) < pivot.getKey( ) &&++ k != i ) 
         Swap ( list.V[k], list.V[i] );         //
小于基准的交换到左侧去
      Swap ( list.V[low], list.V[k] );       //将基准对象就位  
      return k;             //
返回基准对象位置
   }
 (1)
试画出它的程序流程图;
 (2) 试利用路径覆盖方法为它设计足够的测试用例(循环次数限定为0次,1次和2次)。
答案:(1)流程图如下。
(2) 测试用例设计
 循环次数                        
 low  high  k  i  V[0]  V[1]  V[2]  k i  V[0]  V[1]  V[2]  
 0   0   0  0  1   -   -   -  0 1   -   -   -  
①③
 1   0   1  0  1   1   2   -  0 2   1   2   -  ①②⑤⑥③
  0   1  0  1   2   1   -  1  2  1   2   -  ①②④⑥③
  0   1  0  1   1   1   -  0  2  1   1   -  ①②⑤⑥③
 2   0   2  0  1   1   2   3  0 3   1   2   3  ①②⑤⑥②⑤⑥③
  0   2  0  1   1   2   1  0  3  1   2   1  ①②⑤⑥②⑤⑥③
  0   2  0  1   2   3   1  1  3  1   2   3  ①②⑤⑥②④⑥③
  0   2  0  1   3   2   1  2  3  1   2   3  ①②④⑥②④⑥③
  0   2  0  1   2   1   2  1  3  1   2   2  ①②④⑥②⑤⑥③
  0   2  0  1   2   1   3  1  3  1   2   3  ①②④⑥②⑤⑥③
  0   2  0  1   1   1   2  0  3  1   1   2  ①②⑤⑥②⑤⑥③
  0   2  0  1   2   2   1  1  3  1   2   2  ①②⑤⑥②④⑥③
  0   2  0  1   2   2   2  0  3  2   2   2  ①②⑤⑥②⑤⑥③
                                                
分析:画程序流程图是设计测试用例的关键。从以往同学解题的经验来看,在画流程图时就出错了。所以首先要把流程图中的逻辑关系搞清楚再画出正确的流程图。考虑测试用例设计需要首先有测试输入数据,还要有预期的输出结果。对于此例,控制循环次数靠循环控制变量i和循环终值high。循环0次时,取low = high,此时一次循环也不做。循环一次时,取low +1 = high,循环二次时,取low+2 = high
根据BRO策略,条件V[i] < pivot&& ++k≠i的约束集合为 { (<, < ), (<, =), (=, <), (>, < ) },因此,测试用例设计为: 
循环次数                        
 low  high  k  i  V[0]  V[1]  V[2] pivot  k  i  V[0]  V[1]  V[2]  
 0   0   0  0  1   -   -   -   - 0  1   -   -   -   
 1   0   1  0  1   1   2     1 0  2   1   2    (>, <)
  0   1  0  1   2   1     2  1 2   2 1   1 2    (<, =)
  0   1  0  1   1   1     1  0  2  1   1    (=, <)
  0   1  0  1  
                (<, <)
 2     0   2  0  1   1   2   3  1  00  23   1 1   2 2   3 3  (>, <)(>, <)
  0   2  0  1   1   2   1   1  00 23   1 1   2 2   1 1  (>, <) (=, <)
  0   2  0  1   2   3   1   2  01 23   2 2 1   3 1 2   1 3 3  (>, <) (<, <)
  0   2  0  1  
                (>, <) (<, =)
  0   2  0  1   3   2   1   3  12 23   3 3 1   2 2 2   1 1 3  (<, =) (<, =)
  0   2  0  1   2   1   2   2  11 23   2 2 1   1 1 2   2 2 2  (<, =) (=, <)
  0   2  0  1   2   1   3   2  11 23   2 2 1   1 1 2   3 3 3  (<, =) (>, <) 
  0   2  0  1  
                (<, =) (<, <)
  0   2  0  1   1   1   2   1  00 23   1 1   1 1   2 2  (=, <) (>, <)
  0   2  0  1   2   2   1   2  01 23   2 2 1   2 1 2   1 2 2  (=, <) (<, <) 
  0   2  0  1   2   2   2   2  00 23   2 2   2 2   2 2  (=, <) (=, <)
  0   2  0  1  
                (=, <) (<, =)
  0   2  0  1  
                (<, <) (*, *)
 
四、习题
5-1】从供选择的答案中选出应填入下列(   )中的字句。
软件测试的目的是(  A  )。为了提高测试的效率,应该(  B  )。使用白盒测试方法时,确定测试数据应根据(  C  )和指定的覆盖标准。与设计测试数据无关的文档是(  D  )。
软件的集成测试工作最好由(  E  )承担,以提高集成测试的效果。
供选择的答案:
 A.   评价软件的质量        发现软件的错误
找出软件中的所有错误     证明软件是正确的
 B.   随机地选取测试数据     
取一切可能的输入数据作为测试数据
在完成编码以后制定软件的测试计划
选择发现错误的可能性大的数据作为测试数据
 C.   程序的内部逻辑        程序的复杂程度
使用说明书        程序的功能
 D.   该软件的设计人员      程序的复杂程度
源程序          项目开发计划
 E.   该软件的设计人员      该软件开发组的负责人
该软件的编程人员      不属于该软件开发组的软件设计人员
5-2】请从供选择的答案中选出应填入下列(     )中的字句。
程序的三种基本控制结构是(  A  )。它们的共同点是(  B  )。结构化程序设计的一种基本方法是(  C  )。软件测试的目的是(  D  )。软件调试的目的是(  E  )。
供选择的答案:
 A.   过程,子程序,分程序      顺序,条件,循环
递归,堆栈,队列        调用,返回,转移
 B.   不能嵌套使用          只能用来写简单的程序
已经用硬件实现          只有一个入口和一个出口
 C.   筛选法     递归法     归纳法     逐步求精法
 D.   证明程序中没有错误      发现程序中的错误
测量程序的动态特性      检查程序中的语法错误
 E.   找出错误所在并改正之      排除存在错误的可能性
对错误性质进行分类      统计出错的次数 
5-3】从下列关于软件测试的叙述中,选出5条正确的叙述。
 (1) 用黑盒法测试时,测试用例是根据程序内部逻辑设计的。
 (2) 尽量用公共过程或子程序去代替重复的代码段。
 (3) 测试是为了验证该软件已正确地实现了用户的要求。
 (4) 对于连锁型分支结构,若有n个判定语句,则有2n条路径。
 (5) 尽量采用复合的条件测试,以避免嵌套的分支结构。
 (6) GOTO语句概念简单,使用方便,在某些情况下,保留GOTO语句反能使写出的程序更加简洁。
 (7) 发现错误多的程序模块,残留在模块中的错误也多。
 (8) 黑盒测试方法中最有效的是因果图法。
 (9) 在做程序的单元测试时,桩(存根)模块比驱动模块容易编写。
 (10) 程序效率的提高主要应通过选择高效的算法来实现。
5-4】从供选择的答案中选出同下列关于软件测试的各条叙述关系最密切的字句。
 (1) 对可靠性要求很高的软件,例如操作系统,由第三者对源代码进行逐行检查。
 (2) 已有的软件被改版时,由于受到变更的影响,改版前正常的功能可能发生异常,性能也可能下降。因此,对变更的软件进行测试是必要的。
 (3) 在意识到被测试模块的内部结构或算法的情况下进行测试。
 (4) 为了确认用户的需求,先做出系统的主要部分,提交给用户试用。
 (5) 在测试具有层次结构的大型软件时,有一种方法是从上层模块开始,由上到下进行测试。此时,有必要用一些模块替代尚未测试过的下层模块。
供选择的答案:
 A ~ E   仿真器     代码审查   模拟器            驱动器 
域测试     黑盒测试     原型      白盒测试     退化测试
5-5】对小的程序进行穷举测试是可能的,用穷举测试能否保证程序是百分之百正确呢?
5-6】在任何情况下单元测试都是可能的吗?都是需要的吗?
5-7】从供选择的答案中选出应填入下面有关软件测试的叙述的(    )内的正确答案。
软件测试方法可分为黑盒测试法和白盒测试法两种。
黑盒测试法是通过分析程序的(  A  )来设计测试用例的方法。除了测试程序外,它还适用于对(  B )阶段的软件文档进行测试。
白盒测试法是根据程序的(  C  )来设计测试用例的方法。除了测试程序外,它也适用于对(  D  )阶段的软件文档进行测试。
白盒法测试程序时常按照给定的覆盖条件选取测试用例。(  E  )覆盖比(  F  )覆盖严格,它使得每一个判定的每一条分支至少经历一次。(  G  )覆盖既是判定覆盖,又是条件覆盖,但它并不保证使各种条件都能取到所有可能的值。(  H  )覆盖比其他条件都要严格,但它不能保证覆盖程序中的每一条路径。
单元测试一般以(  I  )为主,测试的依据是(  J  )。
供选择的答案:
 A, C 应用范围     内部逻辑      功能      输入数据
 B, D 编码      软件详细设计   软件总体设计   需求分析
 E, F, G, H 语句     判定        条件      判定/条件
  多重条件     路径
 I 白盒法          黑盒法
 J 模块功能规格说明     系统模块结构图     系统需求规格说明
5-8】从供选择的答案中选出应该填入下列关于软件测试的叙述的(  )内的正确答案。
软件测试中常用的静态分析方法是(  A  )和(  B  )。(  B  )用于检查模块或子程序间的调用是否正确。分析方法(白盒方法)中常用的方法是(  C  )方法。非分析方法(黑盒方法)中常用的方法是(  D  )方法和(  E  )方法。(  E  )方法根据输出对输入的依赖关系设计测试用例。
供选择的答案:
 A ~ B   引用分析     算法分析     可靠性分析   效率分析  
       
接口分析     操作分析
 C ~ E   路径测试     等价类      因果图     归纳测试
综合测试     追踪        深度优先     调试
相对图
5-9】下面是选择排序的程序,其中datalist是数据表,它有两个数据成员:一是元素类型为Element的数组V,另一个是数组大小n。算法中用到两个操作,一是取某数组元素V[i]的关键码操作getKey ( ),一是交换两数组元素内容的操作Swap( ):: 
   void SelectSort ( datalist & list ) {
   //
对表list.V[0]list.V[n-1]进行排序, n是表当前长度。
      for ( int i = 0; i < list.n-1; i++ ) {
      int k = i;         //
list.V[i].keylist.V[n-1].key中找具有最小关键码的对象
      for ( int j = i+1;  j < list.n;  j++)
         if ( list.V[j].getKey ( ) < list.V[k].getKey( ) ) k = j;    //
当前具最小关键码的对象
      if ( k != i ) Swap ( list.V[i], list.V[k] );         //交换
          }
       }
 (1)
试计算此程序段的McCabe复杂性;
 (2) 用基本路径覆盖法给出测试路径;
 (3) 为各测试路径设计测试用例。
5-10】根据下面给出的规格说明,利用等价类划分的方法,给出足够的测试用例。
一个程序读入三个整数。把此三个数值看成是一个三角形的三个边。这个程序要打印出信息,说明这个三角形是三边不等的、是等腰的、还是等边的。
5-11】设要对一个自动饮料售货机软件进行黑盒测试。该软件的规格说明如下:
有一个处理单价为15角钱的盒装饮料的自动售货机软件。若投入15角硬币,按下可乐雪碧红茶按钮,相应的饮料就送出来。若投入的是2元硬币,在送出饮料的同时退还5角硬币。
 (1)
试利用因果图法,建立该软件的因果图;
 (2) 设计测试该软件的全部测试用例。
5-12】对一个长度为100,000条指令的程序进行测试,记录下来的数据如下:
  ú 测试开始, 发现错误个数为0;
  ú
经过160小时的测试, 累计改正100个错误, 此时, MTTF = 0.4小时;
  ú 又经过160小时的测试, 累计改正300个错误, 此时, MTTF = 2小时;
 (1) 估计程序中固有的错误总数;
 (2)
为使MTTF达到10小时, 必须测试和调试这个程序多长时间
 (3)
给出MTTF与测试时间t之间的函数关系。
5-13】应该由谁来进行确认测试?是软件开发者还是软件用户?为什么?
五、习题解答
5-1A.   B.   C.   D.   E.
软件测试的目的是软件中的错误。因为不可能把所有可能的输入数据都拿来测试(时间花费不起),为了提高测试的效率,应该选择发现错误的可能性大的数据作为测试数据。
使用白盒测试方法时,确定测试数据应根据程序的内部逻辑和指定的覆盖标准,可以不考虑程序的功能。与设计测试数据无关的文档是项目开发计划。
软件的集成测试工作最好由不属于该软件开发组的软件设计人员承担,以提高集成测试的效果。
5-2A.   B.   C.   D.   E.
 1966年,BohmJacopini提出任何单入口单出口的没有死循环的程序都能由三种最基本的控制结构构造出来。这三种基本控制结构就是顺序结构选择IFTHENELSE结构重复DOWHILEDOUNTIL结构 它们的共同点是只有一个入口和一个出口。E.W.Dijkstra提出了程序要实现结构化的主张,并将这一类程序设计称为结构化程序设计。这种方法的一个重要原则就是采用自顶向下、逐步求精的方法编写程序。N.Wirth曾做过如下说明:我们对付一个复杂问题的最重要的方法就是抽象。 因此,对于一个复杂的问题,不要急于马上用计算机指令、数字和逻辑符号来表示它,而应当先用较自然的抽象的语句来表示,从而得到抽象的程序。抽象程序对抽象的数据类型进行某些特定的运算,并用一些合适的记号(可以是自然语言)来表示。下一步对抽象程序再做分解,进入下一个抽象的层次。这样的细化过程一直进行下去,直到程序能被计算机接受为止。此时的程序已经是用某种高级语言或机器指令书写的了。
软件调试则是在进行了成功的测试之后才开始的工作。它与软件测试不同,软件测试的目的是尽可能多地发现软件中的错误,但进一步诊断和改正程序中潜在的错误,则是调试的任务。调试活动由两部分组成: 确定程序中可疑错误的确切性质和位置。 对程序(设计,编码)进行修改,排除这个错误。
5-3】正确的叙述有(4)(5)(6)(7)、(10)。
黑盒测试主要是根据程序的有关功能规格说明和覆盖准则来设计测试用例,进行测试的,不是根据程序的内部逻辑来设计测试用例,这是白盒测试做的事情。在所有黑盒测试方法中,最有效的不是因果图法,而是边界值分析方法。测试的目的是尽可能多地发现软件中的错误,其附带的收获才是验证该软件已正确地实现了用户的要求。测试的一条重要原则是:发现错误多的程序模块,残留在模块中的错误也多。软件可靠性模型(Shooman)就是依据这个原则建立它的公式的。对于连锁型分支结构,若有n个判定语句,则有2n条路径。因此,随着n的增大,路径数增长非常快。单元测试时,因为桩模块要模拟子模块的功能,这不是一件容易的事情,而驱动模块只是控制被测模块的执行,所以桩模块的编写比驱动模块的编写要难得多。
在程序设计风格方面,如果重复的代码段没有明显的功能,不可以抽取出来形成独立的公共过程或子程序,只有在这些代码段表现出独立的功能时,才可把它们抽取出来形成独立的公共过程或子程序。另外,程序效率的提高主要应通过选择高效的算法或使用高效的语言编译器来实现。GOTO语句概念简单,使用方便,在某些情况下,保留GOTO语句反能使写出的程序更加简洁,这句话是正确的。
5-4(1)   (2)   (3)   (4)   (5)
(1) 对可靠性要求很高的软件,由第三者对源代码进行逐行检查,这是代码审查。
(2) 软件变更时可能发生退化现象:原来正常的功能可能发生异常,性能也可能下降。因此,对变更的软件要进行退化测试。
(3) 基于被测试模块的内部结构或算法设计测试用例进行测试,这是白盒测试。
(4) 为了确认用户的需求,先做出系统的原型,提交给用户试用。
(5) 自顶向下对具有层次结构的大型软件进行集成测试时,需要设计一些虚拟模块来替代尚未测试过的下层模块,这些模块叫做桩模块。
5-5】对小程序进行穷举测试,不见得能保证程序百分之百正确。所谓穷举测试是拿所有可能的输入数据来作为测试用例(黑盒测试),或覆盖程序中所有可能的路径(白盒测试)。对于小程序来说,实际上并不能真正作到穷举测试。例如前面讲过,一个小程序P只有两个输入XY及输出Z,在字长为32位的计算机上运行。如果XY只取整数,考虑把所有的XY值都做为测试数据,按黑盒方法进行穷举测试,这样做可能采用的测试数据组(XiYi),基数(radixi的最大可能数目为:232×232264。如果程序P测试一组XY数据需要1毫秒,而且假定一天工作24小时,一年工作365天,要完成264组测试,需要5亿年。
5-6】单元测试又称模块测试,是针对软件设计的最小单位程序模块,进行正确性检验的测试工作。其目的在于发现各模块内部可能存在的各种差错。单元测试需要从程序的内部结构出发设计测试用例。多个模块可以平行地独立进行单元测试。
单元测试是在编码阶段完成的,每编写出一个程序模块,就开始做这个模块的单元测试,所以只要采用模块化方法开发软件,单元测试都是必需的。它可由编写程序的人来完成。因为它需要根据程序的内部结构设计测试用例,对于那些不了解程序内部细节的人,这种测试无法进行。
5-7A.  B.  C.  D.  E.  F.  G.  H.  I.  J.
软件测试方法可分为黑盒测试法和白盒测试法两种。黑盒测试法是基于程序的功能来设计测试用例的方法。除了测试程序外,它还适用于对需求分析阶段的软件文档进行测试。白盒测试法是根据程序的内部逻辑来设计测试用例的方法。除了测试程序外,它也适用于对软件详细设计阶段的软件文档进行测试。
白盒法测试程序时常按照给定的覆盖条件选取测试用例。判定覆盖比语句覆盖严格,它使得每一个判定的每一条分支至少经历一次。判定/条件覆盖既是判定覆盖,又是条件覆盖,但它并不保证使各种条件都能取到所有可能的值。多重条件覆盖,也叫组合条件覆盖,比其他条件都要严格,但它不能保证覆盖程序中的每一条路径。
单元测试一般以白盒法为主,测试的依据是系统的模块功能规格说明。
5-8A.   B.   C.   D.   E.
软件测试中常用的静态分析方法是引用分析和接口分析。接口分析用于检查模块或子程序间的调用是否正确。分析方法(白盒方法)中常用的方法是路径测试方法。非分析方法(黑盒方法)中常用的方法是等价类(划分)方法和因果图方法。因果图方法根据输出对输入的依赖关系设计测试用例。
5-9(1) McCabe环路复杂性 = 5
 (2)
独立路径有5条:    
     
①③
      ①②⑤⑧……
     
①②⑤⑨……
     
①②④⑥……
     
①②④⑦……
 (3)
为各测试路径设计测试用例:
     
路径①③:取n = 1
     
路径①②⑤⑧……:取n = 2,
         
预期结果:路径⑤⑧③不可达  
     
路径①②⑤⑨……:取n = 2,
         
预期结果:路径⑤⑨③不可达
     路径①②④⑥⑤⑧③
         n = 2, V[0] = 2,V[1] = 1, 预期结果:k = 1, V[0] = 1, V[1] = 2
     
路径①②④⑥⑤⑨③
         n = 2, V[0] = 2,V[1] = 1, 预期结果:k = 1, 路径⑨③不可达
     路径①②④⑦⑤⑧③
         n = 2, V[0] = 1,V[1] = 2, 预期结果:k = 0, 路径⑧③不可达
     路径①②④⑦⑤⑨③
         n = 2, V[0] = 1,V[1] = 2, 预期结果:k = 0, V[0] = 1, V[1] = 2
5-10】设三角形的三条边分别为A, B, C。如果它们能够构成三角形的三条边,必需满足:
A > 0B > 0C > 0,且A + B > CB + C > AA+ C > B
如果是等腰的,还要判断是否A = B,或B = C,或A = C
对于等边的,则需判断是否A = B,且B = C,且A = C
 列出等价类表:

     输入条件         有效等价类            无效等价类
是否三角形的三条边  (A > 0) (1), (B > 0) (2),(C > 0) (3),  (A + B > C), (4)(B + C > A)(5),  (A + C > B) (6)    A £ 0 (7),  B £ 0 (8),  C£ 0 (9),A + B £ C (10),  A + C £ B  (11),B + C £ A (12)
是否等腰三角形  (A = B) (13), (B = C) (14),(A = C) (15)  (A ¹ B) and (B ¹ C) and (A ¹C) (16) 
是否等边三角形  (A = B) and (B = C)and (A = C)   (17)  (A ¹ B) (18), (B ¹ C) (19),(A ¹ C) (20)

     
设计测试用例:输入顺序是〖ABC
 §345〗覆盖等价类 (1), (2), (3), (4), (5),(6)。满足即为一般三角形。
§012〗覆盖等价类 (7)。不能构成三角形。   若不考虑特定A, B, C
§102〗覆盖等价类 (8)。同上。            三者取一即可
§120〗覆盖等价类 (9)。同上。
§123〗覆盖等价类 (10)。同上。   若不考虑特定A, B, C
§132〗覆盖等价类 (11)。同上。   三者取一即可
§312〗覆盖等价类 (12)。同上。
§334〗覆盖等价类 (1), (2), (3),(4), (5), (6), (13)    满足即为等腰三角形,
§344〗覆盖等价类 (1), (2), (3),(4), (5), (6), (14)    若不考虑特定A, B, C
§343〗覆盖等价类 (1), (2), (3),(4), (5), (6), (15)    三者取一即可
§345〗覆盖等价类 (1), (2), (3),(4), (5), (6), (16)。不是等腰三角形。
§333〗覆盖等价类 (1), (2), (3),(4), (5), (6), (17)。是等边三角形
§344〗覆盖等价类 (1), (2), (3),(4), (5), (6), (14), (18)   不是等边三角形,
§343〗覆盖等价类 (1), (2), (3),(4), (5), (6), (15), (19)   若不考虑特定A, B, C
§334〗覆盖等价类 (1), (2), (3),(4), (5), (6), (13), (20)   三者取一即可
5-11(1) 因果图
        输入条件(原因)                                 输出条件(结果)
    投入15角硬币   (1)                              (21) 退还5角硬币
                   E                   
   
投入2元硬币       (2)         (11)                  (22) 送出可乐饮料
    可乐按钮     (3)                              (23) 送出雪碧饮料
    雪碧按钮 E   (4)      Ú  (12)                 (24) 送出红茶饮料
    红茶按钮     (5)
(2)
测试用例设计 

 1  2  3  4  5  6  7  8  9 10  11
 
 投入15角硬币  (1)  1  1  1  1 0  0  0  0  0  0  0
 
投入2元硬币  (2)  0  0  0  0 1  1  1  1  0  0  0
 
可乐按钮  (3)  1  0 0  0  1  0  0  0  1  0  0
 
雪碧按钮  (4)  0  1 0  0  0  1  0  0  0  1  0
 
红茶按钮  (5)  0  0 1  0  0  0  1  0  0  0  1
中间结点     已投币  (11)  1  1  1  1 1  1  1  1  0  0  0
   
已按钮  (12)  1  1 1  0  1  1  1  0  1  1  1
 
 退还5角硬币  (21) 0  0  0  0  1  1  1  0  0  0 0
 
送出可乐饮料  (22)  1  0 0  0  1  0  0  0  0  0  0
 
送出雪碧饮料  (23)  0  1 0  0  0  1  0  0  0  0  0
 
送出红茶饮料  (24)  0  0 1  0  0  0  1  0  0  0  0
测试用例  每一纵列为一个测试用例
5-12】由shooman公式:

其中,IT = 105MTTF1 = 0.4T1 = 160n1 = 100MTTF2 = 2T2 = 320n2 = 300。得:

 (1)  解得程序中固有得错误总数ET = 350,此外K = 1000
 (2)  MTTF = 10,有

     解得x = 340。由可靠性累积曲线EC (t) = ET (1-e-K1 t )
         100 = 350 (1-e-160K1)
           300 = 350 (1-e-320K1)
     
解得 K1 » 0.01。代入:340 = 350 (1-e-K1 t ) = 350(1-e-0.01 t )
        t = (ln(35))/0.01 » 356 (
小时)
     
因此求得为使MTTF = 10,测试和调试该程序需要花费356小时。
 (3)  MTTF与测试时间t之间的函数关系:   
 
因为EC (t) = ET (1-e-K1 t ),则ET - EC (t) = ET e-K1 t。代入shooman公式:
5-13】在对照需求做有效性测试和软件配置审查时,是由软件开发者在开发环境下进行的测试。而接下来做验收测试时则以用户为主。软件开发人员和QA(质量保证)人员也应参加。由用户参加设计测试用例,使用用户界面输入测试数据,并分析测试的输出结果。一般使用生产中的实际数据进行测试。
如果软件是为多个客户开发的,则需要进行α测试和β测试。α测试是由一个用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的测试。软件在一个自然设置状态下使用。开发者坐在用户旁边,随时记下错误情况和使用中的问题。这是在受控制的环境下进行的测试。
β测试是由软件的多个用户在一个或多个用户的实际使用环境下进行的测试。这些用户是与公司签定了支持产品预发行合同的外部客户,他们要求使用该产品,并愿意返回有关错位错误信息给开发者。与α测试不同的是,开发者通常不在测试现场。因而,β测试是在开发者无法控制的环境下进行的软件现场应用。

第七章 面向对象的软件测试技术

相关知识点-面象对象(=Object Oriented)技术

1  对象和类

面象对象的编程语言:以对象为中心,以消息为驱动,程序=对象+消息

类是一种新的数据类型,是设计的核心,是通过抽象数据类型的方法来实现的一种数据类型

类是对某一对象的抽象,对象是某一类的实例,两者密切相关

2  封装、继承和多态性

1        封装:把数据和操作结合一体,使程序结构更加紧凑,避免了数据紊乱带来的调试与维护的困难

2        继承:可以从一个类派生到另一个类,派生类继承了父类和祖先类的数据成员和函数,增加了软件的可扩充性,并为代码重用提供了强有力的手段

3        多态性:多种表现形式,可以用一个对外接口,多个内在实现方法表示。

一.面向对象测试模型

1  面向对象测试的分类

依据面向对象开发模型(面向对象分析、面向对象设计、面向对向编程),分为:

1        面向对象分析的测试(OOA Test)、面向对象设计的测试(OODTest):是对分析结果和设计结果的测试,主要对分析设计产生的文本进行的,是软件开发前期的关键性测试

2        面向对象编程的测试(OOP Test):对编程风格和程序代码实现进行测试,主要的测试内容在OOUnit TestOO Integrate Test中体现

3        面向对象单元测试(OO Unit Test):对程序内部具体单一的功能模块的测试,主要对类成员函数的测试,是OOIntegrate Test的基础

4        面向对象集成测试(OO IntergrateTest):对系统内部的相互服务进行测试,如成员函数间的相互作用,类间的消息传递。不仅要基于OO Unit Test,还要参考OODOODTest的结果

5        面向对象确认测试(OO System Test)、面向对象系统测试(OOSystem Test):最后阶段的测试,以用户需求为测试标准,借鉴OOA OOATest的结果

2  面向对象测试模型

 二. 面向对象软件的测试策略

1  面向对象分析的测试

1 面向对象分析

是把E-R图和语义网络模型,即信息造型中的概念,与面向对象程序设计语方中的重要概念结合在一起而形成的分析方法。通常以问题空间的图表的形式进行描述

2 分析方法

直接映射问题空间,全面地将问题空间中实现功能的现实抽象化。将问题空间中的实例抽象为对象,用对象的结构反映问题空间的复杂实例和复杂关系,用属性和服务表示实例的特性和行为。

3 面向对象分析缺点

对问题空间分析抽象的不完整,会影响软件的功能实现,导致软件开发后期产生大量原本可避免的修补工作;一些冗余的对象或结构类的选定,程序的整体结构和增加程序员不必要的工作量,因此 OOA测试的重点在其完整性和冗余性

4 OOA测试划分的五个方面

对认定的对象的测试、对认定的结构的测试、对认定的主题的测试、对定义的属性和实例关联的测试、对定义的服务和消息关联的测试

测试内容

概述

测试考虑方面

认定的对象的测试

认定的对象:对问题空间中的结构、其他系统、设备、被记忆的事件、系统涉及的人员等实际实例的抽象

(1)是否全面,问题空间中的实例是否都反映在认定的抽象对象中了

(2)是否具有多个属性,只具有一个属性的对象不抽象为为独立的对象

(3)对认定为同一对象的实例是否有共同的、区别于其他实例的共同属性

(4)对认定为同一对象的实例是否提供或需要相同的服务,如果服务随着实例的不同而变化,认定的对象就需要分析或利用继承性来分类表示

(5)如果系统没有必要始终保持对象代表的实例信息,提供或者得到关于它的服务、认定的对象也无必要

(6)认定的对象的名称要尽量准确、适用

认定的结构的测试

认定的结构:多种对象的组织方式,用来反映问题空间中的复杂实例和复杂关系,认定的结构分为两种:分类结构

组装结构

分类结构:体现问题空间中实例的一般与特殊的关系

(1)结构中一种对象尤其是高层对象,是否存在不同于下一层对象的特殊的可能性,即是否能派生出下一层对象

(2)结构中一种对象尤其是同一低层对象,是否能抽象出在现实中有意义的更一般的上层对象

(3)对所有认定的对象,是否能向上层抽象出现实中有意义的对象

(4)高层的对象的特性是否完全体现下层的共性

(5)低层的对象是否有高层特性基础上的特殊性

组装结构:体现问题空间中实例的整体与局部的关系

(1)整体对象和部件对象的组装关系是否符合现实的关系

(2)整体对象和部件对象是否在考虑的问题空间中有实际关系

(3)整体对象是否遗漏了在问题空间中有用的部件对象

(4)部件对象是否能够在问题空间中组装成新的有意义的的整体对象

认定的主题的测试

主题:在对象和结构的基础上更高一层的抽象,是为了提供OOA 分析结果的可见性,如同文章中各章的摘要

(1)贯彻George Miller的‘7+2’原则。如果主题个数超过7个,对有较密切属性和服务的主题归并

(2)主题所反映的一组对象和结构是否具有相同或相近的属性和服务

(3)认定的主题是否是对象和结构更高一层的抽象,是否便于理解OOA 结果的概括

(4)主题间的消息联系(抽象)是否代表了主题所反映的对象和结构之间的所有关联

对定义的属性和实例关联的测试

属性:用来描述对象或结构所反映的实例的特性

实例关联:反映实例集合间的映射关系

(1)定义的属性是否对相应的对象和分类结构的每个现实实例都适用

(2)定义的属性在现实世界是否与这种实例关系密切

(3)定义的属性在问题空间是否与实种实例关系密切

(4)定义的属性是否能够不依赖于其他属性被独立理解

(5)定义的属性在分类结构中的位置是否恰当,低层对象的共有属性是否在上层对象属性中体现

(6)在问题空间中每个对象的属性是否定义完整

(7)定义的实例关联是否符合现实

(8)在问题空间中实例关联是否定义完整,特别需要注意‘一对多’、‘多对多’的实例关联

对定义的服务和消息关联的测试

定义的服务:定义的每一种对象和结构在问题空间所要求的行为

消息关联:问题空间中实例之间必要的通信,需要定义相应的消息关联

(1)对象和结构在问题空间中的不同状态是否定义相应的服务

(2)对象和结构所需的服务是否都定义了相应的消息关联

(3)定义的消息关联所指引的服务是否正确

(4)沿着消息关联执行的线程是否合理,是否符合现实过程

(5)定义的服务是否重复,是否定义了能够得到的服务

  2  面向对象设计(OOD)的测试

1 面向对象设计(OOD

采用造型的观点,以OOA为基础归纳出类,并建立类结构或进一步构造类库,以实现分析结果对问题空间的抽象。OOD归纳的类即可以是对象的简单延续,也可以是不同对象的相同或相似的服务

2 OODOOA

OODOOA的进一步细化和更高层的抽象,所以OODOOA的界限很难区分,OOD确定类和类结构不仅是满足当前需求分析要求,更重要是通过重新组合或加以适当的补充,方便实现功能重用和扩增。因此,OOD的测试,建议针对功能的实现和重用以及OOA结果的分析

3 OOD测试划分的三个方面

 3  面向对象编程(OOP)的测试

1 面向对象程序

把功能的实现分布在类中,能正确实现功能的类,通过消息传递来协同实现设计要求的功能。将出现的错误精确的确定在某一具体的类上。

2 测试重点

忽略类功能实现的细则,将测试的目光集中在类功能的实现和相应的面向对象程序风格上

3 测试方面(c++为例)

测试方面

概述

数据成员是否满足娄据封装的要求

数据封装:是数据和数据操作的集合

基本原则:检查数据成员是否被外界(数据成员所属的类或子类以外的调用)直接调用。当改变数据成员的结构时,是否影响了类的对外接口,是否会导致相应的外界必须改动

类是否实现了要求的功能

类所实现的功能是通过成员函数执行的,应首先保证成员函数的正确性

单独看待成员函数,可以使用面向对象单元测试方法

类成员函数间的作用和类之间的服务调用,需要进行面向对象集成测试

注:测试类的功能,不能仅满足于代码能无错地运行或被测试类所提供的功能无错,应该以所做的OOD结果为依据,检测类提供的功能是否满足设计的要求,是否有缺陷,必要时还应该参照OOA的结果,以之为最终标准

 4  面向对象软件的单元测试

1 可以将一些传统的单元测试方法在面向对象软件的单元测试中使用,如等价类划分、因果图、边界值分析法、逻辑覆盖法、路径分析法、程序插桩法,单元测试一般建议由程序员完成

2 单元级测试的测试分析和测试用例,规模和难度均远小于对整个系统的测试分析和测试用例,并且对语句应该有100%的代码执行覆盖率。

3 设计测试用例选择输入数据的两个假设:

如果函数(程序)对某一类输入中的一个数据正确执行,对同类中的基他输入也能正确执行(等价类)

如果函数(程序)对某一复杂度的输入正确执行,对更高复杂度的输入也能正确执行

4 针对继承性,BrianMarick两方面的考虑

继承的成员函数是否都不需要测试:当继承的成员函数在子类中做了改动;成员函数调用了改动过的成员函数的部分这两种情况需要对子类重新测试

对父类的测试是否能照搬到子类:可以重新测试或在父类原有的测试要求和测试用例上增加新的测试要求和测试用例,主要针对子类中变动的部分进行测试

5  面向对象软件的集成测试

1 传统的自顶向下或自底向上的集成测试策略在面向对象软件的集成测试中无意义,OO软件的集成测试需要在整个程序编译完成后进行,面向对象程序具有动态特性,程序的控制流无法确定,只能对编译完成的程序做基于黑盒子的集成测试

2 面向对象软件的集成测试两种策略

基于线程的测试(Threadbased testing):集成对响应系统的一个输入或事件所需的一组类,每个线程分别进行集成和测试,应用回归测试以保证没有产生副作用。

基于使用的测试(Usebased testing):通过测试那些几乎不使用服务器类的的类(独立类)而开始构造系统,在独立类测试完成后,下一层中使用独立类的类(依赖类)被测试,这个依赖类层次的测试序列一直持续到构造完整个系统。

3 测试目的

      能够检测出相对独立的,单元测试无法检测出的,那些类相互作用时才会产生的错误,只关注于系统的结构和内部的相互作用

4 面向对象软件的集成测试过程

第一步:静态测试  针对程序的结构进行,检测程序结构是否符合设计要求。通过使用测试软件的可逆性工程功能,得出源程序的类系统图和函数功能调用关系图,与OOD结果相比较,检测程序结构和实现上是否有缺陷,检测OOP是否达到了设计要求

第二步:动态测试 根据静态测试得出的函数功能调用关系图或类关系图作为参考,按照如下步骤设计测试用例,达到如下测试覆盖标准

v  设计测试用例步骤:选定检测的类,参考OOD分析结果,确定出类的状态和相应的行为;确定覆盖标准;利用结构关系图确定待测类的所有关联;根据程序中类的对象构造测试用例,确认使用什么输入激发类的状态,使用类的服务和期望产生什么行为等,还要设计一些类禁止的例子,确认类是否有不合法的行为产生

v  覆盖标准:达到类所有的服务要求或服务提供的一定覆盖率;依据类间传递的消息,达到对所有执行线程的一定覆盖率;达到类的所有状态的一定覆盖率等

6  面向对象软件的确认和系统测试

1 系统测试:需要测试它与系统其他部分配套运行的表现,以确保在系统各部分协调工作的环境下软件也能正常运行

2 要求:测试环境尽量与用户实际使用环境相同,保证被测系统的完整性,对暂时没有的系统设备部件,应采取相应的模拟手段。参考OOA分析结果,检测软件是否能够完全再现问题空间

3 不仅是检测软件的整体行为表现,另一方面对软件设计开发的确认。OO软件的确认和系统测试具体的测试内容与传统的系统测试基本相同,包括:功能测试,强度测试,性能测试,安全测试,易用性测试,恢复测试,安装/卸载测试

三.OO软件测试用例设计原则(Berard

关注于设计合适的操作序列以测试类的状态

1   对每个测试用例应当给予特殊的标识,并且还应当与测试的类有明确的联系

2   测试目的应当明确

3   应当为每个测试用例开发一个测试步骤列表,列表包含内容

列出所要测试对象的说明

列出将要作为测试结果的消息和操作

列出测试对象可能发生的例外情况

列出外部条件,为了正确对软件进行测试所必须有的外部环境的变化

列出为了帮助理解和实现测试所需要的附加信息

四.OO软件测试的方法

1     基于故障的测试

1 具有较高的发现可能故障的能力

2 从分析模型开始,考察可能发生的故障,设计用例去执行设计和代码

3 可用于集成测试,发现消息联系中可能的故障(可能的故障指意料之外的结果、错误地使用了操作/消息、不正确地引用等)

4 除用于操作测试外,还可用于属性测试,用以确定其对于不同类型的对象行为是否赋予了正确的属性值

5 是从客户对象(主动)上发现错误

6 不能发现的错误:不正确的规格说明,用户不需要的功能或缺少用户需要的功能;没有考虑子系统间的交互作用

2     基于场景的测试

1 主要关注用户需要做什么,不是产品能做什么,即从用户任务(使用用例)中找出用户要做什么及如何去执行

2有助于在一个单元测试情况下检查多重系统,比基于故障的测试更实际,更复杂一点

3 OO类的随机测试

如果一个类有多个操作(功能),这些操作(功能)序列有多种排列,这种不变化的操作序列可随机产生,用这种可随机排列来检查不同类实例的生存史,称为随机测试

4.类层次的分割测试

1 可以减少用完全相同的方式检查类测试用例的数目,类似于等价类划分

2 分类:基于状态的分割、基于属性的分割、基于类型的分割

基于状态的分割:按类操作是否会改变类的状态进行分割(归类)

基于属性的分割:按类操作所得到的属性来分割(归类)

基于类型的分割:按完成的功能分割(分类),如初始操作、计算操作、查询操作

5     由行为模型(状态、活动、顺序和合作图)导出的测试

状态转换图(STD)可以用来帮助导出类的动态行为的测试序列,以及这些类与之合作的类的动态行为测试用例,根据状态转换图,设计出最小测试用例,加入其他测试序列到最小测试序列中,保证类所有行为被充分检查

总结:

   本章主要讲述了面向对象软件的测试方法,依据面向对象软件开发模型划分面向对象测试模型,其中单元测试、集成测试、确认测试和系统测试通过与传统的单元测试、集成测试和确认测试、系统测试进行比较,得出面向对象软件的测试内容

 第八章 应用负载压力测试

一.  负载压力测试概述

1.负载压力

指系统在某种指定软件、硬件以及网络环境下承受的流量,如并发的用户数、持续运行时间、数据量等。其中并发的用户数是负载压力的重要体现。

2.负载压力测试

指在一定测试约束条件下,测试系统所能承受的并发用户量、运行时间、数据量,以确定系统所能承受的最大负载压力

l  负载压力测试是性能测试的重要组成部分

3.性能测试

用来保证产品发布后系统的性能能够满足用户需求,包括两种测试策略:性能评测、性能调优

2        性能评测-性能调优的基础

在真实环境下,检查系统服务等级的满足情况,评估并报告整个系统的性能

对系统的未来容量作出预测和规划

3        性能调优

性能调优步骤

查找形成系统瓶颈或者故障的根本原因

进行性能调整和优化

评估性能调整的效果

4.负载测试

通过逐步增加系统负载,测试系统性能的变化,并最终确定在满足性能指标的情况下,系统所能承受的最大负载量的测试

5.压力测试

通过逐步增加系统负载,测试系统性能的变化,并最终确定在什么负载条件下,系统性能处于失效状态,并以此来获得系统能提供的最大服务级别的测试

压力测试是为了发现在什么情况下系统的性能会变得不可接受

6.并发性能测试

并发性能测试的过程,是一个负载测试和压力测试的过程。

逐渐增加并发用户数负载,直到系统的瓶颈或者不能接收的性能点,能过综合分析交易执行指标,资源监控指标来确定系统并发性能的过程

并发性能测试是负载压力测试中的重要内容

并发性能测试包括:应用在客户端性能的测试、应用在网络上性能的测试、应用在服务器端上性能的测试三个方面

7.疲劳强度测试

采用系统稳定运行情况下所能支持的最大并发用户数,或者日常运行用户数,持续执行一段时间业务,保证达到系统疲劳强度需求的业务量,通过综合分析交易执行指标和资源监控指标,来确定系统处理最大工作量强度性能的过程

8.大数据量测试

大数据量测试包括独立的数据量测试和综合数据量测试两类

独立的数据量测试:指针对某些系统存储、传输、统计、查询等业务进行的大数据量测试

综合数据量:指和压力性能测试、负载性能测试、疲劳性能测试相结合的综合测试

二.负载压力测试的目的

1.在真实环境下检测系统性能,评估系统性能以及服务等级的满足情况

2.预见系统负载压力承受力,在应用实际部署之前,评估系统性能

3.分析系统颈,优化系统

1)瓶颈:应用系统中导致系统性能大幅下降的原因。硬件,操作系统、数据库或开发的应用程序中都有可能存在瓶颈

2)建议首先消解决软件瓶颈,原因有三个:

软件瓶颈往往导致系统性能衰减更快,消除软件瓶颈,系统性能提升更快

人为因素更易导致软件瓶颈要消除软件瓶颈,开发人员会更主动,并且可以节省资源

盲目增加硬件则无形中增加维护费用,将来,软硬件不匹配的问题终究会暴露出来

3 负载压力性能问题分为需要优化的性能问题和非系统优化所能解决的性能问题

4.为企业项目的实施提供信心,帮助用户正确地进行容量规划,实现软硬件投资合理化,最终交付高质量的系统,避免项目投产失败,保证用户的投资得到相应的回报

三.负载压力测试策略

1.可以利用手工进行测试和利用自动化工具进行测试两种测试策略

1)手工测试:无法解决同步问题,无法捕捉程序内部的变化情况

2 自动化工具测试:可以解决手工测试中无法解决的问题

2.自动化工具测试策略

1)利用商业化测试工具:LoadRunnerQALoad

2)利用开放资源测试工具:开放系统测试体系OpenSTATestMakerApacheJmeter

3)利用自主开发工具:核心内容是对与服务器的交互计时,

四.产品生命周期中负载压力测试计划

1.在需求分析中充分关注负载压力性能

2.从设计中得到负载压力性能指标

3.开发阶段创建一个负载压力性能测试环境

5)确保合理精确的测试环境,并且此环境可重用

6)为测试环境制定规则的负载压力性能测试的时间表,如果测试环境是共享的,负载压力性能测试不能与其他活动同时发生

7 选择一个负载压力性能测试工具

8)验收阶段在多等级范围内测试并调优

9 运行阶段持续监控系统负载压力性能

五.负载压力测试的盲点

在负载压力测试时,不进行功能校验,当功能发生错误时,测试工具不能够记录产生的错误,忽略了负载压力情况下的功能不稳定问题。所以负载压力测试期间必须要进行必要的功能内容校验,即在测试过程中记录所有虚拟用户的操作,及服务器的响应,才有助于判断功能错误,这是当前负载压力测试的最大挑战

8 应用负载压力测试-负载压力测试解决方案

一.  并发性能测试

并发压力过程与测试定位

1)并发负载压力的实施:客户端――应用客户端的测试

2)负载压力的传输介质:网络――应用网络上的测试

3 压力到达:各类服务器――应用服务器端的测试

二.并发性能测试-应用服务端测试

1 目的:模拟大量并发用户执行不同业务操作,达到实施负载压力的目的

6  测试环境

1测试工具主控台(1个):负责管理各个测试工具代理,收集各类测试数据

2 负载生成器(多个):即代理,模拟虚拟用户

3 服务器

7  测试过程

1)创建方案:方案信息包括    虚拟用户组(Vuser

                                  Vuser将运行的测试脚本

                                  用于运行脚本的负载生成器

2)定义测试目标:  虚拟用户数:测试应用程序可以同时运行多秒个Vuser

每秒点击次数

每分钟页面数    测试服务器稳定性

每秒事务数

事务响应时间:测试在期望的事务响应时间内可以同时运行多少个Vuser,在脚本中指定要测试的事务名称以及Vuser的范围

3 制定方案执行计划:制定方案执行的时间安排,如开始时间、执行持续时间、启动/停止多少个Vuser数量等。注:如果脚本中包含有集合点,方案将不会按计划运行;集合点:在方案中指定Vuser,各Vuser执行的脚本,运行的时间,启动方案后,并不能保证所有的Vuser能够达到同步操作的效果,设置集合点,Vuser执行到集合点时,会被Controller滞留在集合点,等待所有Vuser全部到达后,执行某一项指定操作,从而达到同步并发的效果

8  影响服务器的负载级别

1 选择在方案运行过程中活动的集合点

2)选择加入每个集合的Vuser

9  控制服务器上的负载峰值

1 创建Vuser脚本,插入必要的集合点(采用录制功能将操作过程录制形成脚本,插入某一项操作的集合点)

2创建方案(建立Vuser组,指定每组的user及数量、运行的脚本等信息)

向方案中添加Vuser组,搜索设置的集合点,并将集合点名称添加到集合信息列表中

4 设置虚拟用户负载的级别

5通过选择加入到方案中的集合点及加入每个集合的Vuser数,可以确定负载的精确级别

6)设置集合的属性

7)对于每一个集合,都可以设置集合策略

8)运行方案(在此之前,可以同时配置负载生成器和Vuser行为)

10.客户端交易处理性能指标

1 并发用户数指标

2)交易处理指标:平均事务响应时间、每秒事务数、每秒事务总数、事条摘要、事务性能摘要、事务响应时间(负载下、百分比、分布)

3Web请求指标:每秒点击次数、吞吐量、吞吐量摘要、HTTP状态代码摘要、每秒HTTP响应数、每秒下载页面数、每秒重试次数,重试次数摘要、连接数、每秒连接数、每秒SSL连接数

4 Web页面组件指标:激活网页细分、页面组件细分(随时间变化)、页面下载时间细分(随时间变化)、第一次缓冲时间细分(随时间变化)、已下载组件大小

二.并发性能测试-应用网络上性能测试

    应用网络上性能测试包括:应用网络故障分析和网络应用性能监控

1 应用网络故障分析

4)测试目标:显示网络带宽,延迟、负载和TCP端口的变化是如何影响用户的响应时间的

5 作用

优化性能

预测系统响应时间

确定网络带宽需求

定位应用程序和网络故障

6)网络故障分析工具

作用: 使应用跨越多个网段的活动过程变得清晰

                提供有关应用效率的统计数据

                模拟用户在不同网络配置环境下的响应时间,决定应用投产的网络环境

工作原理:  多个捕捉点:Agent,被动监听数据包来实现实时数据采集

                一个分析:Agent Manager进行对所跟踪的数据的分析

获取信息:  监控不同探针之间的连接状态,传输的字节数以及通信往返行程次数

会话性能概要,监控哪段网络延迟大,带宽对网络双向性能的影响,节点用于处理和用于传输的时间

服务器与客户端之间帧传输情况统计,监控到与应用相关的帧的分布,对每一个帧可以与相关的数据包关联,并且可以对帧解码

服务器与客户端之间传送包信息统计,监控包的详细信息,并且可以将包与帧及线程相关联

线程信息统计,监控线程的内容和生存周期,以及线程与数据包的关系

负载的高峰时刻,负载的平均值,高峰时刻可以与相关的线程、数据包、帧相关联

故障错误总结:应用级错误、TCP错误、IP错误、其他错误

   2 网络应用性能监控指标

4)测试目标:在系统试运行之后,需要及时准确地了解网络上正在发生什么事;什么应用在运行,如何运行;多少PC正在访问LANWAN;哪些应用程序导致系统瓶颈或资源竞争

5)作用

分析关键应用程序的性能

定位问题的根源是在客户端、服务器、应用程序还是网络

哪些应用程序占用大量带宽

哪些用户产生了大量的网络流量

6)网络应用性能监控工具

组成:探针:采集与存储数据,并根据应用对数据进行分类,设置的原则是根据网络组成和监控要求

探针管理器:管理配置探针,设定数据采集与上传时间,合并收集的数据;

时间服务器:对探针进行时针同步

交互界面:数据展示平台

监控信息:  应用监视:

关键特性:客户和服务器通信量,应用响应时间和资源应用的业务水平等

按会话统计传输负载:测试应用和会话级响应时间,以及自动为通过网络中每一个联网设备的每一个应用程序生成负载图

应用、会话级、事务响应时间

延迟在何处被引入网络,瓶颈在哪里

趋势分析

三.并发性能测试-应用服务器端的测试

(一)概述

1.对应用服务器端的测试主要包括三方面:操作系统、数据库和中间件的监控

2.监控手段:可以采用工具自动监控,也可以使用操作系统、数据库、中间件本身提供的监控工具

3.利用工具监控的优点

1  减少故障诊断和分析时间 

2   减少手工定位的时间和避免误诊

3 在问题发生前定位故障

4 验证可达到的性能水平和服务水平协议

5 持续的服务器、数据库和应用性能和可用性监控

6)故障诊断和恢复:自动报警、故障恢复程序、故障恢复信息

7 服务器、应用可用性和性能报告

(二)操作系统监控

操作系统的监控涉及后台重要服务器的操作系统监控,对于主流的操作系统,主要关注:内存、CPU、硬盘

监控建议:

1.磁盘管理

4 采集物理读/写和逻辑读/写信息

5  收集操作系统和其他平台上的磁盘忙信息

6  监控I/O

2.文件系统

1        显示每个文件系统的使用率,检测文件系统空闲空间的大小

2        剪裁文件系统-删除指定的CORE(核心)文件和其他文件

3        显示文件系统的mount on devicetypesize

4        可以监控特殊的文件系统,如NFS(网络文件系统),CD-ROM

5        检测特定文件的存在及超出特定期限的文件存在

3.内存

5        显示可用的内存数量

6        决定当前的内存短缺量

7        帮助分析内存问题

8        显示内存的实存、所有虚存和kernel(核心内存)的状态等信息

4CPU

1        记录CPU的使用率

2        监测CPU参数,包括CPU idle(空闲),CPU waits,CPU system usage,CPUuser usage,run queue length(运行队列长度)

3        显示CPU context(上下关系) switches 的总数

4        显示CPU处理系统任务和完成用户任务的时间比例

5.操作系统举例

1        UNIX操作系统

2        Windows操作系统

(三)数据库监控

1.共性的指标

1        监控数据库系统中关键的资源

2        监测读写页面的使用情况

3        监控超出共享内存缓冲区的操作数

4        监测上一轮询期间作业等待缓冲区的时间

5        跟踪共享内存中物理日志和逻辑日志的缓冲区的使用率

6        监控磁盘的数据块使用情况以及被频繁读写的热点区域

7        监控用户事务或者表空间监控事务日志

8        监控数据库锁资源

9        监测关键业务的数据表的表空间增长

10      监控SQL执行情况

2.监控建议-针对监控内存缓冲区、会话及磁盘等方面

4        监控超出共享内存缓冲区的操作:可以调整缓冲区大小,更好的支持系统运行

5        扩展的会话/用户检查以及参数控制:发现不合理顺序扫描操作,从而分配附加的资源,修改应用程序,降低对系统资源的要求

6        磁盘:监控数据块的使用情况以及被频繁读写的热点区域,可以平衡数据量的存储分配及I/O分配

3.数据库举例

5        oracle:内存统计、SQL分析、会话统计、事件统计

6        Sysbase

7        DB2

8        SQL Server

(四)中间件监控

1.中间件分类

4 Web服务器: Apache

5 Web应用服务器:WebsphereWebLogic

6 应用服务器: tuxedo

2.中间件举例

4 TUXEDO

5 WebSphere:队列性能计数器、通道性能计数器

6 WebLogicLogBaroadcasterRuntimeServerSecurityRuntime

四.负载压力测试解决方案-疲劳强度测试

强调长时间的考核,主要是过长时间运行系统,发现问题

1.日常强度疲劳强度测试

   模拟系统的日常业务(正常情况),持续执行一段时间,暴露系统的性能问题,如内存泄露、资源争用

2.高峰业务疲劳强度测试

1  模拟系统的高峰业务(最大业务量),持续执行一段时间,暴露系统的性能问题

2  时间指标要满足:(1)这段模拟时间所处理的交易量要达到系统疲劳强度需求的业务量 2 在这段测试周期中必须通过加大负载,以及尽可能长的测试周期来保证疲劳强度测试

五.负载压力测试解决方案-大数据量测试

1.大数据量测试类型

3     独立数据量测试:针对某些系统存储、传输、统计、查询等业务进行单用户大数据量测试,如大量的批处理任务

4     综合数据量测试:采用并发测试、疲劳强度测试以及大数据量测试相结合的综合测试方案

2.自动生成大数据量

5      借助自动化测试工具,利用数据库测试数据自动生成工具,如TESTBytes

6      利用自动化负载压力测试工具,模拟用户业务操作,同时并发数百个或数千个用户生成相关数据

7      自主开发数据生成工具

8      数据库本身的辅助工具

3.大数据量管理

3 手工管理:

4 自动化工具管理:File-Aid/CS 数据库管理工具 ,完成比较数据和数据库结构;转换关系数据库数据成XML数据;比较XML数据与关系数据库数据;比较XML文件;数据迁移

8 应用负载压力测试-负载压力测试实施

    负载压力测试的实施过程分为:制定测试计划制定测试需求分析制定测试方案测试环境、工具、数据准备测试脚本录制、编写与调试场景制定测试执行获取测试结果结果评估与测试报告

一.测试计划

1.作用

1 是负载测试成功的关键,明确的测试计划能够确保制定的方案能完成负载测试目标

2 构建能够精确地模拟工作环境的测试方案

3 了解测试需要的资源,如硬件、软件及人力资源

4 以可度量的指标定义测试成功条件,有助于确保测试成功

2.制定步骤

步骤名称

     

分析应用程序

1         确定系统组件:绘制或提取应用程序示意图,说明系统的整体结构

2         描述系统配置:描述各系统组件的配置,如连接用户数,客户端计算机配置,数据库和  Web服务器的类型、serverclient的通信方式、中间件配置、可能影响响应时间的其他网络组件、通信设备的吞吐量及每个设备可以处理的并发用户数

3         分析使用模型:定义系统的典型使用方式,并确定需要重点测试的功能

4         任务分布:查看常规用户任务的分布情况,以确定数据库活动峰值及负载峰值期间的典型活动

定义测试目标

1         以可度量的指标制定目标:精确的确定、区分可接受和不可接受测试结果的标准

2         确定测试的时间:应贯穿于产品的整个生命周期

计划和设计:评估新产品、度量响应时间

开发:度量响应时间、检测最优的硬件配置、检测硬件和软件升级、检查可靠性

部署:检查可靠性、度量响应时间、度量系统容量

生产:度量响应时间、确定瓶颈

升级:检测硬件或软件升级、度量系统容量

计划方案实施

1         定义性能度量范围:确定系统中不同点的响应时间

度量端到端的响应时间:通过client端运行GUI/RTEVuser度量整个网络的响应时间(clientserver  RTE 终端用户

度量网络和服务器响应时间:通过client端运行Vuser(非GUI/RTE)度量网络和服务器的响应时间,即不包括用户界面的响应时间;大量Vuser可以度量负载对网络和服务器响应时间的影响

度量GUI响应时间:端到端响应时间-网络/服务器响应时间

度量服务器响应时间:通过在与server直连的Client上运行Vuser来度量服务器响应时间

度量中间件到服务器的响应时间:通过使用中间件API创建Vuser,度量中间件到服务器的响应时间

2         定义Vuser活动:根据对Vuser类型的分析以及它们的典型任务和测试目标来创建Vuser运行的脚本,包括典型任务,设置集合点等

3         选择Vuser:确定需要的Vuser的数量和类型,一般性选择规则:

使用一个或多个GUI用户来模拟每一种类型的典型用户连接

使用RTE Vuser来模拟终端用户

运行多个非GUI或非RTE Vuser来生成每个用户类型的其余负载

4         选择测试硬件和软件:硬件和软件应具有强大的性能和足够快的运行速度,来模拟所需数量的用虚拟用户,需考虑事项:

建议在一台单独的计算机上运行测试工具主控台

在一台Windows计算机上只能运行一个GUI Vuser,在一台UNIX计算机上则可以运行几个GUI Vuser

l  GUI Vuser模拟机的配置尽量与用户实际计算机配置相同

检查测试目标

 

 第二部分  基础知识

1.计算机系统组成

硬件系统

由中央处理单元CPU(运算器、控制器)、存储器、输入设备和输出设备组成;分为单总线结构、双总线结构

软件系统

由应用软件和系统软件给成

 2.处理机

组成

运算器:对数据进行加工处理的部件,主要完成算术运算和逻辑运算

控制器:从内存中取出指令,并指出下一条指令的存储位置

功能

程序控制,操作控制,时间控制,数据处理

 3.基本输入出设备

 4.存储系统

存储器结构

高速缓存(cache),主存储器(MM)和辅助存储器(外存储器)

分类

按位置分:内存(主存)、外存(辅存)                 按访问方式分:按地址访问和按内容访问

按材料分:磁存储器、半导体存储器、光存储器          按寻址方式分:随机存储器和直接存储器

按工作方式分:读写存储器、只读存储器

相连存储器

是一种按内容访问的存储器,把数据或数据的一部分作为关键字,将该关键字与存储器中的每一个单比较,找出存储器中所有与关键字相关的数据字

高速存储器

组成:控制部分和cache部分

地址映象方法:直接映象、全相连映象、组相连映象

替换算法:随机替换算法,先进先出算法、近期最少使用算法、优化替换算法

性能分析:主存的访问时间/ 计算机实际访问时间

虚拟存储器

由主存、辅存、存储管理单元及操作系统中的存储管理软件组成,分类页式、段式、段页式虚拟存储器

外存储器

用来存放暂时不用的程序和数据,并且以文件的形式存储。CPU不能直接访问外存中的数据,只有将其以文件为单位调入主存方可访问;由磁表面存储器及光盘存储器构成;磁盘存储器、光盘存储器

磁盘阵列技术

由多台磁盘存储器组成的,一个快速大容量高可靠的外存子系统,常见为廉冗余磁盘阵列(RAID),RAID分为6

 5.操作系统的中断控制、进程管理、线程管理

中断控制

作用

CPU可以不用等待I/O的状态,直接去处理其他业务,I/O系统使用中断信号通知CPUCPU转入中断处理程序中,完成与I/O系统的数据交换,提交了CPU的效率

处理方法

多中断信号线法、中断软件查询法、雏菊链法、总线仲载法,中断向量表法

中断优先级控制

当不同优先级的多个中断源同时提出中断请求时,CPU应优先响应高优先级的中断源,最先响应高优先级

 6处理机管理,存储管理,设备管理,文件管理,作业管理

处理机管理

 存储管理

对象及目的

对象:主存储器;目的:保存数据

功能

主存储器的分配和回收;提高主存储器的利用率;存储保护;主存扩充

分类

分区存储管理

固定分区:静态分区方式,系统生成时将主存划分大小不等的区域,易形成碎片

可变分区:动态分区方式,作业装入时划分,个数可变,大小等于作业的大小,也容易形成碎片

可重定位分区:移动所有已分配好的分区,使之成为连续的区域,有效解决磁盘碎片的问题

分页存储管理

原理:进程的地址空间划分为大小相等的区域(页),主存空间划分为与页相同大小的物理块(块或页框),为进程分配主存时,将进程中若干页分别装入多个不邻接的块中

地址结构:由页号P,偏移量W(页内地址)

页表:为保证能在主存中找到每个页面所对应的物理块,为每个进程建立一张页面映射表,简称为页表,实现从页号到物理块号的地址映射

分段存储管理

将作业的地址空间划分为若干个段,进程的各个段可以分配到主存的不同分区中,为每个进程建立一张段映射表,实现逻辑段到物理主存区的映射

段页式存储管理

结合分页、分段存储管理方式,将主存划分成大小相等的存储块(页框),将进程按程序的逻辑关系分为若干段,并为每个段赋予一个段名,将每个段划分成若干页,以页架为单位离散分配,利用段表和页表实现逻辑地址到物理地址的映射

虚拟存储管理

定义:主存可以将暂时不用的页(段)调出至磁盘,有足够的空间将要访问的页(段)装入主存,系统具有的主存容量比实际主存容量大得多,称这样的存储器为虚拟存储器;

实现:请求分页系统、请求分段系统;请求段页式系统(在原存储形式上增加请求和置换功能)

特征:离散性、多次性、对换性、虚拟性

页面置换算法:最佳置换算法(将永久不用或长时间内不再访问的页置换出去)、先进先出置换算法(将最先进入主存的页置换出去)、最近最久未使用置换算法LRU(选择最上次访问以来所经历的时间最大页置换出去)、最近未用置换算法NUR(通过访问标志,将未使用过的页面置换出去,)

   设备管理

分类

按数据组织分类:块设备、字符设备

从资源分配角度分类:独占设备、共享设备、虚拟设备

按数据传输率分类:低速设备、中速设备、高速设备

按输入输出对象分类:人机通信和机机通信息设备

按是否可交互分类:非交设备和交互设备

目标

提高设备的利用率(提高CPU与输入输出设备之间的并行操作程度),为用户提供方便统一的界面,

任务

动态地掌握并记录设备的状态、设备分配和释放、缓冲区管理、实现物理I/O设备的操作、提供设备使用的用户接口、设备的访问和控制、I/O缓冲和调度

软件

分为四层:中断处理程序、设备驱动程序、与设备无关的系统软件、用户级软件

 文件管理

定义

文件 :是具有符号名的、在逻辑上具有完整意义的一组相关信息项的集合;信息项是构成文件内容的基本单位

文件系统:操作系统中实现文件统一管理的一组软件和相关数据的集合,专门负责管理和存取文件信息的软件机构。

文件类型

按性质和用途:系统文件、库文件、用户文件

按信息保存期限:临时文件、档案文件、永久文件

按保护方式:只读文件、读写文件、可执行文件、不保护文件

UNIX系统分为普通文件、目录文件、设备文件(特殊文件)

文件系统类型:FAT,Vfat,NTFS,Ext2,HPFS

文件结构

逻辑结构:用户角度 分为具有结构的记录式文件(定长、可变长) 、无结构的流式文件

物理结构:存储器存储方式  分为连续结构、链接结构、索引结构

文件目录

文件控制块FCB:每个文件设置用于描述和控制文件的数据结构,包括文件名和存放文件的物理地址,包含基本信息类、存取控制信息类、使用信息类

文件目录:文件控制块的有序集合,用于文件的检索,分为一级、二级、多级目录结构

存取方法

指读写文件存储器上的一个物理块方法;包括顺序存取、直接存取、按键存取

存储空间管理

管理方法:空闲区表、位示图、空闲块链、成组链接法(UNIX系统)

文件使用

文件系统通过用户给出的文件名,查出对应文件的存放位置,读出文件内容

操作系统在操作级(命令级)和编程级(系统调用和函数)向用户提供文件服务

操作级提供命令:目录管理类、文件操作类、文件管理类

编程级提供调用:创建文件、撤销文件、打开文件、关闭文件、读文件、写文件

文件共享

不同用户进程使用同一文件,常见文件链接分为硬链接和符号链接

文件保护

采用存取控制方式进行保护,涉及存取控制矩阵、存取控制表、用户权限表、密码

文件安全性可靠性

在系统级、用户级、目录级、文件级四个级别上对文件进行安全性管理

通过转储和恢复、日志文件、文件系统的一致性实现文件的可靠性

 作业管理

定义

系统为完成一个用户的计算任务(或一次事务处理)所做的工作总和

 

组成

由程序、数据和作业说明书组成;作业说明书包括作业基本情况、作业控制、作业资源要求的描述,体现用户控制意图

管理

作业控制:采用脱机和联机两种控制方式

作业状态:提交、后备、执行、完成

作业控制块JCB:记录作业各种有关信息的登记表,是作业存在的唯一标志,包括用户名、作业名、状态标志等信息

作业后备队列:将作业控制块排列成一个或多个队列,即队列由JCB组成

调度

算法:先来先服务、短作业优先、响应比高优先、优先级调度算法、均衡调度算法

衡量指标:平均周转时间或平均带权周转时间

用户界面

定义:用户接入口或人机界面,是计算机中实现用户与计算机通信息的软件和硬件部分的总称

组成:硬件部分(输入、输出装置)、软件部分(协议、操作纵命令及处理软件)

发展阶段:控制面板式用户界面、字符用户界面、图形用户界面、新一代用户界面

 7.网络操作系统和嵌入式操作系统基础知识

  网络操作系统

功能

除具备基本功能外,还应有联网功能,支持网络体系结构和各种网络通信协议,提供网络互联功能,支持有效、安全可靠的数据传送

特征

硬件独立性、多用户支持、支持网络实用程序及其管理功能、多种客户端支持、提供目录服务、支持多种增值服务

分类

集中模式、客户机/服务器模式、对等模式

 嵌入式操作系统

概念

运行在嵌入式智能芯片环境中,对整个智能芯片以及其控制的各种部件和装置等资源进行统一协调、调度、指挥和控制的系统软件

特点

微型化,可定制,实时性、可靠性,易移植性;与OS相比,占用空间小,执行效率高,便于个性化定制和软件固化存信

开发环境

通常配有源代码级可配置的系统模块设计、丰富的同步原语、可选择的调度算法、主存分配策略等

常见的嵌入式系统有Windows CEPalm OS

 8.操作系统的配置

 9.数据库基本原理

基本概念

数据库:长期存储在计算机内的,有组织的,可共享的数据的集合

数据库管理系统DBMS:是一组对数据进行管理的软件,是一个可实际运行的,按照数据库方式存储、维护和向应用系统提供数据或信息支持的系统

数据库系统:是实现有组织、动态存储大量相关数据的系统,由数据库、软件、硬件和人员组成

数据库技术:是研究数据库的存储、结构、设计、管理和使用的一门学科

数据模型

概念

数据模型:对现实世界数据特征的抽象

现实世界:数据是客观存在的各类原始数据,按用户的观点对数据和信息建模

信息世界:是现实世界在人们头脑中的反映,数据库常用术语:实体、实体集、属性和码

机器世界:按计算机系统的观点建模,描述数据的常用术语:字段、记录、文件和记录码

三要素

数据结构:是所研究的对象类型的集合,是对系统静态特性的描述

数据操作:对数据库中各种对象的实例允许执行的操作及操作规则的集合

数据的约束条件:是一组完整性规则的集合

E-R模型

实体联系模型,属于概念数据模型,采用的三个主要概念:实体、联系和属性

实体:可以区别于其他对象的事件物体,如企业中的每个人都是一个实体,由一组特性(属性)表示

联系:分为实体内部联系和实体与实体之间的联系;两个不同实体集之间可以存在一对一、一对多、多对多的联系;两个以上不同实体集之间可以存1:1:1,1:1:n,1:m:nr:m:n的联系;同一实体集内的各实体之间可以存在1:11:nm:n的联系

属性:是实体某方面的特性,分类包括简单属性、复合属性、单值属性、多值属性、NULL属性、派生属性

E-R方法:实体-联系方法,从现实世界中抽象出实体和实体之间的联系,采用E-R图来表示数据模型

层次模型

属于基本数据模型,采用树型结构表示数据与数据间的联系。每一个结点表示一个记录类型(实体),记录之间的联系用连线表示,除根结点以外,其他结点有且仅有一个双亲结点

特点:记录之间的联系通过指针实现,比较简单,查询效率高

缺点:只能表示1:n的联系

网状模型

属于基本数据模型,是层次模型的一个特例,去掉了层次模型的两个限制,允许两个结点之间有多种联系。每一个结点表示一个记录类型(实体)。

特点:能更为直接的描述现实世界,具有良好的性能,存取效率高

缺点:结构复杂

关系模型

属于基本数据模型,由若干个关系模式组成的集合

 11.数据库管理系统的功能和特征

功能

数据定义、数据库操作、数据库运行管理、数据组织、存储和管理、数据库的建立和维护、与其他软件系统的通信功能,不同DBMS之间的转换功能

特征

数据结构化且统一管理、有较高的数据独立性、数据控制功能(安全性保护、完整性、并发控制、故障恢复)

 12.数据库语言与编程

 13.中间件基础知识

 14.网络分类,体系结构与网络协议

网络分类  按通信距离分 广域网、局域网、城域网

          按信息交换方式分 电路交换网、分组交换网、综合交换网

          按网络拓扑结构分 星形、树形、环形、总线型

          按通信介质分 双绞线网、同轴电缆网、光纤网、卫星网

          按传输带宽分 基带网、宽带网

          按使用范围分 公用网、专用网

          按速率分 高速网、中速网、低速网

          按通信传播方式分 广播式、点到点式

体系结构  采用ISO/OSI网络体系结构,OSI参考模型从低到高为物理层、数据链路层、网络层、传输层、会话层、表示层、应用层;

          13层:负责通信功能,为通信子层

          57层:资源子网层

网络协议

局域网协议

LAN模型:将数据链路层分为介质访问控制层(MAC)、逻辑链接控制层(LLC

以太网(IEEE802.3标准):采用CSMA/CD访问协议

令牌环网(IEEE802.5标准):采用介质访问控制,编码方式差分曼彻斯特编码

FDDI(光纤分布式数据接口):使用同轴电缆或双绞线,编码方式曼彻斯特编码

广域网协议

点对点(PPP):主要用于拔号上网连接模式,

数字用户线x DSL

数字专线DDN:数字数据网,采用数字传输信道传输数据信号的通信网

综合业务数字网:建立在数字电话网络基础上的网络,提供端到端的数字连接,将声音、数据、图像等不同业务综合在一个网络内进行传送和处理

帧中继FR:在用户网络接口之间提供用户信息流的双向传送,并保持顺序不变的一种承载业务。

异步传输模式ATM:是一种面向分组的快速分组交换模式,使用异步时分复用技术,将信息流分割成固定长度的信元,ATM参考模型为分用户层、ATM适配层、ATM层和物理层

X.25协议:是在公用数据网上以分组方式进行操作的DTE(数据终端设备)和DCE(数据通信设备)之间的接口

Internet协议

TCP/IPInternet的核心协议

TCP/IP分层模型:(低到高)网络接口层(数据链路层)、网际层、传输层、应用层

网络接口层协议:只提供接口规范

网际层协议-IP(网际)协议、ICMPInternet控制协议)协议、ARP(地址解析IP>物理地址)协议、RARP(反地址解析物理地址->IP)协议

传输层协议-TCP(传输控制)协议、UDP(用户数据报)协议

应用层协议:NFSTelnetSMTPDNSSNMPFTP

 15.常用网络设备

网络传输介质互联设备

网络线路与用户节点链接:T型头、收发器、RJ-45接口、调制解调器

物理层的互联设备

中继器:实现局域网网段互联,适用于连接相同的局域网段

集线器:一种特殊的多路中继器,

数据链路层的互联设备

网桥:工作于MAC子层,两个网络MAC子层以上的协议相同,都可以用网桥互联

交换机:采用端口交换、帧交换、信元交换三种交换技术

网络层互联设备

路由器:互连的网络低两层协议可以不同

应用层互联设备

网关:连接不同类型而协议差别又较大的网络

 16Internet基础知识及应用

Internet地址

域名格式:用户所在的主机名或地址,由四部组成 主机名.本地名.组名.最高层域名

IP地址格式:32 4个小于256的数字组成,分为A000127,B128191,C192223,D224239,E240255)五类

Internet服务

DNS域名服务:提供域名地址与IP地址的映射变换,采用客户机/服务器模式,由解析器和域名服务器组成

TELNET远程登录服务:在Telnet协议支持下,将用户端与远程主机相连,采用客户机/服务器模式,由客户软件、服务器软件及Telnet通信协议组成;

E-mail电子邮件服务:利用计算机进行信息交换的电子媒体信息,基于客户机/服务器模式,由E-mail客户软件、E-mail服务器和通信协议(SMTPPOP)组成

WWW服务:一种交互式图形界面的Internet服务,具有强大的信息连接功能的多媒体信息服务系统,基于客户机/服务器模式,提供超文本传输协议HTTP,由Web服务器、浏览器和HTTP通信协议等组成;URL统一资源定位器

FTP文件传输服务:在计算机之间传输文件,采用客户机/服务器模式,由客户软件、服务器软件和FTP通信协议组成,建立控制连接、数据连接

Gopher:将Internet上的信息组织成某种索引,采用客户机/服务器模式,

 17.网络管理

网络安全

定义:保护计算机、网络系统的硬件、软件以及系统中的数据,不因偶然的或恶意的原因而遭到破坏、更改或泄露,确保系统能连续和可靠地运行,使网络服务不中断

涉及内容:运行系统的安全、信息系统的安全、信息传播的安全、信息内容的安全

信息系统对安全的基本需求:保密性、完整性、可用性、可核查性

安全威胁:物理威胁、网络攻击、身份鉴别、编程威胁、系统漏洞

网络的信息安全

信息的存储安全:使用的安全(用户的标识、存取权限限制、安全问题追踪),计算机防病毒防治,系统安全监控,数据的加密,防止非法的攻击等内容

信息的传输安全:链路加密,节点加密,端-端加密

防火墙技术

分类:包过滤型防火墙、应用代理网关防火墙,状态检测技术防火墙

体系结构:一般由过滤路由器和代理服务器组成;典型防火墙由过滤路由器,双宿主主机,被屏蔽主机以及被屏蔽子网

 18.标准化的概念(意义、发展、机构)

意义:在经济、技术、科学及管理等社会实践中,以改进产品、过程和服务的适用性,防止贸易壁垒,促进技术合作,促进最大社会效益为目的,对重复性事物和概念通过制定、发布和实施标准,达到统一,获得最佳秩序和社会效益的过程

发展:

机构:标准化技术委员会是制定国家标准和行业标准的一种重要组织形式,它是一定专业领域内从事全国性标准化工作的技术工作组织。

19.标准化的层次(国际、国家、行业、企业)

国际标准:由国际标准化组织(ISO)、国际电气委员会(IEC)所制定的标准,在世界范围内使用,各国可以自愿采用,不强制使用

国家标准:由政府或国家级的机构制定或批准的、适用于全国范围的标准,是一个国家标准体系的主体和基础,国内各级标准必须服从且不得与之相抵触,常见:中华人民共和国国家标准GB、美国标准、英国标准、日本工业标准

行业标准:由行业机构、学术团体或国防机构制定,并适用于某个业务领域的标准,常见IEEE,中国GJB

企业标准:由企业或公司批准、发布的标准

我国标准分为国家、行业、地方、企业四类标准

20.标准的类别及生命周期

按适用范围

国际、国家、行业、企业标准

按性质分类

技术、管理、工作标准

按标准化对象

基础标准、产品标准、方法、安全、卫生、环境保护、服务标准

按法律约束

强制性约束、推荐性标准

 21.信息安全基本概念

计算机安全:指计算机资产的安全,要保证这些计算机资产不受自然和人为的有害因素的威胁和危害;计算机资产由系统资源和信息资源组成

信息安全基本要素:jimi性、完整性、可用性、可控性、可审查性

计算机安全等级:技术安全性、管理安全性、政策法律安全性

22.计算机病毒及防范

定义:是一种程序,编制或者在计算机程序中插入的破坏计算机功能或者破坏数据,影响计算机使用并且能够自我复制的一组计算机指令或者程序代码,并具有这样的特性:可以修改别的程序,使得被修改的程序也具有这种特性

特点:寄生性、隐藏性、非法性、传染性、破坏性

类型:系统引导型病毒、文件外壳型病毒、混合型病毒、目录型病毒、宏病毒

繁衍方式:变种、病毒程序加密、多形性病毒、伪装

防治:人工预防(修改程序)、软件预防、管理预防(建立法律制度、教育管理、建立计算机系统管理制度)

23.加密与解密机制

加密技术:两个元素 算法、密钥

     过程:对原来为明文的文件或数据按某种加密算法进行处理,使其成为不可读的一段代码(密文)

     分类:对称加密技术、不对称型加密、不可逆加密三类

24.信息化相关概念

信息化:是指社会经济的发展从以物质与能量为经济结构的重心,向以信息与知识为经济结构的重心转变的过程。在这个过程中,不断地采用现代信息技术装备国民经济各部门和社会各领域,从而极大地提高社会劳动生产力。

 25.与知识产权相关的法律、法规

知识产权

定义

指民事权利主体(公民、法人)基于创造性的智力成果而享有的权利

分类

工业产权和著作权

著作权:指作者对其创作的作品享有的人身权和财产权;人身权包括发表权、署名权、修改权和保护作品完整权财产权包括使用权和获得报酬权

特点

无形性(智力创造成果)    双重性(具有财产权和人身权)     确认性(依法审查确认得到法律保护)

独占性(专用权具有独占性)  地域性(在本国授予、的产权在本国有效) 时间性(具有保护期限)

法规

《中华人民共和国著作权法》、《专利法》、《继承法》《公司法》、《合同法》、《商标法》、《产品质量法》

反不正当竞争法》、《刑法》、《计算机信息系统安全保护条例》、《计算机软件保护条件》、《著作权法实施条例》

 软件著作权

主体

享有著作权的人,包括公民、法人和其他组织

客体

指著作权法保护的计算机软件著作权的范围(受保护的对象),计算机软件指计算机程序及其有关文档

条件

独立创作:受保护的软件必须由开发者独立开发,任何复制和抄袭他人开发的软件不能获得著作权

可被感知:受保护的作品应当是作者创作思想在固定载体上的一种实际表达

逻辑合理:受保护的软件必须具备合理的逻辑思想

权利

人身权:享有发表权和开发者身份权(署名权)

财产权:享有控制和支配,并能够为权利人带来一定经济效益的权利,包括使用权、复制权、修改权、发行权、翻译权、注释权、信息网络传播权、出租权、使用许可权和获得报酬权、转让权

 26.信息网络系统,信息应用系统,信息资源系统基本知识

 27.软件工程概念

定义

指应用计算机科学、数据及管理科学等原理,以工程化的原则和方法来解决软件问题的工程。

目的

指高软件生产率,提高软件质量,降低软件成本

生存周期

由软件定义(系统分析、项目计划、需求分析)、软件开发(设计、编码、测试)、软件维护三个阶段组成

 28.需求分析

任务

确定软件系统的综合要求 导出系统的逻辑模型  如有必要,可开发一个原型系统

分析软件系统的数据要求 修正项目开发计划

方法

结构化分析方法SA:面向数据流的分析方法,自顶向下逐层分解,分析结果包括

数据流图DFD:用来描述数据流从输入到输出的变换流程,

数据字典:为数据流图中每个数据流、文件、加工以及组成数据流或文件的数据项作出说明

小数明:对加工进一步进行描述,描述方法结构化语言、判定表、判定树

补充材料

Chapter 1_软件测试概述

软件测试的IEEE定义:使用人工或自动的手段来运行或测量软件系统的过程,目的是检验软件系统是否满足规定的需求,并找出与预期结果之间的差异。

软件测试的发展趋势:

①测试工作将进一步前移。软件测试不仅是单元测试、集成测试、系统测试和验收测试,还对需求的精确性和完整性的测试技术、对系统设计的测试技术将成为新的研究热点。

②软件架构师,开发工程师,QA人员,测试工程师将进行更好的融合

③测试职业将得到更充分的尊重。

④设置独立的软件测试部门将成为越越来软件公司的共识。

⑤测试外包服务将快速增长,和软件开发外包一样,软件测试外包将成为全球化的趋势。

软件测试工程师的素质:

    责任心;沟通能力;团队合作精神;耐心、细心和信心;保持怀疑的态度,有缺陷预防的意识;不断学习的能力。

合格的测试工程师应具有的能力:

① 一般能力:包括表达、交流、协调、管理、质量意识、软件开发过程方法、软件工程等;

② 测试技能及方法:包括测试基本概念及方法、对测试工具的掌握、对专业测试标准的熟悉程度等;

③ 测试规划能力:包括风险分析及防范能力、测试目标及计划的制定能力等;

④ 测试执行能力:包括测试数据/脚本/用例的制定能力、测试比较及分析能力、缺陷记录及处理能力;

⑤ 测试分析、报告和改进能力:包括测试度量、统计技术、测试报告、过程监测及持续改进能力。

测试工程师的职责:

测试人员要了解项目需求内容,从用户的角度提出自己的测试看法;

测试人员要编写合理的测试计划并与项目整体计划有机地整合在一起;

测试人员要编写覆盖率高的测试用例;

测试人员要认真仔细的实施测试工作,并提交测试报告以供项目参考;

测试人员要进行缺陷跟踪和分析。

 Chapter 2_软件测试基础

软件的概念:

软件是计算机系统中与硬件相互依存的一部分,包括程序、数据、与其相关文档的完整结合。软件 = 程序 + 数据 + 文档。

软件的特点:

① 软件是一种逻辑体,而不是具体的物理体,因而它具有抽象性;

② 软件的生产与硬件不同,它没有明显的制造过程,对软件质量的控制,必须在开发方面下功夫;

③ 在软件运行和使用期间,没有硬件那样的机械磨损和老化问题,然而它存在退化问题,必须进行多次的修改和维护;

④ 软件的开发和运行常常受计算机系统的制约,对计算机系统有着不同程度的依赖性,为了解除这种依赖性,在软件开发过程中提出了软件移植问题。

⑤ 软件本身是复杂的,软件的复杂性可能来自它所反映问题的复杂性,也可能来自程序逻辑结构的复杂性。

⑥ 软件成本的昂贵。软件的研制工作需要投入大量的、复杂的、高强度的脑力,它的成本比较高。

软件的分类:

  按照功能划分:

    系统软件:如操作系统、数据库管理系统,各种驱动软件等

    应用软件:如Office、金山词霸、QQ

  按照技术结构划分:

    单机版本:如Office,画图工具等

    C/S结构软件:如QQMSN

    B/S结构软件:如新浪、搜狐、google

  按照用户划分:

    产品软件:Office、财务处理软件、金山毒霸等

    项目软件:如为企业定制的OA系统等

  按照开发规模划分:

    类别  参与人数     开发时间

    小型  10人以下  1-4个月

    中型  10-100  1年以下

    大型  100人以上  1

软件测试的概念:

软件测试就是为了发现错误而执行程序的过程(狭义观点)

使用人工或自动的手段,来运行或测试软件系统的过程,目的是检验软

件系统是否满足规定的需求,并找出与预期结果之间的差异。(标准定义IEEE )

软件测试就是为了证明程序有错,而不是证明程序无错误(辨证观点)

测试被定义为对软件系统中潜在的各种风险进行评估的活动 (风险观点)

软件测试就是验证(Verification有效性确认(Validation活动构成的整体,即软件测试V&V (标准观点)

要完整理解软件测试,就要从不同方面去审视软件测试,概括起来,软件测试就是贯穿整个软件开发生命周期,对软件产品(包括阶段性产品)进行验证和确认的活动过程,其目的是尽快尽早地发现在软件的缺陷。

软件测试的对象:

源程序/目标代码

各开发阶段的文档(需求规格说明、概要设计说明、详细设计说明及其它相关文档)

软件测试的目的:

从用户角度看的目的:通过软件测试发现隐藏的错误和缺陷,考虑是否可以接受该产品。

从开发者角度看的目的:表明软件产品不存在错误,验证软件实现了所有用户的要求。从测试人员角度看的目的:发现错误,预测错误,提供软件可靠性错误,对软件做出评价。

① 帮助开发人员、测试工程师发现问题、分析问题。

② 减少软件的缺陷数目或者降低软件缺陷的密度。

③ 提高软件的可靠性

④ 评估软件的性能指标。

⑤ 增加用户对软件的信心。

⑥ 测试的最终目的是尽快尽早地发现在软件中的缺陷,通过修正各种错误和缺陷提高软件质量,回避软件发布后由于潜在的软件缺陷和错误造成的隐患所带来的商业风险。

软件测试的原则:

① 所有测试的都应追溯到用户需求。

② 应当把尽早地和不断地进行软件测试作为软件测试者的座右铭。

③ 由于软件的复杂性和抽象性,在软件生命周期各个阶段都可能产生错误,所以不应把软件测试仅仅看作是软件开发的一个独立阶段的工作,而应当把它贯穿到软件开发的各个阶段中。在软件开发的需求和设计阶段就应开始测试工作,编写相应的测试文档。

④完全测试是不可能的,测试需要终止。

⑤想要进行完全的测试,在有限的时间和资源条件下,找出所有的软件缺陷和错误 使软件趋于完美是不可能的主要有三个原因: ①输入量太大; ③输出结果太多;③路径组合太多。

⑥ 测试无法显示软件潜在的缺陷:进行测试是可以查找并报告发现的软件缺陷和错误,但不能保证软件缺陷和错误全部找到。

⑦ 充分注意集试中群集现象(二八定理):经验表明,在所测试程序段中,若发现的错误数目多,则残存的错误数目也较多。缺陷的二八定理指的是,一般情况下,80%软件缺陷出现在20%的功能区域,在测试过程中,投入主要的人力和精力重点测试这20%的功能区域。

⑧开发人员应避免检查自己的程序:基于心理因素,揭露自己程序中的问题总不是一件愉快的事,不愿否认自己的工作;由于思维定势,人们难于发现自己的错误。因此为达到测试的目的,应由客观、公正、严格的独立的测试部门或独立的第三方测试机构进行测试。

⑨尽量避免测试的随意性:应从工程的角度理解测试,它是有组织、有计划、有步骤的活动。

软件测试误区:

误区一:如果发布出去的软件有质量问题,都是软件测试人员的错。

误区二:软件测试技术要求不高,至少比编程容易多了。

误区三:有时间就多测试一些,来不及就少测试一些。

误区四:软件测试是测试人员的事,与开发人员无关。

误区五:根据软件开发瀑布模型,软件测试是开发后期的一个阶段。

 Chapter 3_软件测试分类

 软件测试入门基础知识汇总_第1张图片

单元测试:

单元测试又称模块测试,针对软件设计中的最小单位——程序模块,进行正确性检查的测试工作。单元测试需要从程序的内部结构出发设计测试用例。多个模块可以平行地独立进行单元测试。

单元定义:C中指一个函数,Java中指一个类,在图形化的软件中,单元一般指1个窗口,1个菜单。

如何进行单元测试:

单元测试主要用白盒测试,先静态地检查代码是否符合规范,然后动态运行代码,检查其实际运行结果,检查程序的运行结果是否正确是一个最基本的要求,还要关注容错处理,程序的边界值处理等。

集成测试:

集成测试又叫组装测试,通常在单元测试的基础上,将所有程序模块进行

有序的、递增的测试。重点测试不同模块的接口部分。

系统测试:

指将整个软件系统看为一个整体进行测试,包括对功能、性能、以及软件所运行的软硬件环境进行测试。

验收测试:

验收测试指按照项目任务书或合同、供需双方约定的验收依据文档进行的对整个系统的测试与评审,决定是否接收或拒收系统。在系统测试的后期,以用户测试为主或有测试人员等质量保证人员共同参与的测试。

α测试:指的是指的是由用户,测试人员、开发人员等共同参与的内部测试。

β测试:指的是内测后的公测,即完全交给最终用户测试

验收测试的重要性:验收签字,收钱。

软件测试入门基础知识汇总_第2张图片

静态测试:

指不实际运行被测软件,而只是静态地检查程序代码、界面和文档中可能存在的错误的过程。

动态测试:

指实际运行被测程序,输入相应的测试数据,检查实际输出结果与预期结果是否相符。(动态测试方法为结构和正确性测试;动态测试工具RobotQTP等)

黑盒测试:

指的是把被测的软件看做一个黑盒子,我们不关心盒子里面的结构是什么样子的,只关心软件的输入数据和输出

白盒测试:

指的是把盒子打来,去研究里面的源代码和程序结构。

软件公司中,往往采用黑盒测试&白盒测试相结合的方式。

(静态黑盒测试:看文档,看页面等

静态白盒测试:看源代码等

动态黑盒测试:使用软件等

动态白盒测试:运行源代码等)

灰盒测试:

是介于白盒测试与黑盒测试之间的一种测试,灰盒测试多用于集成测试阶段,不仅关注输出、输入的正确性,同时也关注程序内部的情况。

功能测试:

是黑盒测试的一方面,它检查实际软件的功能是否符合用户的需求。

逻辑功能测试(functiontesting)

界面测试(UItesting)

易用性测试(usability testing)

安装测试(installationtesting)

兼容性测试(compatibilitytesting)

性能测试:

是软件测试的高端领域,通常我们所说的高级软件测试工程师一般就是指性能测试或是白盒测试工程师。

时间性能(事务响应时间等)

空间性能(系统资源消耗)

一般性能测试

可靠性测试

负载测试

压力测试

回归测试:

指对软件的新版本测试时,重复执行上一个版本测试时的用例。

冒烟测试:

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

随机测试:

是指测试中所有的输入数据都是随机生成的,其目的是模拟用户的真实操作,并发现一些边缘性的错误。

软件测试的过程:

从软件开发的过程按阶段划分有:需求验证、单元测试、集成测试、确认测试、系统测试、验收测试

 Chapter 5_白盒测试用例设计方法

测试用例(英文为TestCase,缩写为TC

指的是在测试执行之前设计的一套详细的测试方案,包括测试环境、测试步骤、测试数据和预期结果。

测试用例可以针对黑盒测试设计用例,也可以针对白盒测试设计用例。

编写测试用例的唯一标准就是用户需求,具体的参考资料是《需求规格说明书》。

设计测试用例的原因:

软件测试是一项有组织、有计划、有步骤的活动,为了将软件测试的行为转换为可管理的、具体量化的模式,需要创建和设计测试用例。

测试用例的四性:

代表性:能够代表并覆盖各种合理的和不合理合法的和不合法的、边界的和越界的以及极限的输入数据、操作等。

针对性:对程序中的可能存在的错误有针对性地测试。

可判定性:测试执行结果的正确性是可判定的,每一个测试用例都应有相应的期望结果。

可重现性:对同样的测试用例,系统的执行结果应当是相同的。

测试用例的基本原则:

利用成熟的测试用例设计方法来指导设计

测试用例的针对性

测试用例的代表性

测试用例的可判定性

测试用例的可重现性

足够详细、准确和清晰的步骤

测试用例必须符合内部的规范的要求

语句覆盖:语句覆盖就是设计若干个测试用例,运行被测试程序,使得每一

条可执行语句至少执行一次;

判定覆盖(也称为分支覆盖):设计若干个测试用例运行所测程序使程序中每个判断的取真分支和取假分支至少执行一次;

条件覆盖:设计足够多的测试用例,运行所测程序,使程序中每个判断的每 条件覆盖设计足够多的测试用例 行所测程序使程序中每个判断的每个条件的每个可能取值至少执行一次;

判定-条件覆盖:设计足够多的测试用例,运行所测程序,使程序中每个判断的每个条件的所有可能取值至少执行一次,并且每个可能的判断结果也至少执行一次,换句话说,即是要求各个判断的所有可能的条件取值组合至少执行一次;

条件组合测试:设计足够多的测试用例,运行所测程序,使程序中每个判断的所有可能的条件取值组合至少执行一次;

路径测试:设计足够多的测试用例,运行所测程序,要覆盖程序中所有可能的路径。

主要测试技术:

分支条件覆盖,基本路径测试

 Chapter 6_黑盒测试用例设计方法

主要测试技术:

等价类划分(边界值分析),因果图法,(正交实验法)

 Chapter 8_缺陷管理

软件缺陷:

软件缺陷是指存在于软件(程序、数据、文档)中的那些不符合用户需求的问题。

软件缺陷的来源:

需求说明书:需求说明书的错误或不清楚引起的错误,是缺陷第一大的来源。

设计文档:设计文档描述不准确、以及与需求说明书不一致,是缺陷的第二大来源。

编码:纯粹是由编码的问题引起。

其它:可能是系统集成、测试引起。

软件缺陷的根源:

交流不充分(客户与开发人员、开发人员与测试人员等)

软件的复杂性(功能复杂、开发复杂、测试复杂)

开发人员的错误(对需求的理解、开发压力、能力与经验)

需求的变化(需求说明书设计文档 程序的变更)

进度压力(项目周期比较紧)

软件缺陷的发现手段:

同行评审、测试、管理评审、QA发现、项目组内部发现、客户反馈

为了便于缺陷的定位、跟踪和修改,要对所发现的缺陷,按照缺陷的严重程度、优先级、发现阶段、修复阶段、缺陷的性质、所属功能模块、系统环境等方面进行分类和统计。

二八定理:80%的软件问题总是发生在大约20%的功能模块中。

缺陷密度:

基本的缺陷测量是以每千行代码的缺陷数(/KLOC)来测量的,其测量单位是defectsKLOC

常见寻找bug的方法:

色彩、功能结构布局、图片、页面大小、字体、窗体大小、界面文字、容错处理(也为功能缺陷,所谓容错,就是容忍错误的能力。当用户在使用软件过程中发生错误后,软件应该能给出引导信息,指应用户进行正确的操作)、数据转换(增删改查)、性能缺陷(黑盒测试)。

Web测试:

Web测试即测试网站系统在不同客户端(浏览器)的运行情况及兼容性。

Selenium

Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。

1、您认为做好测试用例设计工作的关键是什么?

白盒测试用例设计的关键是以较少的用例覆盖尽可能多的内部程序逻辑结果

黑盒法用例设计的关键同样也是以较少的用例覆盖模块输出和输入接口。不可能做到完全测试,以最少的用例在合理的时间内发现最多的问题

2、软件配置管理的作用?软件配置包括什么?

软件配置管理(Software Configuration Management,SCM)是一种标识、组织和控制修改的技术。软件配置管理应用于整个软件工程过程。在软件建立时变更是不可避免的,而变更加剧了项目中软件开发者之间的混乱。SCM活动的目标就是为了标识变更、控制变更、确保变更正确实现并向其他有关人员报告变更。从某种角度讲,SCM是一种标识、组织和控制修改的技术,目的是使错误降为最小并最有效地提高生产效率。

软件配置包括如下内容:配置项识别、工作空间管理、版本控制、变更控制、状态报告、配置审计

3、目前主要的测试用例设计方法是什么?

白盒测试:逻辑覆盖、循环覆盖、基本路径覆盖

黑盒测试:边界值分析法、等价类划分、错误猜测法、因果图法、状态图法、测试大纲法、随机测试、场景法

4、简述什么是静态测试、动态测试、黑盒测试、白盒测试、α测试 β测试

静态测试是不运行程序本身而寻找程序代码中可能存在的错误或评估程序代码的过程。

动态测试是实际运行被测程序,输入相应的测试实例,检查运行结果与预期结果的差异,判定执行结果是否符合要求,从而检验程序的正确性、可靠性和有效性,并分析系统运行效率和健壮性等性能。

黑盒测试一般用来确认软件功能的正确性和可操作性,目的是检测软件的各个功能是否能得以实现,把被测试的程序当作一个黑盒,不考虑其内部结构,在知道该程序的输入和输出之间的关系或程序功能的情况下,依靠软件规格说明书来确定测试用例和推断测试结果的正确性。

白盒测试根据软件内部的逻辑结构分析来进行测试,是基于代码的测试,测试人员通过阅读程序代码或者通过使用开发工具中的单步调试来判断软件的质量,一般黑盒测试由项目经理在程序员开发中来实现。

α测试是由一个用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的受控测试,Alpha测试不能由程序员或测试员完成。

β测试是软件的多个用户在一个或多个用户的实际使用环境下进行的测试。开发者通常不在测试现场,Beta测试不能由程序员或测试员完成。

5、软件测试分为几个阶段 各阶段的测试策略和要求是什么?

和开发过程相对应,测试过程会依次经历单元测试、集成测试、系统测试、验收测试四个主要阶段:

单元测试:单元测试是针对软件设计的最小单位––程序模块甚至代码段进行正确性检验的测试工作,通常由开发人员进行。

集成测试:集成测试是将模块按照设计要求组装起来进行测试,主要目的是发现与接口有关的问题。由于在产品提交到测试部门前,产品开发小组都要进行联合调试,因此在大部分企业中集成测试是由开发人员来完成的。

系统测试:系统测试是在集成测试通过后进行的,目的是充分运行系统,验证各子系统是否都能正常工作并完成设计的要求。它主要由测试部门进行,是测试部门最大最重要的一个测试,对产品的质量有重大的影响。

验收测试:验收测试以需求阶段的《需求规格说明书》为验收标准,测试时要求模拟实际用户的运行环境。对于实际项目可以和客户共同进行,对于产品来说就是最后一次的系统测试。测试内容为对功能模块的全面测试,尤其要进行文档测试。

单元测试测试策略:

自顶向下的单元测试策略:比孤立单元测试的成本高很多,不是单元测试的一个好的选择。

自底向上的单元测试策略:比较合理的单元测试策略,但测试周期较长。

孤立单元测试策略:最好的单元测试策略。

集成测试的测试策略:

大爆炸集成:适应于一个维护型项目或被测试系统较小

自顶向下集成:适应于产品控制结构比较清晰和稳定;高层接口变化较小;底层接口未定义或经常可能被修改;产口控制组件具有较大的技术风险,需要尽早被验证;希望尽早能看到产品的系统功能行为。

自底向上集成:适应于底层接口比较稳定;高层接口变化比较频繁;底层组件较早被完成。

基于进度的集成

优点:具有较高的并行度;能够有效缩短项目的开发进度。

缺点:桩和驱动工作量较大;有些接口测试不充分;有些测试重复和浪费。

系统测试的测试策略:

数据和数据库完整性测试;功能测试;用户界面测试;性能评测;负载测试;强度测试;容量测试;安全性和访问控制测试;故障转移和恢复测试;配置测试;安装测试;加密测试;可用性测试;版本验证测试;文档测试。

1、什么是兼容性测试?兼容性测试侧重哪些方面?

兼容测试主要是检查软件在不同的硬件平台、软件平台上是否可以正常的运行,即是通常说的软件的可移植性。

兼容的类型,如果细分的话,有平台的兼容,网络兼容,数据库兼容,以及数据格式的兼容。

兼容测试的重点是,对兼容环境的分析。通常,是在运行软件的环境不是很确定的情况下,才需要做兼容。根据软件运行的需要,或者根据需求文档,一般都能够得出用户会在什么环境下使用该软件,把这些环境整理成表单,就得出做兼容测试的兼容环境了。

兼容和配置测试的区别在于,做配置测试通常不是Clean OS下做测试,而兼容测试多是在Clean OS的环境下做的。

2、我现在有个程序,发现在Windows上运行得很慢,怎么判别是程序存在问题还是软硬件系统存在问题?

1、检查系统是否有中毒的特征;

2、检查软件/硬件的配置是否符合软件的推荐标准;

3、确认当前的系统是否是独立,即没有对外提供什么消耗CPU资源的服务;

4、如果是C/S或者B/S结构的软件,需要检查是不是因为与服务器的连接有问题,或者访问有问题造成的;

5、在系统没有任何负载的情况下,查看性能监视器,确认应用程序对CPU/内存的访问情况。

3、测试的策略有哪些?

参考答案:

黑盒/白盒,静态/动态,手工/自动,冒烟测试,回归测试,公测(Beta测试的策略)

4、正交表测试用例设计方法的特点是什么?

参考答案:

用最少的实验覆盖最多的操作,测试用例设计很少,效率高,但是很复杂;

对于基本的验证功能,以及二次集成引起的缺陷,一般都能找出来;但是更深的缺陷,更复杂的缺陷,还是无能为力的;

具体的环境下,正交表一般都很难做的。大多数,只在系统测试的时候使用此方法。

5、描述使用bugzilla缺陷管理工具对软件缺陷(BUG)跟踪的管理的流程?

参考答案:

就是Bugzilla的状态转换图。

6、你觉得bugzilla在使用的过程中,有什么问题?

参考答案:

界面不稳定;

根据需要配置它的不同的部分,过程很烦琐。

流程控制上,安全性不好界定,很容易对他人的Bug进行误操作;

没有综合的评分指标,不好确认修复的优先级别。

7、描述测试用例设计的完整过程?

参考答案:

需求分析 + 需求变更的维护工作;

根据需求 得出测试需求;

设计测试方案,评审测试方案;

方案评审通过后,设计测试用例,再对测试用例进行评审;

8、单元测试的策略有哪些?

参考答案:

逻辑覆盖、循环覆盖、同行评审、桌前检查、代码走查、代码评审、景泰数据流分析

9、LoadRunner分哪三部分?

参考答案:

用户动作设计;

场景设计;

测试数据分析;

10、LoadRunner进行测试的流程?

参考答案:

1、 测试测试

2、 创建虚拟用户脚本

3、 创建运行场景

4、 运行测试脚本

5、 监视场景

6、 分析测试的结果

15.测试的目的是什么?

  测试的目的是找出软件产品中的错误,是软件尽可能的符合用户的要求。

  当软件测试是不可能能够找出全部的错误的。

  16.测试分为那几个阶段?

  一般来说测试大体分为5个阶段:

  单元测试、集成测试、确认测试、系统测试、验收测试

  在测试过程中如果有需要还要进行回归测试。

  17.单元测试的测试对象,目的、测试依据、测试方法?

  测试对象是模块内部的程序错误;目的是消除局部模块逻辑和功能上的错误和缺陷;

  测试依据是模块的详细设计;测试方法采用白盒测试

  18.集成测试的测试对象,目的、测试依据、测试方法?

  集成测试的测试对象是模块间的组装和调用关系;目的是找出与软件设计相关的程序结构模块调用关系,模块间接口方面问题;测试依据是概要设计;测试方法采用灰盒测试。

  19.系统测试的测试对象,目的、测试依据、测试方法?

  系统测试的测试对象是整个系统;测试的目的是对整个系统进行测试;测试的依据是需求规格说明书;测试方法黑盒测试。

  20.测试覆盖的类型

  测试覆盖的类型有:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖、路径覆盖

  21.性能测试的分类

  分为:性能测试、负载测试、压力测试、容量测试

  负载测试与压力测试可以结合进行。

  22.列举您熟悉的主流自动化测试工具

  我熟悉的自动化测试工具有:基于web的测试管理工具TestDirector、配置管理工具VSSQTP以及性能测试工具LoadRunner

  23.编辑sql语句时,年月日型时间字段如何表达

  加引号

  24.c/sb/s结构的软件进行测试时有何不同

  C/S又称Client/Server或客户/服务器模式。服务器通常采用高性能的PC、工作站或小型机,并采用大型数据库系统。客户端需要安装专用的客户端软件。

  B/S是Brower/Server的缩写,客户机上只要安装一个浏览器(Browser)。浏览器通过Web Server 同数据库进行数据交互。

  25.安全测试的后台是什么

 26.页面中有一个输入日期的输入框和一个输入身份证号的输入框,如何进行用例设计?

  输入日期的输入框要考虑边界值、输入非法数据、非数字等

  省份证输入框要考虑18位省份证、16位身份证、非1816位的数据、汉字、字母、非法数据、

  27.测试和质量保证有什么区别?你的看法

  质量保证是对软件制作过程的制作质量进行管理,看是否符合公司的规定。

  软件测试是对软件产品的质量本身进行测试,是从技术方面出发测试软件质量

  28.用过什么缺陷管理工具? 流程是什么 有什么能改进的

  我所熟悉的是TD

 流程是讲测试计划、方案、测试用例录入TD,在TD上执行测试用例记录缺陷,并对bug进行跟踪。

  29.你有没有用过QTP做项目,QTP的工作原理

  我有用QTP做过项目。QTP的工作原理是执行重复的手动测试,首先制定测试计划再根据测试计划创建测试脚本,然后对脚本进行优化增强测试脚本的能接下来运行脚本分析测试的结果

  30.什么是白盒测试?白盒测试的工具有哪些?

  白盒测试是测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有的逻辑路径进行测试。工具有:Rational Purify Rational Quantify Rational Purecoveage

  31.路由器,集线器,交换机的区别?

  路由器的作用是用于连接不同网段并且找到网络中数据传输最合适的路径。

  集线器的作用是将一些pc机连起来组成一个局域网。

  交换机的作用与集线器的相似,区别在于集线器采用的是共享带宽的方式,交换机是独享带宽。

  32.我手上这支笔,请你根据这支笔设计测试用例

 首先我要测它的外观、颜色是否符合要求、她所占的空间是多大、是否环保、接下来测它的质量、这支笔是否能够写字流畅、写出的自得颜色是否符合要求、能使用多长时间等

  33.BUG报告包括那些内容

  Bug出现的位置、可重现的步骤、所使用的数据、bug的截图、发现人及日期。

  34.请列举一些Oracle数据库中的SID语句

  35.WH模型的区别

  W模型强调的是测试伴随整个软件开发周期,而且测试的对象不仅是程序,需求也需要进行测试,测试与开发是同步进行的。

  H模型是讲测试活动玩却的独立出来,形成了完全独立的流程,可以实现迭代而W模型不支持迭代这是两者最打的区别。

  36.没有任何说明书,如何进行测试?

  首先是通过对软件测使用来熟悉整个软件,接着是与开发沟通掌握软件的特性并一一记录下来,作为测试的依据。

第一章软件工程要点内容:

1.掌握软件定义:程序+数据+文档,软件分类:系统软件(负责管理计算机硬件与软件资源的程序,使得他们可以协调工作)和应用软件(为了某种特定的用途而被开发的软件,如工具软件、游戏软件、管理软件等

)。

2.掌握软件工程的3要素:方法、工具、过程

3.理解并掌握软件开发模型中的:瀑布模型,V模型(要注意区分开发的V模型和测试的V模型),迭代模型,敏捷开发模型。

瀑布模型:瀑布模型核心思想是按工序将问题化简,将功能的实现与设计分开,便于分工协作,即采用结构化的分析与设计方法将逻辑实现与物理实现分开。将软件生命周期划分为制定计划、需求分析、软件设计、程序编写、软件测试和运行维护等六个基本活动,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落

 

V模型:强调软件开发的协作和速度,将软件实现和验证有机地结合起来,在保证较高的软件质量情况下缩短开发周期

 

迭代模型:迭代式模型是是RUP(Rational Unified Process,统一软件开发过程,统一软件过程) 迭代包括产生产品发布(稳定、可执行的产品版本)的全部开发活动和要使用该发布必需的所有其他外围元素

 

敏捷模型:敏捷开发是一种以人为核心、迭代、循序渐进的开发方法。 软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。敏捷强调变早快

4.了解软件主流开发技术中:C/S架构,B/S架构的概念,两者之间的区别;C/S和B/S系统测试的常见的测试点。

名称

C/S架构

B/S架构

概念

客户端服务器模式

浏览器服务器模式

特点

1.将计算机应用任务分解成多个子任务,由多台计算机分工完成

2.把数据库内容放在远程的服务器上,而在客户机上安装相应软件

1.客户端通过Browser访问Web服务器以及与之相连的后台数据库的技术及体系结构

2.安装维护一个服务器 (Server),而客户端采用浏览器 (Browse) 运行软件

优势

1.应用服务器运行数据负荷较轻

2.数据储存管理功能的使用较为“透明”

1. 维护和升级方式简单

2.成本降低,选择更多

劣势

高昂的维护成本且投资大

应用服务器运行数据负荷较重

测试点

1.输入是否合法

2.路径测试或循环测试

3.事务测试

4.导入导出测试

5.安全性测试

6.登录退出测试

7.日志测试

1.功能测试:链接、表单、数据、cookie、数据库、设计语言等的测试

2.性能测试:连接速度、负载、压力测试

3.可用性测试:导航、图形界面、表格、内容测试

4.客户端兼容性测试:平台、多浏览器、分辨率、打印、组合测试等

5.安全性测试:有效无效用户名和密码、超时限制

6.接口测试:服务器接口、外部接口、错误处理

7.故障恢复测试:断电、网络通信中断、异常关闭、错误操作顺序

8.安装反安装:安装、卸载

第二章软件测试基础内容:

1.掌握软件测试的定义

定义1:评价一个程序和系统的特性或能力,并确认它是否达到预期的结果,检查是否满足规定的需求

定义2:测试是为发现错误而执行程序的过程

定义3:是对软件需求分析、设计、编码的最终复查的一系列过程,是软件质量保证的关键步骤

注:三个定义中定义3是现代对软件测试的定义是正确的,前两个是70年代的定义,对现代软件测试不适合

2.理解测试和调试的区别:

调试(Debugging): 在源程序内定为错误;分析错误的原因;修改错误;在程序运行时检验程序功能

测试(Testing):诱发错误;重现错误;定为错误(功能·需求·模块);记录错误

3.掌握软件测试的目的:

  1. 发现缺陷,提高质量
  2. 验证是否满足需求
  3. 建立软件质量的信心

4.理解并掌握软件测试原则

  • 测试显示缺陷的存在;
  • 穷尽测试是不可能的;
  • 测试尽早介入;
  • 缺陷集群性80-20原则;
  • 杀虫剂悖论;
  • 测试活动依赖于测试背景;
  • 不存在缺陷的谬论

2.掌握软件测试工作流程及对应内容:

 

第三章基于生命周期的软件测试内容:

1. 掌握什么是基于生命周期测试的概念

生命周期测试:定义软件测试的流程和方法,指导测试项目所要求的进度、成本和质量,开展测试任务必须覆盖整个软件测试生命周期的一组有序的软件测试活动。

2.掌握生命周期各阶段测试的任务:

需求阶段:重点是确认定义的需求符合机构的要求(该阶段的测试工作最重要,在需求阶段解决问题所花费的代价最小,遵循了测试原则中测试需要尽早开始)

设计和编程阶段:重点是验证设计和程序实现了需求

测试和安装阶段:重点是检查实现的系统符合系统规格说明

维护阶段:系统将重新测试以决定改变的部分和未改变的部分能继续工作

2.掌握基于风险的软件测试:高风险重点测试

3.基于风险的测试所能解决的问题:测试时间压力;需求质量低或不完整;被测系统的风险级别。

4.了解几种常见的开发模型和测试模型

 

3.软件测试过程模型:重点掌握V、W、H三个测试模型每个阶段任务、特点及优缺点。

V模型:

 

强调了在整个软件项目开发中需要经历的若干个测试级别,既有源代码和程序的验证和测试,又有系统级用户需求的验证,并与每一个开发级别对应;

缺点:测试是在编码后,仅仅是测试程序,需求分析、设计阶段存在的问题,只能在后期的系统和验收测试才能发现。更易引起对测试的误区,导致大多认为测试不重要。

W模型:

 

增加了软件各开发阶段中应同步进行的验证和确认活动,开发和测试同时开始。具体的执行工作是在编码完成后进行的,测试用例的设计和测试执行是分开的,把软件的开发视为需求、设计、编码等一系列的串行活动,

缺点:无法解决需求变更等变更调整;线性的前后关系,无法有效支持迭代;没有很好体现测试流程的完整性。

H模型:

 

测试可以和开发的各个阶段交叉进行。严格划分阶段是理想状况,测试和开发一样也是不断触发、迭代、增量的。H模型把测试独立出来,有独立的流程。只要测试条件成熟,测试准备完成,就能执行测试

缺点:如果测试就绪点无法到达,不能真正的开始测试执行工作。

软件需求分析内容:

1.掌握需求的定义

定义一:要产品实现的功能是什么。也可以是“系统必须符合的条件或具备的功能”

定义二:一种获取,组织并记录系统需求的系统化方案,以及一个使客户与项目团队对不断变更的系统需求达成并保持一致的过程

2.掌握软件测试需求定义:一个项目的范围就是软件测试需求,它定义了软件测试工作的范围,是进行其他测试活动的基础

3.掌握测试需求的特征

可核实(描述的需求有一定的预期结果)

满足需求的正常的前置条件,不满足需求时的出错条件(能够实现这个功能所必须满足的条件,以及如果不满足需求时给出的一些友好的错误提示等)

注:测试需求不涉及具体的测试数据

4.重点掌握需求分析的过程

  • 根据软件开发需求说明书逐条列出的软件开发需求,并判断其是否有可测试性

    a.删除原开发需求列表中重复的、冗余的含有包含关系的开发需求描述

    b.细化:对太简略的开发需求描述进行细化

    c.合并:如果有类似的开发需求,在整理时需要对其进行合并

  • 对列出的每一条开发需求进行测试范围的界定
  • 对每一条测试范围,根据质量标准,制定测试通过标准,用以判断测试成功和失败
  • 分析测试执行时需要实施的测试类型,形成专业的测试需求
  • 建立测试需求跟踪矩阵

5.了解测试需求的来源

(1)与待测软件相关的各种文档资料。如软件需求规格说明书,use case、界面设计、项目会议或与客户沟通时有关于需求信息的会议记录、其他技术文档等。

(2)与客户或系统分析员的沟通

(3)业务背景资料,如待测软件业务领域知识

(4)正式与非正式的谈判

(5)其他。如果以旧系统为原型,那么旧系统原有的功能与特性就称为最有效的测试需求收集途径

第七章静态分析内容

1.掌握静态测试概念:静态测试通常是指不执行程序代码而寻找代码中可能存在的错误或评估程序代码的过程,静态测试的对象:各种与软件相关的有必要进行测试的产物,比如各类文档、源代码等。

2.掌握静态测试的几种方法(分类记住,后面的内容了解即可):

各阶段评审:一般评审包括:培训评审、预备评审、同行评审。

代码检查:主要检查代码和设计的一致性、代码对标准的遵循、代码的可读性、代码的逻辑表达正确性,代码的合理性。

软件复杂性分析:主要包括软件复杂性度量与控制,软件复杂性度量元,面向对象的软件复杂性度量。

软件质量度量:从整体上对软件质量进行评测,用于软件开发中对软件进行质量控制,并最终对软件产品进行评价和验收

3.了解评审的概念、时间点:评审方法是评审参与者通常采用一行一行仔细阅读被评审对象的形式发现被测对象中的缺陷;评审的时间点:一般设在工作产品到达了一个完成的里程碑并即将进入下一个开发阶段时。

评审是对软件元素项目状态进行评估的活动,用以确定与预期结果之间的偏差和相应的改进意见

4.掌握同行评审的几种方法(能够根据给出的案例指出属于哪种评审方法):

审查

小组评审

走查

同级桌查

临时评审

非作者等专家在内的针对特定对象进行检查以发现缺陷的过程,最正式

一种“轻型审查”,可采用审查的指导方针和流程

是产品的作者向一组同事说明该产品,希望获得他们的意见以满足自己的需要

指除作者以外只有一位评审专家对工作产品进行检查

请团队内其他同事帮忙,在短时间内解决一些问题,最不正式

审查流程

没有审查那么正式和严格

没有标准的流程可循

无标准流程

无标准流程

每个阶段需要确定的内容

会议期间读者的角色由评审组长代替

过程由作者主持

只有一位评审专家

团队同时帮忙

审查原则

发现问题的数量是审查的2/3

比审查发现的缺陷数量要少一半

发现问题较少

发现问题较少

掌握根据不同的项目情况选择不同的评审方式:

 

5.了解需求规格说明书的测试:规格说明书的概要评审、规格说明书的详细评审、问题词语列表。

6.掌握圈复杂度的三种计算方法:

把程序结构的控制流程图转化为有向图(即程序图),然后计算强连通有向图的环数来衡量软件的质量,用此方法得到的复杂度称为圈复杂度。(为了使之强连通,我们可以从出口点到入口点画一条虚弧。)

第一种:V(G)=m-n+p;(m是有向图中的弧数,n是节点数,强连通时p=1,弱联通时p=2)

第二种:圈复杂度等于程序图中判定节点的数目加1;(判定节点是有向图中包含判断条件的节点)

第三种:圈复杂度等于强连通程序图在平面上围成的区域的个数;

McCabe复杂度的基本思想是程序的复杂性很大程度上取决于程序控制流的复杂性

7.掌握软件测试分类

 

第八章动态测试-黑盒测试(重点掌握)内容

1.掌握黑盒测试的概念:黑盒测试又称功能测试数据驱动测试;把测试对象当作看不见内部的黑盒,在完全不考虑程序内部结构和处理过程的情况下,测试者仅依据程序功能的需求规范考虑,确定测试用例和推断测试结果的正确性;站在使用软件或程序的角度,从输入数据与输出数据的对应关系进行的测试。

2.了解黑盒测试的目的:

  • 是否有不正确或遗漏的功能。
  • 数据或者参数上,输入能否正确接收?能否输出正确的结果。
  • 是否有数据结构错误或外部信息(例如数据文件)访问错误。
  • 性能上是否能够满足要求。
  • 是否有初始化或终止性错误

了解黑盒测试的要求:

  • 每个软件特性或功能必须被一个测试用例或一个被认可的异常所覆盖
  • 构造数据类型和数据值的最小集测试
  • 测试排斥不规则输入的能力
  • 对影响性能的关键模块,应测试模块性能
  • 程序做了该做的
  • 程序没有做不该做的
  • 程序错误处理是否完整

了解黑盒测试存在的问题:

    • 如果外部特性本身设计有问题或规格说明的规定有误,用黑盒测试方法是发现不了的
    • 测试用例数量大
    • 测试用例可能会有很多冗余
    • 功能性测试的覆盖范围不可能达到100%
    • 黑盒测试不能替代白盒测试,而是用来发现白盒测试以外的其他类型的错误

3.掌握黑盒测试设计测试用例的几种方法:等价类划分法、边界值分析法、因果图法、随机法、猜错法、探索性测试、场景法,重点掌握前三种。

4.理解并掌握等价类划分法

  • 概念:等价类,所有可能的输入数据,即程序的输入域划分成若干部分,从每一部分中选取少数有代表性的数据做为测试用例,代表性数据等同于该类中的其他值。
  • 有效等价类:对于程序规格说明来说,是合理的,有意义的输入数据构成的集合;无效等价类:对于程序规格说明来说,是不合理的,无意义的输入数据构成的集合
  • 划分等价类的原则:1.根据输入条件的取值范围,可以划分出一个有效等价类和两个无效等价类;2. 如果输入条件规定了输入值的集合,或者是规定了“必须如何”的条件,这时可确立一个有效等价类和一个无效等价类;3. 如果输入条件是一个布尔量,则可以确定一个有效等价类和一个无效等价类;4. 如果规定了输入数据的一组值(假设N个),而且程序要对每个输入值分别进行处理,每个允许的输入值是一个有效等价类(即N个有效的),这组值确立一个无效等价类,它是所有不允许的输入值的集合;5. 如果规定了输入数据必须遵守的规则,则可确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则);6. 在确知已划分的等价类中,各元素在程序处理中的方式不同的情况下,则应再将该等价类进一步地划分为更小的等价类;
  • 步骤:为每个等价类规定一个惟一的编号;设计一个新的测试用例,使其尽可能多地覆盖尚未覆盖的有效等价类。重复这一步,最后使得所有有效等价类均被测试用例所覆盖;设计一个新的测试用例,使其只覆盖一个无效等价类。重复这一步使所有无效等价类均被覆盖

5.理解并掌握边界值分析法

  • 概念:边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法,稍高于其边界值及稍低于其边界值的一些特定情况;选取正好等于,刚刚大于,或刚刚小于边界的值做为测试数据的方法。
  • 原则:1. 如果输入条件规定了值的范围,则应取刚达到这个范围的边界值,以及刚刚超越这个范围的边界值作为测试的输入数据;2. 如果输入条件规定了值的个数,则用最大个数,最小个数,比最小个数少一,比最大个数多一的数作为测试数据;3. 根据规格说明的每个输出条件,使用原则 1)例如:某程序的功能是计算折扣量,最低折扣是0元,最高折扣是1000元。则设计一些测试用例,使他们刚好产生0元和1000元的结果;4. 如果程序的规格说明给出的输入域或输出域是有序集合,则应选取集合的第一个元素和最后一个元素作为测试用例;5. 分析规格说明,找出其他可能的边界条件;

6.理解并掌握因果图法:

  • 概念:是一种利用图解法分析输入的各种组合情况,从而设计测试用例的方法,该方法充分考虑了输入情况的各种组合及输入条件之间的相互制约关系。
  • 基本步骤:1.分析软件规格说明描述:原因、结果、标识符;2.分析软件规格说明描述中的语义:找出逻辑关系;3.由于语法或环境限制,有些原因与原因之间,原因与结果之间的组合情况不可能出现,添加必要的约束条件;4.把因果图转换成判定表;5.把判定表的每一列拿出来作为依据,设计测试用例
  • 原因和结果之间的约束:

 

①恒等:若C1是1,则E1也是1;否则E1为0。

②非:若C1是1,则E1是0;否则E1是1。

③或:若c1或c2是1,则E1是1;否则E1为0,或”可有任意个输入。

④与:若c1和c2都是1,则E1为1;否则E1为0, 与”也可有任意个输入

  • 原因和原因之间的约束:

 

A.输入条件的约束有以下4类:(原因之间的关系)

① E约束(互斥/异):a和b中至多有一个可能为1,即a和b不能同时为1。

② I约束(或):a、b和c中至少有一个必须是1,即 a、b 和c不能同时为0。

③ O约束(唯一);a和b必须有一个,且仅有1个为1。

④ R约束(要求):a是1时,b必须是1,即不可能a是1时b是0。

B.输出条件约束类型:(结果与结果的关系)

  M约束(屏蔽/强制):若结果a是1,则结果b强制为0。

7.了解随机法概念:随机测试测试输入数据是所有可能输入值中随机选取的,是一种基本的黑盒测试方法。主要是根据测试者的经验对软件进行功能和性能抽查。

8.了解猜错法的概念:基于经验和直觉推测程序中所有可能存在的各种错误,从而有针对性地设计测试用例的方法。

9.了解场景法:事件触发时的情景便形成了场景(Scenario),而同一事件不同的触发顺序和处理结果就形成事件流

10.了解探索性测试:探索性测试强调测试设计和测试执行的同时性,这是相对于传统软件测试过程中严格的“先设计,后执行”来说的。测试人员通过测试来不断学习被测系统,同时把学习到的关于软件系统的更多信息通过综合的整理和分析,创造出更多的关于测试的主意。

11.了解等价类划分法与边界值分析法的不同

    • 等价类划分法的测试数据是在各个等价类允许的值域内任意选取的
    •  边界值分析法的测试数据必须在等价类的边界值附近选取
    •  边界值分析不仅考虑输入条件,还要考虑输出空间产生的测试情况
    •  边界值分析法使用范围更广,更复杂,找到的缺陷也更多,需要测试人员有更多的经验和耐心
    •  边界值分析是等价类划分方法的补充

第六章软件测试过程中的活动及内容

一.掌握软件测试过程中的活动及内容

阶段

需求

设计

编程

测试

安装

维护

主要测试活动

验证和确认需求说明书,制定测试计划

验证和确认设计文档,模型等,测试设计及评审

代码,评审,搭建环境,单元测试

执行测试,缺陷管理

安装测试,确认产品

培训,维护,变更管理,测试

输出

测试需求,组织团队,测试计划

测试计划方案等

测试案例及缺陷等

缺陷报告和测试报告

安装程序,安装文档,用户手册等

维护手册,测试报告等

  • 了解根据测试流程需要了解的过程内容
  1. 基于项目目标,制定测试计划,确定测试策略,选定测试方法,排定优先级,建立里程碑,组织测试资源(测试团队,软硬件环境等)等。
  2. 基于测试计划,明确测试需求,测试对象和测试目标及功能与性能目标。
  3. 基于需求说明书与测试计划,进行测试用例的设计。
  • 掌握软件测试过程中的关键活动包括:

 

提取测试需求

确定测试策略

制定测试计划

分析测试结果

执行测试用例

开展测试设计

 

 
   

 

 

 

 

 

 

 

四.了解软件测试过程主要工作内容

项目启动--确定项目组长,进行项目的前期准备。         

测试需求分析--以软件开发需求为基础,形成可测试的内容。

制定测试计划--确定测试范围、测试策略和方法,以及对风险、日程表、资源等进行分析和评估。

测试设计和开发--制定测试的技术方案、设计测试用例、选择测试工具、写测试脚本等,并且进行评审。

测试实施和执行--建立或设置相关的测试环境,准备测试数据,执行测试用例,并提交发现的缺陷。

测试结果的审查和--分析测试结果,确定产品质量,提供发布依据。

五.掌握软件测试管理流程

 

分析

测试需求

测试计划

测试设计

测试执行

测试总结

测试记录

缺陷追踪

完毕

测试结果的审查和分析

软件测试流程图

 

 
   

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 软件测试计划与测试需求
  1. 了解软件测试需求的收集方式:与被测软件相关的各种文档资料;与客户或系统分析员的沟通;业务背景资料;正式与非正式的培训。
  2. 了解软件测试计划的定义:软件测试计划是指导测试过程的纲领性文件,包含了产品概述,测试策略,测试范围,测试目的,测试周期,测试资源,测试交流,风险分析,准入准出准则等内容。

掌握软件测试计划的编写,测试计划文档包含的内容:

  • 测试环境
  • 软硬件搭建环境、网络拓扑图等
  • 测试策略
  • 测试采用的方法,如功能、性能、兼容、界面等
  • 项目范围、目标
  • 各阶段要进行的活动项,项目要达到的目标等
  • 进度表
  • 分解项目结构,制定时间/资源表
  • 项目资源
  • 人员、硬件和软件等资源的组织和分配
  • 跟踪和控制机制
  • 质量保证和控制、变化管理和控制等(测试里程碑对应的工作流程)
  • 项目估算
  • 工作量、成本、时间估算依据
  • 风险计划
  • 测试可能存在的风险分析、识别,以及风险的回避、监控、管理
  • 测试开始和退出准则
  • 测试开始与退出的参考标准

了解编写测试计划的目的

  • 制定每项测试活动的对象、范围、方法、进度和预期结果,提高测试质量与效率
  • 建立测试任务,与任务执行的先后顺序
  • 责任分工,定义测试项目中每个角色的责任和工作内容
  • 确定测试所需要的时间和资源,以保证其可获得性、有效性
  • 确立每个测试阶段测试完成以及测试成功的标准、要实现的目标
  • 识别风险,消除风险,降低风险带来的损失
  1. 了解软件测试设计:软件测试设计则是将测试需求转换成测试用例的过程。它要描述测试   环境,测试执行的范围和用户的使用场景以及测试输入和预期的测试输出等。

了解制定测试策略的思路:测试策略是描述当前冲测试的目标和采用的测试方法。

①根据需求文档确立测试目标(测试范围)

②在测试目标的基础上制定测试策略(所测试范围采用的测试方法,如功能测试,性能测试,兼容性测试,移植性测试等)

③依据测试策略确定测试方向(确立白盒测试,黑盒测试,手工测试,自动化测试等)

掌握测试用例包含的四个重要要素:测试用例是为某个特殊目标而编制的一组测试输入执行条件、操作步骤以及预期结果的文件,以便测试某个程序路径或核实是否满足某个特定需求

  1. 了解脚本的开发(使用自动化工具时要开发脚本):根据所选择的测试工具,编写测试脚本,将所有可以进行自动化测试的测试用例转化为测试脚本;脚本开发的思想是基于测试需求的测试用例作为输入,输出是测试脚本执行的实际结果和期望结果比较后的报告。

了解使用工具开发步骤:设立测试搅拌开发环境——执行录制测试初始化过程——将录制的测试脚本进行组织,调试和修改——建立外部数据集合

  1. 了解测试总结报告包含的内容

 

  1. 了解软件测试文档的概念:软件测试文档用来记录、描述、展示测试过程中一系列测试信息的处理过程,通过书面或图示的形式对软件测试过程中的活动或结果进行描述、定义及报告,记载了整个测试的过程和成果。

了解软件测试文档的作用

  • 提高软件测试过程的能见度
  • 文档化能规范测试问题的反馈,提高测试效率
  • 便于团队成员之间的交流与合作
  • 测试文档是测试人员经验提升的最好途径
  • 有利于项目测试的监控作用
  • 有利于测试工作的开展

了解测试组在公司中运转的流程

 

第八章动态测试-白盒测试(重点)

1.掌握白盒测试的概念:“白盒”测试又称为结构测试或逻辑驱动测试,是一种按照程序内部逻辑结构和编码结构设计测试数据并完成测试的一种测试方法。

2.掌握六种逻辑覆盖:

① 语句覆盖:使得每一条语句至少被执行一次(程序流程图中的每个语句块)

 

上图有两条语句:X:=X/A X:=X+1,语句覆盖是把这两个语句至少被执行一次

测试用例输入

输出

判定M的取值

判定N的取值

覆盖路径

A=2,B=0,X=4

A=2,B=0,X=3

T

T

P1(a-c-e)

 

 

② 判定覆盖:要求设计足够的测试用例,使得程序中的每一个分支至少通过一次,即每一条分支语句的“真”值和“假”值都至少执行一次;只关心整个判定表达式的值。

 

图中有两个判定

M:A>1 AND B=0

N:A=2 OR X>1

判定覆盖是设计用例使M取真、M取假、N取真、N取假都被至少执行一次

测试用例输入

输出

判定M的取值

判定N的取值

覆盖路径

A=2,B=0,X=4

A=2,B=0,X=3

T

T

P1:(a-c-e)

A=1,B=1,X=1

A=1,B=1,X=1

F

F

P2:(a-b-d)

 

③条件覆盖:使每个判定中每个条件的可能取值至少满足一次;判定覆盖只关心整个判定表达式的结果,条件覆盖关心的则是每个条件各种取值的结果。

 图中有两个判定

M:A>1 AND B=0,该判定中有两条件A>1、B=0

  • A>1取真时T1A<=1取假时F1;
  • B=0取真时T2B!=0取假时F2;

N:A=2 OR X>1,该判定中有两条件A=2、X>1

  • A=2取真时T3A!=2取假时F3;
  • X>1取真时T4X<=1取假时F4

条件覆盖是使得T1、T2、T3、T4、F1、F2、F3、F4都被至少出现一次

测试用例输入

输出

取值条件

具体取值条件

覆盖路径

A=2,B=0,X=4

A=2,B=0,X=3

T1,T2, T3, T4

A>1,B=0,A=2, X>1

P1:(a-c-e)

A=1,B=1,X=1

A=1,B=1,X=1

F1, F2, F3,F4

A<=1,B!=0,A!=2,X<=1

P4:(a-b-d)

④判定/条件覆盖:设计足够多的测试用例,使得判定中每个条件的所有可能取值至少能够获取一次,同时每个判断的所有可能的判定结果至少执行一次。

判定/条件覆盖是既要满足条件覆盖,也要满足判定覆盖

测试用例输入

输出

取值条件

具体取值条件

判定M的取值

判定N的取值

覆盖路径

A=2,B=0,X=4

A=2,B=0,X=3

T1,T2, T3, T4

A>1,B=0,

A=2,X>1

T

T

P1:(a-c-e)

A=1,B=1,X=1

A=1,B=1,X=1

F1, F2, F3,F4

A<=1,B!=0,A!=2,X<=1

F

F

P4:(a-b-d)

 ⑤条件组合覆盖:要求设计足够多的测试用例,使得每个判定中条件的各种组合至少出现一次;满足条件组合覆盖标准的测试用例,也一定满足判定覆盖、条件覆盖和判定/条件覆盖标准。

M判定中A>1和B=0的条件组合:

  • 1 A>1, B =0     2 A>1, B0
  • 3 A1, B =0    4 A1, B0

N判定中A=2 和 X>1的条件组合:

  • 5 A=2, X>1      6 A=2,  X1
  • 7 A2, X>1     8A2, X1

条件组合覆盖是使得1)、2)、3)、4)、5)、6)、7)、8)都至少出现一次,但是要使得用例最少。

测试用例输入

输出

覆盖条件取值

覆盖条件组合

覆盖路径

A=2,B=0,X=4

A=2,B=0,X=3

T1,T2,T3,T4

1,5

P1:(a-c-e)

A=2,B=1,X=1

A=2,B=1,X=2

T1,F1,T2,F1

2,6

P3:(a-b-e)

A=1,B=0,X=3

A=1,B=0,X=4

F1,T2,F3,T4

3,7

P3:(a-b-e)

A=1,B=1,X=1

A=1,B=1,X=1

F1,F2,F3,F4

4,8

P4:(a-b-d)

 

⑥路径覆盖:要求设计足够多的测试用例,使得程序中所有的路径都至少执行一次。

使得P1:(a-c-e)、P2:(a-b-d)、P3:(a-b-e)、P4:(a-c-d)都要被执行

测试用例输入

输出

覆盖条件取值

覆盖条件组合

覆盖路径

A=2,B=0,X=4

A=2,B=0,X=3

T1,T2,T3,T4

1,5

P1:(a-c-e)

A=1,B=0,X=1

A=1,B=0,X=1

T1, F1,T2,F1

2,6

P2:(a-b-d)

A=2,B=1,X=1

A=2,B=1,X=2

F1,T2,F3,T4

3,7

P3:(a-b-e)

A=3,B=0,X=1

A=3,B=0,X=2

F1,F2,F3,F4

4,8

P4:(a-c-d)

辑覆盖

优点

缺点

语句覆盖

  • 检查所有语句
  • 代码覆盖率高
  • 结构简单的代码的测试效果好
  • 容易实现自动化测试
  • 如果是程序块覆盖,则不用考虑程序块中的源代码
  • 无法检查出条件语句错误
  • 无法检查出逻辑运算错误
  • 无法检查出循环条件错误

判定覆盖

  • 判定覆盖要比语句覆盖差错能力强一些
  • 执行了分支覆盖,实际也就执行了语句覆盖
  • 不能查出条件错误
  • 不能查出逻辑运算错
  • 不能查出循环次数错
  • 不能查出循环条件错

条件覆盖

能够检查所有的条件错误

  • 不能实现每个分支的检查
  • 用例数增加

判定/条件覆盖

  • 既考虑了每一个条件,有考虑了每一个分支
  • 发现错误的能力强于分支覆盖和条件覆盖
  • 不能全面覆盖所有路径
  • 用例数量的增加

条件组合覆盖

能够检查所有的条件错误

  • 满足条件组合覆盖要求的测试用例
  • 不一定能使程序中的没条路径都能执行

3.掌握六种逻辑覆盖的覆盖度

 

路径覆盖

判定/条件覆盖

条件组合覆盖

判定覆盖

语句覆盖

条件覆盖

逻辑覆盖度

 

 
   

 

 

 

 

 

 

 

 

 

 

 

 

 

4.了解路径测试的定义和方法:根据程序的逻辑控制所产生的路径进行测试用例设计的方法。

它是从一个程序的入口开始,执行所经历的各个语句的完整过程。

完成路经测试的理想情况是做到路径覆盖

路径测试分为:DD路径测试(程序的每个判断分支都被执行)和基本路径测试(McCabe

5.了解基本路径测试的方法:基本路径测试中独立路径的数量即为圈复杂度,基本路径测试是McCabe提出的一种“白盒”测试方法

6.了解基本路径测试的步骤

1) 根据过程设计结果画出相应的控制流图

2) 计算控制流图的圈复杂度

3) 确定线性独立路径的基本集合

4) 设计可强制执行基本集合中每条路径的测试用例

第五章 软件缺陷管理(比较重要,掌握缺陷报告的编写)

1.掌握软件缺陷的定义:软件缺陷(Defect),常常又被叫做Bug即为计算机软件或程序中存在的某种破坏正常运行能力的问题、错误,或者隐藏的功能缺陷。缺陷的存在会导致软件产品在某种程度上不能满足用户的需要。

2.掌握缺陷的表现:

  • 软件未实现产品说明书要求的功能
  • 软件出现了产品说明书指明不应该出现的错误
  • 软件实现了产品说明书未提到的功能
  • 软件未实现产品说明书虽未明确提及但应该实现的目标
  • 软件难以理解、不易使用、运行缓慢或者从测试员的角度看(最终用户)会认为不好

3.了解软件缺陷可能带来的风险

  • 系统无法正常启停
  • 系统文件被破坏
  • 系统性能下降
  • 系统不可恢复
  • 系统无法稳定运行
  • 系统维护复杂

4.了解导致缺陷产生的几个原因:

  • 需求的不完善定义
  • 客户——开发者通信失败
  • 对软件需求的故意偏离
  • 逻辑设计错误
  • 编码错误
  • 不符合文档编制与编码规定
  • 测试过程不足
  • 规程错误
  • 文档编制错误

5.了解缺陷很难找到的原因:

  • 软件错误/缺陷很难看到
  • 软件错误/缺陷看到了但很难抓到
  • 软件错误/缺陷抓到了但无法修改或很难修改
  • 人们无时无刻都可能犯错误,使得软件中存在错误/缺陷

6.了解典型的缺陷类型

  • 需求解释有错误、用户定义错了需求、需求记录错误;
  • 设计说明有误;
  • 编码说明有误、程序代码有误、数据输入有误;
  • 测试错误、问题修改不正确;
  • 正确的结果是由于其它的缺陷产生的。

7.重点掌握缺陷报告的编写:缺陷报告包含的元素

 

 

8了解缺陷严重程度的分级

    •     Critical(致命的)

不能执行正常功能或重要功能,或者危及人身安全

    • Major(严重的)

严重的影响系统要求或基本功能的实现,且无法更正(重现安装或重新启动该软件不属于更正方法)

    • Minor(次要的)

          严重影响系统要求或基本功能的实现,但存在合理的更正方法

    • Cosmetic(轻微的)

         造成操作者不便或遇到麻烦,但不影响执行工作或重要功能   

    • Other(其他的)

9.了解缺陷优先级的划分

    • High

应该立即被解决。不符合系统的设计或某一主要功能无法实现

    • Middle

需要正常排队等待修复或列入软件发布清单。某些非总要的功能未能实现,但不影响其他功能

    • Low

可以在方便的时候被纠正。不影响系统的功能实现,如提示信息错误,错别字等

10.了解收集缺陷数据的过程

    • 为测试和评审中发现的每一个缺陷做一个记录
    • 对每个缺陷要记录足够详细的信息,以便以后能更好地了解这个缺陷
    • 分析这些数据以找出哪些缺陷类型引起大部分的问题
    • 1.

11.掌握缺陷管理的一般流程

没有评审委员会的出现

 

有评审委员会

 

缺陷所处的几种状态

 

缺陷的流程图

 

 
   

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

缺陷中的几种角色

 

12.了解缺陷度量的几种方法

      • 缺陷密度(缺陷在规模上的分布)

缺陷密度=已知缺陷的数量/产品规模

      • 缺陷率(缺陷在时间上的分布)
      • 缺陷清除率

缺陷清除率=已修正缺陷数/发现的总缺陷数

      • 缺陷趋势通常用缺陷趋势图来表示
      • 缺陷发现率

 

 

 

 

 

 

 

 

你可能感兴趣的:(软件测试入门基础知识汇总)