软件测试:在规定条件下对程序进行操作,以发现错误,对软件质量进行评估,包括对软件形成过程的文档、数据以及程序进行测试
软件质量:软件特性的总和,软件满足规定或潜在用户需求的能力
质量保证:通过预防、检查与改进来保证软件质量,采用全面质量管理和过程改进的原理来开展质量保证工作,主要关注软件质量的检查与测试,主要着眼于软件开发活动的过程、步骤和产特。软件测试:通过执行软件来,对过程中的产物(开发文档和程序)进行走查,发现问题,报告质量
软件测试的目的:测试是程序的执行过程,目的在于发现错误;一个好的测试用例在于发现了至今未发现的错误;一个成功的测试是发现了 至今未发现的错误的测试;
软件测试原则:所有的软件测试都应追溯到用户需求;应当把“尽早地和不断地进行软件测试”作为测试者的座右铭;完全测试是不可能的,测试需要终止;测试无法显示软件潜在的缺陷;充分注意测试中的群集现象;程序员应避免检查自己的程序;尽量避免测试的随意性。
软件测试对象:程序开发过程中的各个文档、源程序。
软件测试过程模型-V模型:是软件开发瀑布模型的变种,主要反映测试活动与分析和设计的关系;
局限性:把测试作为编码之后的最后一个活动,需求分析等前期产生的错误直到后期的验收测试才能发现
软件测试过程模型-W模型:在V模型的基础上,增加千开发阶段的同步测试,形成W模型;测试与开发同步进行,有利用尽早的发现问题。局限性:仍把开发活动看成是从需求开始到编码结束的串行活动,只有上一阶段完成后,才可以开始下一阶段的活动,不能支持迭代,自发性以及变更调整。
软件测试过程模型-H模型:在H模型中,软件测试过程活动完全独立,贯穿于整个产品的周期,与其他流程并发地进行,某个测试点准备就绪时,就可以从测试准备阶段进行到测试执行阶段;软件测试可以进行尽早的进行;软件测试可以根据被测物的不同而分层次进行。
测试模型使用:在实际工作中应灵活地运用各种模型的优点
V模型 | 强调了在整个软件项目开发中需要经历的若干个测试级别,并与每一个开发级别对应;忽略了测试的对象不应该仅仅包括程序,没有明确指出对需求、设计的测试 |
---|---|
W模型 | 补充了V模型中忽略的内容,强调了测试计划等工作的先行和对系统需求和系统设计的测试;与V模型相同,没有对软件测试的流程进行说明 |
H模型 | 强调测试是独立的,只要测试准备完成,就可以执行测试 |
定义 | 又称模块测试,是针对软件设计的最小单位程序模块进行正确性检查的测试工作;可以从程序的内部结构出发设计测试用例,多个模块测试可以平行地独立进行测试 |
---|---|
目的 | 发现模块内部可能存在的各种差错 |
内容 | 模块接口测试、局部数据结构测试、路径测试、错误处理测试、边界测试 |
步骤 | 利用设计文档设计测试用例;创建被测模块的桩模块或驱动模块;利用被测试模块、驱动模块和桩模块来建立测试环境,进行测试 |
定义 | 又称组装测试或联合测试,在单元测试基础上,将所有模块按概要设计和详细设计进行组装 |
---|---|
目的 | 发现模块连接中的接口可能存在的各种差错 |
内容 | 穿越模块之间的数据是否会丢失;一个模块组装后是否会对另一模块或其他模块存在影响;各个子功能组装在一起是否会达到预期的父功能;全局数据结构是否有问题;单个模块的错误累积起来是否会放在 |
组装方法 | 一次性组装方式,非增殖式方式也叫整体拼装,对模块分别测试然后将所有模块组装;第二种增殖式组装方式,可以是自顶向下或自底向上 |
完成标志 | 成功地执行了测试计划中规定的所有测试用例;修正了所发现的错误;测试结果通过专门小组的评审 |
目的 | 验证软件的功能和性能及其他特性是否与用户的要求一致 |
---|---|
测试内容 | 有效性测试 运行黑盒测试方法验证所测软件是否满足需求规格说明书列出的需求;所有文档正确且便于使用;软件可移植性、易用性、兼容性进行测试;软件配置复查 保证软件配置的所有成分都齐全 |
目的 | 验证和确认系统是否达到其原始目标,而对集成的硬件和软件系统进行的测试 |
---|---|
测试内容 | 在真实或模拟系统运行环境下,检查完整的程序系统能否和系统(硬件设备、网络、系统软件)正确配置、连接,满足用户需求 |
验收测试:测试内容:根据任务书或合迥、供需双方约定的验收依据文档进行对整个系统的测试与评审,确认是否接收或拒绝系统;
开发方测试:通常也叫‘验收测试’或‘a测试’,在软件开发环境中,开发者检测与证实软件的实现是否满足软件设计说明或软件需求说明的要求15用户测试:在用户的应用环境下,用户检测与核实软件实现是否符合自己预期的要求。B测试通常被认为是用户测试,把软件有计划地免费地分发到目标市场,让用户大量使用、评价检查软件。
第三方测试由第三方测试机构来进行的测试,也称独立测试。
动态测试:通过人工或使用工具运行程序进行检查,分析程序的执行状态和程序的外部表现。
静态测试:不运行程序,能过人工对程序和文档进行分析与检查,包括走查、符号执行、需求确认等。
白盒测试:通过对程序内部结构的分析、检测来寻找问题,检查程序的结构及路径是否正确,检查程序的内部动作是否按照设计说明的规定正常进行
黑盒测试:又称功能测试,通过运行程序发现其缺陷和错误,在程序界面处进行测试。
灰盒测试:介于白盒和黑盒测试之间,关注输出对于输入的正确性,也关注程序的内部结构,但没有白盒测试那样详细、完整
测试分类
开发过程 | 单元、集成、确认、系统、验证 |
---|---|
实施组织 | 开发方、用户、第三方 |
测试技术 | 白盒、黑盒、灰盒或静态、动态 |
是一抽象的、遵循GB/T18905《评价者用的过程》中定义软件评价过程的模型 |
---|
可重复性:同一评价者按同一评价规格说明对同一产品进行重复地评价,应产生同一种可接受的结果 |
可再现性:同不同评价者同一评价规格说明对同一产品进行评价,应产生同一种可接受的结果 |
公正性:评价应不偏向任何特殊的结果 |
客观性:评价结果应是客观事实 |
配置项标识:标识测试样品、标准、工具、文档报告等配置项的名称和类型、标识各配置项的所有者及储存位置 |
---|
配置项控制(变更控制):规定测试基线、基线创立时间、变更控制委员会人员组成、职能、确定变更请求的处理程序和终止条件、变更过程中测试人员变更的职能等 |
配置状态报告:定义报告形式、内容和提交方式、确认过程记录和跟踪问题报告、更改请求、更改次序;确定测试报告提交的时间与方式; |
配置审计:确定审计执行人员和执行时机;确定审计的内容与方式;确定发现问题的处理方法 |
软件测试风险:是软件测试过程出现的或潜在的问题,造成的原因主要是测试计划的不充分、测试方法有误或测试过程的偏离,造成测试的补充以及结果不准确
软件测试风险主要是对测试计划执行的风险分析与制定要采取应急措施;重点在措施
测试计划的风险:一般指测试进度滞后或出现非计划事件;常见的有交付日期、测试需求、测试范围、测试资源、人员的能力、测试预算、测试环境、测试支持、测试工具;
测试实施成本 | 测试准备成本、测试执行成本、测试结束成本 |
---|---|
低测试实施成本 | 测试准备环境尽可能使用软件和测试环境配置自动化;测试实施尽可能采用自动化测试工具(测试用例自动化执行),人工测试最好请初级技术人员,不使用测试工程师;测试结束编制测试报告测试结果与预期结果比较采用自动化方法(测试文档编制模板化) |
质量成本要素 | 一致性成本(用于测试实施成本)、非一致性成本(由出现的问题和故障引起) 质量成本=一致性成本+非一致性成本 |
缺陷探测率DD P | =Bugs(tester)/ (Bugs(tester)+ Bugs(customer)) 衡量测试投资回报的一个重要指标注:第116页计算题 |
用户文档 | 用户手册、操作手册、维护修改建议 |
---|---|
开发文档 | 需求说明书、概要设计、数据库设计、详细设计、可行性研究报告 |
管理文档 | 项目开发计划、测试计划、测试报告、开发进度月报、开发总结报告 |
用户文档的内容:包装上的文字及图案;宣传材料、广告及其他插页;授权/注册登记表;最终用户许可协议;标签和不干胶条;安装和设置指导;用户手册;联机帮助;指南、向导;样例、示例和模板;错误提示信息;
用户文档测试的要点
明确读者群:根据读者群(如初级、中级、高级用户)的不同来检查文档内容,保证用户能够看得懂、能理解
术语:文档中术语的描述要适合定位的读者群,用法一致,标准定义与业界规范相吻合
文档内容的正确性:要保证所有信息是真实正确的
文档内容的完整性:要完全根据提示逐步操作,检查是否存在遗漏的地方
文档与程序的一致性:按照文档操作后,检查软件返回的结果与文档描述是否一致
文档的易用性:检查是否便于用户查找相应的内容
图表与界面截图:检查所有图表与界面截图与发布的程序版本一致
样例和示例:检查所有的样例和示例能够正确完成;
语言:中文文档保证无错别字和二义性
印刷与包装:印刷质量,包装质量
用户手册的测试:准确的按照手册的描述使用程序;尝试每一条建议;检查每条陈述;查找容易误导用户的内容;
在线帮助的测试:内容的准确性;帮助功能的可靠性;每一条索引和主题列表要逐条检查,是否能够由索引进入主题;帮助系统中的每一个超级链接;主题是否全部能够在索引中找到;帮助系统的风格应简洁;
功能易用性测试
业务符合性 | 程序实现的业务逻辑与实际业务逻辑是否一致; |
---|---|
功能定制性 | 对软件功能应能够灵活定制 |
业务模块集成度 | 对于存在紧密关系的模块,是否方便功能转换,从一个功能进入到别一个功能 |
数据共享能力 | 对于多处使用的数据应可以一次输入多处使用,减少用户重复工作 |
约束性 | 对于流程性强的操作,应能够限制操作顺序;对非法信息应不允许进行系统 |
交互性 | 对于用户的每一次操作,应能够给出提示或回应,使用户清晰的看到系统的运行状态 |
错误提示 | 对于关键操作完成后或删除数据之前给出明确的提示信息; |
界面整体
规范性测试:符合现行标准和规范 |
---|
合理性测试:界面与软件功能是否相融洽,界面的布局是否协调 |
一致性测试:使用的控件、标签风格、错误提示信息、操作方法是否一致 |
界面定制性测试:界面元素的可定制性;工具栏的可定制性;统计检索的可定制性;报表的可定制性 |
界面元素
窗口测试:大小、显示、窗口大小改变、多个窗口同时打开、支持操作方法等 |
---|
菜单测试:是否符合需求;措辞是否准确;顺序是否合理;图形布局是否一致 |
图标测试:是否符合表达习惯;不同的目标是否采用不同的图标;图标尺寸是否合适;建议与对应功能相似;图标上是否有标注 |
鼠标测试:交互环境中是否可以识别鼠标操作;多次点击是否识别;无规则点击是否会产生无法预料的结果;右键弹出菜单是否正确; |
文字测试:界面文字是否正确,准确,无二义性; |
目的 | 确认软件系统对于服务器端、客户端及网络所需的环境是否正确、合理 |
---|---|
测试内容 | 最低配置是否能满足系统运行的需要;在推荐配置下系统的响应是否迅速;考察软件对运行硬件环境有无特殊说明;软件系统能否运行在多种硬件配置环境下 |
与整机兼容性 | 确认要求的最低配置和推荐配置的合理性和正确性;主要指标:机型的要求;CPU;内存;硬盘 |
与板卡及配件兼容性 | 独立板卡;主板芯片组;驱动程序中的自由软件 |
与打印机的兼容性 | 对不同厂商、不同型号的打印机进行以下测试:安装;打印测试页;调整纸张大小;选择分辨率;调整打印方向;逐页、多份打印;双面打印、网络打印 |
其他 | 红外线鼠标、键盘、扫描仪、视频软件,刻录软件的兼容性 |
与操作系统的兼容性 | 确认软件系统是否与多种类型的操作系统兼容,包括安装、关键流程的检查;操作系统包括Windows平台、Linux平台、UNIX平台;Macintosh 图形专用软件 |
---|---|
与数据库的兼容性 | 确认软件系统在不同数据库的可移植性、互操作性,对完整性、应用系统测试;性能测试;数据库包括SQL;ODBC;JDBC;ADO;OLE DB;JDO |
与中间件的兼容性 | 指对不同版本、不同补丁包的兼容性进行测试,检查应用程序是否能够正确运行,性能的变化; |
与浏览器的兼容性 | 创建一个兼容性矩阵,测试不同厂商、不同版本的浏览器对某些构件和设置的适应性;如Applets,JavaScript,ActiveX,VBScript |
与其他软件的兼容性 | 与支持软件(财务软件导出Excel)的兼容性测试;与其他同类软件的兼容性(与其他同类软件同时在机器中使用);与其他非同类软件的兼容性 |
不同数据格式兼容性 | 确认软件之间能否正确地交互和共享信息,不同格式的信息是否兼容;包括系统与其他系统复制粘贴文字是否正确;旧版本信息在新版本是否能打开;新版本文件在旧系统中是否能打开;同类软件是否可以进行数据交换 |
---|---|
XML符合性 | XML能够使不同来源的结构化的数据较容易地结合在一起,提供一个描述数据和交换数据的有效手段;测试步骤:在测试工具中建立标准模板;用被测软件按要求导出数据;将导出的数据与标准模板进行对比匹配测试;输出测试结果; |
平台化软件概述 | 用来构建与支撑应用软件的独立软件系统;基本要素包括支撑环境(应用系统开发与运行的基本条件)和开发体系(开发与维护管理应用软件的工具与方法);分类包括技术支撑型平台和应用实现平台 |
---|---|
平台化软件优点 | 应用的广泛性(各行业);良好的开发性(保证接口的统一);具有灵活性和扩展性;快捷的适应性 |
平台化软件兼容性 | 测试内容:跨硬件平台能力(不同规模硬件平台上式);跨操作系统能力;支持多种数据库系统;客户端兼容性测试;数据兼容性测试 |
新旧系统数据迁移 | 数据迁移:新旧系统进行切换时,将历史数据进行清理、转换,并装载到新系统的过程; |
---|---|
数据迁移的实现 | 数据迁移的准备、数据迁移的实施、数据迁移后的校验 |
数据迁移的测试 | 对旧系统到新系统、新系统到旧系统进行迁移测试;生成备份测试迁移后的数据完整可靠性; |
用户认证机制 | 用户认证机制分为数字证书(检验用户身份的电子文件)、智能卡、双重认证、安全电子交易协议(SET电子商务中安全电子交易的国际标准);测试时有必要对用户认证机制进行全面测试,评价认证机制的合理性 |
---|---|
加密机制 | 对加密、解密机制进行测试,验证使用是否合理,强度是否满足当前需求;保护数据安全的重要手段 |
安全防护策略 | 安全防护策略包括安全日志、入侵检测、隔离防护、漏洞扫描,是系统对抗攻击的主要手段 |
数据备份与恢复手段 | 是一种数据安全策略,需要对备份和恢复的效果进行测试,保证实际数据的安全性 |
防病毒系统 | 基本的防病毒技术:集中式管理、分布式杀毒(以策略为中心、以服务器为中心);数据库技术、LDAP技术的应用;多引擎支持;不同操作系统的防护;远程安装或分发安装; 测试时对网络防病毒软件的选购、部署方式、策略定义进行评估和测试 |
安全系统防护体系 | 由实体安全、平台安全、数据安全、通信安全、应用安全、运行安全、管理安全七层次,因此安全性测试测策针对7层进行测试和评估 |
---|---|
基本安全防护系统 | 一般采用防火墙、入侵检测、漏洞扫描、安全审计、病毒防治、Web信息防篡改等基础安全技计,来保障应用系统的安全;测试时从以上方面分别进行测试 |
证书业务服务系统 | 包括证书认证及证书审核注册,需验证功能和性能;测试采用过程是否符合标准;证书类型是否正确;证书格式、申请、审核、下载功能是否正确;并发性、扩展性、备份 |
证书查询验证服务系统 | 验证功能和性能;测试查询、管理、证书信息发布、下载、更新功能;并发性、扩展性 |
密钥管理系统 | 验证功能和性能;测试密钥生成、发送存储、查询等基本功能,安全管理功能、系统管理功能;并发压力、最大量密钥系统的基本功能、密钥的保存期、备份; |
密码服务系统 | 验证功能和性能;测试加解密功能、多密码算法支持、增加功能;长度、系统速度、扩展能力 |
可信授权服务系统 | 集中式授权服务 验证是否具有用户管理、审核管理、资源管理、角色管理等主要功能;分布式授权服务 验证其是否有资源访问的签名授权、授权管理等功能;同时还要对系统进行并发压力测试 |
可信时间戳服务系统 | 验证功能和性能;测试时间来源是否正确、保存功能、签发功能;时间精度、验证时间戳请求并发性、可扩展性 |
网络信任域系统 | :由通过安全审查的网络可信接入设备和网络信任域管理系统组成;验证功能和性能;接入认证交换机、限制、管理、管理配置功能;认证时间、认证接入请求数并发性、接口 |
故障恢复与容灾备份 | 故障恢复、数据备份、容灾备份 |
功能验证 | 采用黑盒测试方法,对涉及安全的软件功能进行测试 |
---|---|
漏洞扫描 | 采用主机或系统漏洞扫描器自动检测远程或本机安全性弱点 |
模拟攻击试验 | 采用冒充、重演、消息篡改、服务拒绝、内部攻击、外部攻击、陷阱门、特洛伊木马方法进行测试 |
侦听技术 | 对数据进行截取分析的过程,主要用于对网络加密的验证 |
用户管理和访问控制 | 用户权限控制 | 测试用户权限分配合理性、用户名、用户密码的各项限制 |
---|---|---|
操作系统安全性测试 | 测试是否关闭和卸载了不必要的服务和程序、是否存在不必要的账户、权限设置合理性 | |
数据库权限的测试 | 测试用户的权限,用于存储用户和口令的表信息尽量加密,程序中是否存在默认的用户名和密码 |
通信加密 | 测试软件系统通信息加密情况,采用验证和侦听技术完成, |
---|---|
安全日志测试 | 测试日志的完整性、正确性,是否提供安全日志的智能统计分析能力, |
建设生命周期 | 生命周期测试策略 |
---|---|
规划设计阶段 | 利用仿真技术测试设计方案、网络设备评估,为网络选型提供依据; |
实施阶段 | 进行网络质量测试,如吞吐量、包转发率、丢包率,保证系统的可用性和稳定性,为网络应用系统开发提供基准值 |
与应用系统集成阶段 | 完成应用系统的功能和性能测试,保证运行基本稳定后,将程序应用到网络上进行网络级测试,测试并发用户访问能力、响应时间、应用对网络资源占用情况,保证应用系统在网络平台上的性能 |
定义 | 是一种通过建立网络设备、链路和协议模型,并模拟网络流量的传输,从而获取网络设计或优化所需要的网络性能数据的仿真技术,也称为网络模拟技术或网络预测技术 |
---|---|
原理 | 在计算机构造虚拟的环境反映现实的网络环境,利用数据建模和统计分析的方法模拟网络行为,从而获取特定的网络特性参数;采用基于包的建模机制来模拟实际物理网络中包的流动,包括处理、组包、拆包过程 |
应用:
在网络规划中应用 | 为网络规划、设计提供可靠的定量依据;可以验证实际方案或比较多个方案 |
---|---|
在企业网络管理和优化中应用 | 作为网络辅助管理工具、可以对企业业务网络通信情况进行统计找出瓶颈、可以查出业务配置的错误、可以模拟故障了解系统的处理情况、对新增业务进行性能测试、模拟访问量预测网络的承受负载 |
在网络研发中应用 | 构建接近于真实网络环境和业务,可以有效的模拟新协议的各种行为细节,作出公正的评判新协议的性能;对于大型通信设备制造商,可以作为其网络设备、协议以及应用开发的工具 |
网络预测 | 设置服务水平、完成日常网络容量规划、离线测试网络、网络失效和容量极限分析 |
指标
吞吐量:指被测试设备或被测试系统在不丢包的情况下,能够达到的最大包转发速率 |
---|
丢包率:高负载状态下由于缺少资源而未转发的包的比例 |
延时:系统在有负载的情况下转发数据包所需的时间 |
背靠背性能:通过以最大帧速率发送突发传输流,并测量无包丢失时的最大突发长度来测试缓冲区容量 |
TCP/IP 4~7层负载匀衡:建立连接数、会话连接数、连接数据 |
IP语音网络测试:测试语音、数据流包的丢失、单向延时,延时抖动 |
宽带XDSL网络性测试:帧测试、端到端IP测试、信元测试、PPP容量测试、ATM完整性测试 |
VPN网络测试:最大隧道创建数量、包丢失、延时、响应时间 |
路由测试:协议、路由压力性能 |
类型
可靠性测试、可接受性测试、瓶颈测试、容量规划测试、升级测试、功能/特性测试、吞吐量测试、响应时间测试、衰减测试、配置规模测试、网络设备评估测试
对象
网络平台:网络操作系统、文件服务器、工作站 |
---|
应用层:应用程序的客户端、桌面操作系统和数据软件 |
子系统:路由器、集线器、交换机、网桥 |
全局网络路径 |
方法
网络设备:(1)放入仿真网络环境中通过分析行为进行测试(2)使用的网络测试专用设备 |
---|
网络布线:使用工具,如网络电缆测试仪、令牌环网测试仪、以太网测试仪、光缆测试仪、企业级网络测试仪 |
网络协议:专用工具 |
网络性能:七层网络结构分析模型法、网络连接结构的分析法,客户端、网络链路、服务器端三个模块 |
工具
物理线缆测试仪、网络运行模拟工具、协议分析仪、专用网络测试设备
概述 | 监控功能主要能过网络探测器设备安装在某一网段上采集数据 |
---|---|
目标 | 及时准确了解网络状况,定位问题的根源 |
工具 | Network Vantage:全面应用监控和报告产品,帮助发现和优化网络上的应用性能; Sniffer:捕捉流量、监控网络活动、分析错误信息,定位问题 |
步骤 | 清楚故障现象;收集需要的用于帮助隔离可能故障原因的信息;根据收集到的信息考虑故障原因;根据分析的故障原因,建立一个诊断计划;执行诊断计划;改变参数确认结果 |
软件问题诊断 | 建立在网络应用分析的基础上,分析关键因素:会话信息(往返行程和流量信息)、包信息、响应时间信息、负载信息、高峰信息、线程信息、响应时间预测、带宽模拟 注意421页故障定位举例 |
硬件问题诊断 | 物理层:连接方式、连接电缆、设备配置是否正确 使用show interface命令; 数据链路层:路由器的配置、连接端口、接口与通信设备封装;通过查看路由器配置检查封装,show命令 网络层:沿源到目标的路径,查看路由表,同时检查路由器接口的IP地址 |
按系统架构分类 | 客户端的测试、服务器端的测试、网络上的测试 |
---|---|
按职能分类 | 应用功能的测试、Web应用服务的测试、安全系统的测试、数据库服务的测试 |
按软件质量特性分类 | 功能测试、性能测试、兼容性测试、安全性测试、易用性测试 |
按开发阶段分类 | 设计测试、开发测试、应用测试 |
设计测试的主要内容是对设计从全面性、适合性、标准性等方面进行检查
对Web应用的源代码和组件进行测试,保证代码的正确性、组件的功能正常
代码测试 | 测试源代码规则、链接测试、框架测试(窗口大小改变信息改变情况)、表格测试(大小调整情况)、图形测试 |
---|---|
组件测试 | 进行表单测试、Cookies测试、脚本测试、CGI(服务器端技术)、ASP测试(代码、不同浏览器)、ActiveX控件测试(客户端技术) |
使用Junit进行单元测试 |
负载压力 | 指系统在某种指定软件、硬件以及网络环境下承受的流量,如并发的用户数、持续运行时间、数据量等。其中并发的用户数是负载压力的重要体现。 |
---|---|
负载压力测试 | 指在一定测试约束条件下,测试系统所能承受的并发用户量、运行时间、数据量,以确定系统所能承受的最大负载压力,负载压力测试是性能测试的重要组成部分 |
性能测试 | 用来保证产品发布后系统的性能能够满足用户需求,包括两种测试策略:性能评测、性能调优 |
负载测试 | 通过逐步增加系统负载,测试系统性能的变化,并最终确定在满足性能指标的情况下,系统所能承受的最大负载量的测试 |
压力测试 | 通过逐步增加系统负载,测试系统性能的变化,并最终确定在什么负载条件下,系统性能处于失效状态,并以此来获得系统能提供的最大服务级别的测试压力测试是为了发现在什么情况下系统的性能会变得不可接受 |
并发性能测试 | 并发性能测试的过程,是一个负载测试和压力测试的过程; 逐渐增加并发用户数负载,直到系统的瓶颈或者不能接收的性能点,能过综合分析交易执行指标,资源监控指标来确定系统并发性能的过程; 并发性能测试是负载压力测试中的重要内容; 并发性能测试包括:应用在客户端性能的测试、应用在网络上性能的测试、应用在服务器端上性能的测试三个方面 |
疲劳强度测试 | 采用系统稳定运行情况下所能支持的最大并发用户数,或者日常运行用户数,持续执行一段时间业务,保证达到系统疲劳强度需求的业务量,通过综合分析交易执行指标和资源监控指标,来确定系统处理最大工作量强度性能的过程 |
大数据量测试 | 大数据量测试包括独立的数据量测试和综合数据量测试两类 独立的数据量测试:指针对某些系统存储、传输、统计、查询等业务进行的大数据量测试 综合数据量:指和压力性能测试、负载性能测试、疲劳性能测试相结合的综合测试 |
1. 定义:
也称功能测试,它是通过测试来检测每个功能是否都能正常使用
把程序看成一个黑盒子,完全不考虑程序内部结构和内部特性,着眼于程序外部结构,不考虑内部逻辑结构.
2. 在程序接口进行测试,只检查程序功能是否按照需求说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息
3.主要针对软件界面和软件功能进行测试
4.试图发现的错误类型:1)功能不正确或遗漏2)界面错误(输入能否正确的接受?能否输出正确的结果)3)数据库访问错误(如数据结构定义错误或外部信息(如数据文件)访问错误)4)性能错误5)初始化和终止错误
5.黑盒测试用例设计方法
(1) 等价类划分法:把程序的输入域划分成若干部分,然后从每个部分中选取少数代表性数据作为测试用例。每一类的代表性数据在测试中的作用等价于这一类的其他值
(2) 边界值分析法:通过选择等价类边界的测试用例。不仅重视输入条件边界,而且也必须考虑输出域边界
(3) 错误推测法:基于经验和直觉推测程序中所有可能存在的各种错误,从而有针对性地设计测试用例的方法
(4) 因果图法:从用自然语言书写的程序规格说明的描述中找出因(输入条件)和果(输入或程序状态的改变),可以通过因果图转换成判定表
(5) 判定表驱动法:利用判定表进行测试用例的设计
(6) 正交试验设计法:使用已设计好的正交表格来安排试验,并进行数据分析的一种方法,目的是用最少的测试用例达到最高的测试覆盖率
(7) 功能图法:用功能图形象地表示程序的功能说明,并机械地生成功能图的测试用例。功能图模型由状态迁移图和逻辑功能模型构成
1.等价类划分法:
(1)划分基础:需求规格说明书中输入、输出要求
(2)等价类:某个输入域的子集合;分为有效等价类和无效等价类
有效等价类:指对于程序规格说明书来说是合理的、有意义的输入数据构成的集合。利用有效等价类可以检验程序是否实现了规格说明书中的功能和性能
无效等价类:与有效等价的定义恰巧相反
(3)划分等价类原则(6条)
序号 | 输入条件(数据) | 划分等价类 |
---|---|---|
1 | 规定了取值范围 值的个数 | 一个有效等价类 两个无效等价类 |
2 | 规定了输入值的集合 规定了“必须如何”的条件 | 一个有效等价类 一个无效等价类 |
3 | 是一个布尔量 | 一个有效等价类 一个无效等价类 |
4 | 输入数据的一组值(n个),并且程序对每一个输入值分别进行处理 | n个有效等价类 一个无效等价类 |
5 | 规定必须遵守的规则 | 一个有效等价类(符合规则) 若干个无效等价类 |
6 | 在确知已划分的等价类中,各元素在程序处理中的方式不同的情况下,则应再将该等价类进一步地划分为更小的等价类 |
(4) 列出等价类表:在确定了等价类之后,建立等价类表,列出所有划分出的等价类
输入条件 | 有效等价类 | 无效等类 |
---|---|---|
…… | …… | …… |
(5) 确定测试用例步骤
第一步:为每个等价类规定一个惟一的编号
第二步:设计一个新的测试用例,使其尽可能多地覆盖尚未覆盖的有效等价类。重复这一步骤,最后使得所有有效等价类均被测试用例所覆盖
第三步:设计一个新的测试用例,使其只覆盖一个无效等价类。重复这一步骤,最后使得所有有效等价类均被测试用例所覆盖
小结:采用等价类划分方法设计测试用例,按照划分等价类、列出等价列表、确定测试用例三个步骤完成,目标是把可能的测试用例组合缩减到仍然足以满足软件测试需求为止。
2.边界值分析法
(1) 边界类型
边界条件:可以在产品说明书中有定义或者在使用软件过程中确定
次边界条件:在软件内部,也称为内部边界条件
其他边界条件:如输入信息为空(对于此类问题应建立单独的等价类空间)、非法、错误、不正确和垃圾数据
(2)边界值的选择方法(遵循原则)
序号 | 输入条件(数据) | 输入边界值数据 |
---|---|---|
1 | 规定了取值范围 | 刚刚达到这个范围 刚刚超越这个范围 |
2 | 规定值的个数 | 最大个数、比最大个数大1 最小个数、比最小个数少1 |
3 | 根据规格说明书的每个输出条件,使用 原则1、2 | |
4 | 输入或输出是个有序集合 | 集合的第一个、最后一个元素 |
5 | 程序中使用一个内部数据结构 | 内部数据结构边界上的值 |
6 | 分析规格说明,找出其他可能的边界 |
3.错误推测法
基本思想:列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据它们选择测试用例
4.因果图法
侧重于输入条件的各种组合,各个输入情况之间的相互制约关系
(1) 因果图设计方法:从用自然语言书写的程序规格说明的描述中找出因果,通过因果图转换成判定表
(2) 因果图导出测试用例步骤
第一步:分析程序规格说明的描述中,哪些是原因,哪些是结果。原在因常常是输入条件或是输入条件的等价类,结果是输出条件
第二步:分析程序规格说明的描述中语义的内容,并将其表示成连接各个原因与各个结果的‘因果图’
第三步:标明约束条件。第四步:把因果图转换成判定表。第五步:为判定表中每一列表示的情况设计测试用例
(3) 因果图基本图形符号
通常在因果图中,用Ci 表示原因,Ei表示结果,各结点表示状态,可取值0(状态不出现) 或1(某状态出现)
恒等:若原因出现,则结果出现;若原因不出现,则结果不出现
非(~):若原因出现,则结果不出现;若原因不出现,则结果出现
或(V):若几个原因中有一个出现,则结果出现;若几个原因都不出现,则结果不出现;
与(∧):若几个原因都出现,结果才出现;若其中有一个原因不出现,则结果不出现
(4) 因果图的约束符号
从输入(原因)考虑四种约束
E(互斥):表示两个原因不会同时成立,两个中最多有一个可能成立
I(包含):表示三个原因中至少有一个必须成立
O(惟一):表示两个原因中必须有一个,且仅有一个成立
R(要求):表示两个原因,a出现时,b也必须出现,a出现时,b不可能不出现
从输出(结果)考虑一种约束:M(屏蔽):两个结果,a为1时,b必须是0,当a为0时,b值不定
5.判定表驱动法
(1) 判定表:是分析和表达多逻辑条件下执行不同操作的情况的工具
(2) 判定表组成
条件桩:列出了问题的所有条件
动作桩:列出了问题规定可能采取的操作
条件项:列出针对它所列条件的取值,在所有可能情况下的真假值
动作项:列出在条件项的各种取值情况下应该采取的动作
规则:任何一个条件组合的特定取值及其相应要执行的操作。 注:判定表中贯穿条件项和动作项的一列就是一条规则;
(3) 判定表的建立(步骤)
第一步:确定规则的个数。假如有n个条件,每个条件有两个取值(0,1),故有2n种规则
第二步:列出所有的条件桩和动作桩
第三步:填入条件项
第四步:填入动作项。制定初始判定表
第五步:简化。合并相似规则或者相同动作
(4) 适合使用判定表设计测试用例的条件
规格说明以判定表的形式给出,或很容易转换成判定表
条件的排列顺序不影响执行哪些操作
规则的排列顺序不影响执行哪些操作
当某一规则的条件已经满足,并确定要执行的操作后,不必检验别的规则
如果某一规则要执行多个操作,这些操作的执行顺序无关紧要
6.正交试验法
(1) 概述
从大量的试验数据中挑选适量的、有代表性的点,从而合理地安排测试的一种科学的试验设计方法
使用已造好的表格“-”正交表来安排试验并进行数据分析的一种方法
因子:影响实现指标的条件
因子的状态:影响实现因子的条件
(2) 优点:节省测试工时、可控制生成的测试用例的数量、测试用例具有一定的覆盖率
(3) 设计步骤
提取功能说明,构造因子‘-’状态表。
加权筛选,生成因素分析表;
利用正交表构造测试数据集,正交表的推导依据Galois理论
L:代表正交表,L8(27)代表7为因子数,2为因子的水平数,8为此表行的数目(试验次数)
行数为mn型的正交表中,试验次数(行数)=∑(每列水平数-1)+1
例:5个3水平因子及一个2水平因子,表示为3521,试验次数=5(3-1)+1*(2-1)+1=12, 即L12(35*2)
7.功能图法
(1) 程序功能说明的有两种组成: 动态说明:描述输入数据的次序或转移次序;静态说明:描述输入条件和输出条件之间的对应关系
(2) 功能图:由状态迁移图和布尔函数组成,状态迁移图用状态和迁移来表示。一个状态指出数据输入的位置(或时间),一个迁移指明状态的改变,同时要依靠判定表或因果图表示的逻辑功能
(3) 功能图法概述
用功能图形象地表示程序的功能说明,并机械地生成功能图的测试用例
功能图模型由状态迁移图和逻辑功能模型构成
状态迁移图:用于表示输入数据序列以及相应的输出数据;由输入数据和当前状态决定输出数据和后续状态
逻辑功能模型:用于表示在状态中输入条件和输出条件的对应关系。由输入数据决定输出数据。此模型只适用于描述静态说明
功能图测试用例由测试中经过的一系列状态和在每个状态中必须依靠输入/输出数据满中的一对条件组成
(4) 测试用例生成方法:从状态迁移图中选取测试用例,用节点代替状态,用弧线代替迁移,状态图就可转化成一个程序的控制流程图形式
(5) 测试用例生成规则
为了把状态迁移(测试路径)的测试用例与逻辑模型(局部测试用例)的测试用例组合起来,从功能图生成实用的测试用例,在一个结构化的状态迁移(SST)中,定义3种形式的循环:顺序,选择和重复
(6) 功能图生成测试用例步骤
生成局部测试用例:在每个状态中,从因果图生成局部测试用例。局部测试用例由原因值(输入数据)组合与对应的结果值(输出数据或状态)构成
测试路径生成:利用上面的规则生成从初始状态到最后状态的测试路径
测试用例合成:合成测试路径与功能图中每个状态的局部测试用例。结果是初始状态到最后状态的一个状态序列,以及每个状态中输入数据与对应输出数据的组合。
测试用例的合成算法:采用条件构造树
8.场景法
(1) 基本流和备选流:采用此方法进行设计时,需要进行场景的设计,在场景中采用基本流和备选流表示经过用例的每条路径
基本流:采用直黑线表示,是经过用例的最简单的路径(无任何差错,程序从开始直接执行到结束)
备选流:采用不同颜色表示,一个备选流可能从基本流开始,在某个特定条件下执行,然后重新加入基本流中,也可以起源于另一个备选流,或终止用例,不在加入到基本流中;(各种错误情况)
(2) 设计步骤
根据说明,描述出程序的基本流及各项备选流
根据基本流和各项备选流生成不同的场景
对每一个场景生成相应的测试用例
对生成的所有测试用例重新复审,去掉多余的测试用例,测试用例确定后,对每一个测试用例确定测试数据值
1. 首先进行等价类划分,包括输入条件和输出条件的等价类划分,将无限测试变成有限测试,这是减少测试量和提高测试效率的最有效办法
2. 在任何情况下都必须使用边界值分析方法。此方法设计的测试用例发现程序错误的能力最强
3. 可以用错误和推测法追加一些测试用例
4. 对照程序的逻辑,检查已设计的测试用例的逻辑覆盖度,如果没有达到要求,应在补充
5. 如果程序的功能说明中含有输入条件的组合情况,一开始就可以使用因果图法和判定表驱动法
6. 对于参数配置类的软件,要用正交试验法选择较少的组合方式达到最佳效果
7. 功能图法也是很好的测试用例设计方法,我们可以通过不同时期条件的有效性设计不同的数据
8. 对于业务流清晰的系统,可以利用场景法贯空整个测试案例过程,在案例中综合使用各种方法
(1) 定义
将测试行为具体量化的方法之一
设计一种情况,软件程序在这种情况下,必须能够正常运行并且达到程序所设计的执行结果
为达到最佳的测试效果或高效的揭露隐藏的错误而精心设计的少量测试数据,
一个好的测试用例是在于它能发现至今未发现的错误
(2) 优点:
在开始实施测试之前设计好测试用例,可以避免盲目测试并提高测试效率
测试用例的使用令软件测试的实施重点突出、目的明确
在软件版本更新后只需修正少部分的测试用例便可展开测试工作,降低工作强度,缩短项目周期
功能模块的通用化和复用化使软件易于开发,而测试用例的通用化和复用化使软件测试易于开展,并随着测试用例的不断精化其效率也不断攀升
2.计划测试用例的目的
(3) 计划测试用例,是达成测试目标的必由之路
(4) 组织性:使测试用例具有组织性,便于全体测试员和其他项目小组人员有效地审查和使用
(5) 重复性和跟踪,可以明确测试过程中测试用例的执行情况,保证测试的全面性
(6) 计划测试用例,可以避免发布忽略某些测试用例的软件
(7) 测试证实,正确的测试用例计划和跟踪提供了一种证实测试的手段
3.测试设计说明
(1) 定义:在测试计划中提炼测试方法,要明确指出设计包含的特性以及相关的测试用例和测试程序,并指定判断通过/失败的规则
(2) 目的;组织和描述针对具体特性需要进行的测试,注:不给出具体的测试用例或执行测试的步骤
(3) 包含的部分内容(来自ANSI/IEEE829 ANSI 美国国家标准化组织)
标识符:用于引用和定位测试设计说明的惟一标识符
要测试的特性:对测试设计说明所包含的软件特性的描述。还将明确出要间接测试的特性
方法:描述测试的通用方法。如果方法在测试计划中描述,在测试设计说明中要详细描述要使用的技术,并给出如何验证测试结果的方法
测试用例信息:用于描述所引用的测试用例的相关信息。如测试用例编号
通过/失败规则:描述用什么规则来判定某项特性的测试结果是通过还是失败。
4.测试用例说明
(1) 定义(ANSI/IEEE829):编写用于输入的实际数据和预期结果,并明确指出使用具体测试用例产生的测试程序的任何限制
(2) 包含的内容
标识符:由测试设计过程说明和测试程序说明引用的唯一标识符
测试项:描述被测试的详细特性、代码模块等
输入说明:列举执行测试用例的所有输入内容或者条件
输出说明:描述进行测试用例预期的结果
环境要求:执行测试用例的软件、硬件、测试工具及人员等要求
特殊要求:描述执行测试用例的特殊要求
用例之间的依赖性:注明与其分用例的依赖关系或受其他用例的影响
(1) 定义:明确指出为实现相关测试设计而执行具体测试用例和操作软件系统的全部步骤,有时也称为‘测试脚本说明’,即详细定义了执行测试用例的每一步操作
(2) 包含的内容
标识符:把测试程序与相关测试用例和测试设计相联系的惟一标识
目的:本程序描述的目的以及将要执行的测试用例的引用信息
特殊要求:执行测试所需的其他程、特殊测试技术或者特殊设备
程序步骤:执行测试用例的详细描述,包括
日志:指出记录测试结果和现象的方式
设置:如何准备测试
启动:启动测试的步骤
程序:运行测试的步骤
衡量标准:描述如何判断结果
关闭:描述因意外原因页推迟测试的步骤
终止:描述正常停止测试的步骤
重置:说明如何把环境恢复到测试前的状态
偶然事件:说明如何处理计划之外的情况 。
软件测试方法:分为两类
(1)静态测试:不要求在计算机上实际执行所测程序,主要以一些人工的模拟技术对软件进行分析和测试
(2)动态测试:通过输入一组预先按照一定的测试准则构造的实例数据动态运行程序,而达到发现程序错误的过程,特点如下:
必须生成测试数据来运行被测试程序,取得程序运行的真实情况、动态情况,进而进行分析
测试质量依赖于测试数据
生成测试数据,分析测试结果的工作量大,使开展测试工作费时、费力、费人
动态测试中涉及多方面工作,人员多,设备多,数据多,要求有较好的管理和工作规程
1. 定义:也称结构测试或逻辑驱动测试,按照程序内部的结构对程序进行测试,通过测试来检查产品内部动作是否按照设计规格说明书的规定正常进行,检查程序中的每条通路是否能按照预定要求正确工作
2. 测试内容
把测试对象看成是一个打开的盒子,测试人员依据程序内部逻辑结构相关信息,设计或选择测试用例,对程序的所有逻辑路径进行测试,通过不同点检查程序的状态,确定实际的状态与预期的状态一致
3. 测试基本技术:(1)词法分析与语法分析(2)静态错误分析(3)程序插桩技术
4. 测试方法:(1)代码检查法(2)静态结构分析法(3)静态质量度量法(4)逻辑覆盖法(5)基本路径测试法(6)域测试(7)符号测试(8)Z路径覆盖。9)程序变异。5.黑盒测试与白盒测试
黑盒测试 | 白盒测试 |
---|---|
不涉及程序结构 | 考查程序逻辑结构 |
用软件规格说明书生成测试用例 | 用程序结构信息生成测试用例 |
可适用于从单元测试到系统联调 | 适用于单元测试和集成测试 |
某些代码段得不到测试 | 对所有逻辑路径进行测试 |
1.词法和语法分析
(1)获取信息
可以获取软件组成的重要基本因数,如变量标识符、过程标识符、常量等
组合获取的基本因数,可以得到软件的基本信息,如:
标号交叉引用表:列出各模块中出现的全部标号及标号的属性,模块以外的全局、计算标号
变量交叉引用表:列出变量定义及引用信息,变量的属性,变量类型(全局、局部)
子程序、宏和函数表:列出各个子程序、宏及函数的属性,输入、输出参数信息
等价表:列出在等价语句和等值语句中出现的全部变量和标号
常数表:列出全部数字常数和字符常数
(2)作用
直接从表中查出说明/使用错误,如标号交叉引用表、变量交叉引用表
为用户提供辅助信息,如子程序、宏和函数表、等价表、常数表
用来做错误预测和程序复杂度计算,如操作符和操作数的统计表
2.静态错误分析
用于确定在源程序中是否有某类错误或‘危险’结构,包括以下几种:
(1) 类型和单位分析
对源程序的类型进行检查,为了强化检查效果,扩充一些新的数据类型,进行静态预处理程序,分析程序中的类型错误
(2) 引用分析
对程序中变量的引用进行检查,发现引用异常错误(如变量在定义前被引用,变量定义后未被引用)。
采用深度优选的方法遍历程序流图的每一条路径
建立引用异常的探测工具,包括变量定义表和变量引用表
(3) 表达式分析
对表达式进行分析,以发现和纠正在表达式出现的错误,如:
在表达式中不正确的使用了括号造成错误
数组下标越界错误
除数为零
浮点数计算的误差(最复杂)
(4) 接口分析 接口一致性是程序的静态错误分析和设计分析共同研究的题目,接口分析主要对下内容时进行一致性的分析:
各模块之间接口一致性
模块与外部数据库的接口一致性
形参与实参在类型,数量,顺序,维数,使用上的一致性
全局变量和公共数据区在使用上的一致性
3.程序插桩技术
(1) 概述:在动态测试中,是一种基本的测试手段,有广泛的应用
主要借助向程序中插入操作,来实现测试目的的方法(即向源程序中添加一些语句(也称探测器),实现对程序语句的执行、变量的变化等情况进行检查)
(2) 设计时考虑的问题:1)明确要探测哪些信息2)在程序的什么部位设置探测点3)需要设计多少个探测点
(3) 探测点设置位置(以Fortran为例)
程序块的第一个可执行语句之前
entry语句的前后
有标号的可执行语句处
循环语句之后
条件语句之后
logica+ if语句之后
call语句之后
go to语句之后
(4) 断言语句:在程序中的特定部位插入某些用以判断变量特性的语句,使得程序执行中这些语句得以证实,从而使程序的运行特性得到证实,我们把这些插入的语句称为断言语句。
1. 代码检查法
(1) 目的:通过桌面检查,代码审查和走查方式,对以下内容进行检查
检查代码和设计的一致性
代码对标准的遵循、可读性
代码逻辑表达的正确性
代码结构的合理性
程序编写与编写标准的符合性
程序中不安全、不明确和模糊的部分
编程风格问题等
(2) 代码检查方式
方式名称 | 执行人员 | 检查内容 | 检查过程 |
---|---|---|---|
桌面检查 | 程序员 | 对源程序代码进行分析、检验,并补充相关的文档,发现程序中的错误 | |
代码审查 | 程序员和测试员组成的审查小组 | 通过阅读、讨论和争议,以程序进行静态分析的过程 | 第一步:小组成员提前阅读设计规格书、程序文本等相关文档 第二步:召开程序审查会,开发人员读程序,审查小组讨论、发现、解决问题 |
走查 | 程序员和测试员组成的审查小组 | 通过逻辑运行程序,发现问题 | 第一步:小组成员提前阅读设计规格书、程序文本等相关文档 第二步:利用测试用例,使程序逻辑运行,记录程序的踪迹,发现、讨论、解决问题 |
(3) 代码检查项目(采用分析技术)
检查变量的交叉引用表:检查未说明的变量和违反了类型规定的变量,变量的引用和使用情况
检查标号的交叉引用表:验证所有标号的正确性
检查子程序、宏、函数:验证每次调用与所调用位置是否正确,调用的子程序、宏、函数是否存在,参数是否一致
等价性检查:检查全部等价变量的类型的一致性
常量检查:确认常量的取值和数制、数据类型
标准检查:检查程序中是否违反标准的问题
风格检查:检查程序的设计风格
比较控制流:比较设计控制流图和实际程序生成的控制流图的差异
选择、激活路径:在设计控制流图中选择某条路径,到实际的程序中激活这条路径,如果不能激活,则程序可能有错
对照程序的规格说明,详细阅读源代码,比较实际的代码,从差异中发现程序的问题和错误
补充文档
根据以上检查项目,可以编制代码规则,规范和检查表等作为测试用例
(4) 编码规范
程序编写过程中必须遵守的规则,规定代码的语法格式、语法规则,如排版、注释、标识符命名、可读性、变量、函数、过程、可测性、程序效率、质量保证、代码编辑、编译、审查、代码测试、维护、宏等各方面的编码要求
(5) 代码检查规则:对程序逻辑结构检查时,所规定的规则,形成
(6) 缺陷检查表:主要包括一些容易出错的地方和在以往工作中遇到的典型错误,形成表格形式
重要性 | 审查项 | 结论 | |
---|---|---|---|
文件结构 | 重要 | 头文件和定义文件的名称是否合理 |
2. 静态结构分析法
在静态结构分析中,测试者通过使用测试工具分析程序源代码的系统结构、数据结构、数据接口、内部控制逻辑等内部结构,生成函数调用关系图、模块控制流图、内部文件调用关系图等各种图形图表,清晰地标识整个软件的组成结构,便于理解,通过分析这些图表,检查软件有没有存在缺陷或错误;包括控制流分析、数据据流分析、接口分析、表达式分析
(1) 函数调用关系图:通过应用程序各函数之间的调用关系展示了系统的结构。列出所有函数,用连线表示调用关系,作用:
可以检查函数的调用关系是否正确
是否存在孤立的函数而没有被调用
明确函数被调用的频繁度,对调用频繁的函数可以重点检查
(2) 模块控制流图:由许多结点和连接结点的边组成的图形,其中每个结点代表一条或多条语句,边表示控制流向,可以直观地反映出一个函数的内部结构。
3. 静态质量度量法
(1) 软件质量:根据ISO/IEC9126 国际标准,包括以下六个方面:功能性(functionality)可靠性(reliability)可用性(usability)有效性(efficiency)可维护性(maintainability)轻便性(portability)
(2) 质量度量模型(从上到下)
质量因素(Factors):与分类标准的计算方式相似,依据各分类标准取值组合权重方法来计算,依据结果将软件质量分为四个等级,与分类标准等级内容相同
分类标准(criteria):对某一软件质量分为不同的分类标准,每个分类标准由一系列度量规则组成,每个规则分配一个权重,每个分类标准的取值由规则的取值与权重值计算得出,依据结果将软件质量分为四个等级:
优秀(excellent):符合本模型框加中的所有规则(可以接受)
良好(good):未大量偏离模型框架中的规则(可以接受)
一般(fair):违背了模型框架中的大量规则(可以接受)
较差(poor):无法保障正常的软件可维护性(不可以接受)
度量规则(Metrics):使用代码行数、注释频度等参数度量软件各种行为属性
1. 白盒测试的动态测试原则-根据程序的控制结构设计测试用例
(1) 保证每个模块的所有独立路径至少被使用一次
(2) 对所有的逻辑值均测试true和false
(3) 上下边界及可操作范围内运行所有循环
(4) 检查内部数据结构以确保其有效性
2. 逻辑覆盖法
(1) 概述:逻辑覆盖是通过对程序逻辑结构的遍历实现程序的覆盖
(2) 分类-依据覆盖源程序语句的详尽程度:语句覆盖SC(Statement Coverage)、判定覆盖DC(Decision coverage)、条件覆盖CC(Condition Coverage)条件判定组合覆盖CDC(Condition/ Decision Coverage)、多条件覆盖MCC(Multiple Condition Coverage)、修改条件判定覆盖 MCDC(Multiple Condition Decision Coverage)。
(3) 语句覆盖
选择足够多的测试数据,使被测程序中每条语句至少执行一次
缺点:对程序执行逻辑的覆盖很低
(4) 判定覆盖
设计足够多的测试用例,使得程序中的每一个判定至少获得一次‘真’值和‘假’值,或者使得程序中的每一个取‘真’分支或取‘假’分支至少经历一次,因此又称分支覆盖
可以满足语句覆盖
缺点:主要对整个表达式最终取值进行度量,忽略了表达式内部取值
(5) 条件覆盖
设计足够多的测试用例,使得每一判定语句中每个逻辑条件的可能值至少满足一次
不能够满足判定覆盖
(6) 条件判定组合覆盖
设计足够多的测试用例,使得判定中的每个条件的所有可能(真/假)至少出现一次,并且每个判定本身的判定结果也至少出现一次
缺点:没有考虑单个判定对整体结果的影响,无法发现逻辑错误
(7) 多条件覆盖
也称条件组合覆盖,设计足够多的测试用例,使得每个判定中条件的各种可能组合都至少出现一次(以数轴形式划分区域,提取交集,建立最少的测试用例)
满足条件覆盖一定满足判定覆盖、条件覆盖、条件判定组合覆盖
缺点:判定语句较多时,条件组合值比较多
(8) 修正条件判定覆盖
每一个程序模块的入口和出口点都要考虑至少要被调用一次,每个程序的判定到所有可能的结果值要至少转换一次
程序的判定被分解为通过逻辑操作符(and,or)连接的bool条件,每个条件对于判定的结果值是独立的
3. 基本路径覆盖
(1) 概述
在程序控制流图的基础上,通过分析程序控制流图的环路复杂性,导出基本可执行路径的集合,然后据此设计测试用例
设计出的测试用例要保证在测试中程序的每一条可执行语句至少执行一次
(2) 程序控制流图
控制流图是描述程序控制流的一种方式
图形符号:圆圈代表一个结点 表示一个或多个无分支的语句或源程序语句
边和点圈定的部分叫做区域。当对区域计数时,图形外的一个部分也应记为一个区域
判断语句中的条件为复合条件时,即条件表达式由一个或多个逻辑运算符连接的逻辑表达式(a and b),则需要改变复合条件的判断为一系列只有单个条件的嵌套的判断
图形符号图所示
(3) 程序环路复杂性
程序的环路复杂性即McCabe复杂性度量,简单的定义为控制流图的区域数
从程序的环路复杂性可导出程序基本路径集合中的独立路径条数,这是确保程序中每个可执行语句至少执行一次所必须的测试用例数目的上界
独立路径:包括一组以前没有处理的语句或条件的一条路径
通常环路复杂性可用以下三种方法求得:
将环路复杂性定义为控制流图中的区域数。
设E为控制流图的边数,N为图的结点数,则定义环路复杂性为 V(G)=E-N+2。
若设P为控制流图中的判定结点数,则有 V(G)=P+1。
(4) 基本路径测试步骤
以详细设计或源代码为基础,导出程序的控制流图
计算得到控制流图G的环路复杂性v(g)
确定线性无关的路径的基本集
生成测试用例,确保基本路径集中每条路径的执行
1. 域测试
(1) 概述:是一种基于程序结构的测试方法,基于对程序输入空间(域)的分析,选择适的测试点进行测试
(2) Howden错误分类-相对于程序路径分类:1、域错误:程序的控制流存在错误,对于某一特定的输入可能执行的是一条错误路径,这种错误称为路径错误,也叫做域错误。2、计算型错误:对于特定输入执行的路径正确,但赋值语句的错误导致输出结果错误,称为计算型错误3、丢失路径错误:由于程序中的某处少了一个判定谓词而引起的。
(3) 测试理想结果:检验输入空间的每一个输入元素是否都产生正确的结果
(4) 缺点:为进行域测试对程序提出的限制过多;当程序存在很多路径时,所需的测试点很多
2. 符号测试
(1) 概述
基本思想是允许程序的输入不仅仅是具体的数值数据,而且包括符号值,符号值可以是基本的符号变量值,也可以是符号变量值的表达式。
符号测试执行的是代数运算,可以作为普通测试的一个扩充
符号测试可以看作是程序测试和程序验证的一个折衷办法
(2) 测试理想情况:程序中仅有有限的几条执行路径,如果都完成了符号测试,就可把握的确认程序的正确性了
(3) 缺点:分支问题;二义性问题;大程序问题
3. Z路径覆盖
(1) 概述:对循环机制进行简化,减少路径的数量,使得覆盖所有路径成为可能,简化循环意义下的路径覆盖称为Z路径覆盖
(2) 循环简化:限制循环次数,只考虑循环一次或零次情况
4. 程序变异
(1) 概述:是一种错误驱动测试。错误驱动测试:指该方法是针对某类特定程序错误的,即专门测试某类错误是否存在。
错误驱动测试分类:程序强变异和程序弱变异。
(2) 优点:便于集中目标对软件危害最大的可能错误,提高测试效率,降低成本
六. 白盒测试综合策略
1. 白盒测试中测试方法的选择策略
(1) 在测试中,首先尽量使用测试工作进行静态结构分析
(2) 采用先静态后动态的组合方式,先进行静态结构分析,代码检查和静态质量度量,然后现进行覆盖测试
(3) 利用静态结构分析的结果,通过代码检查和动态测试的方法对结果进一步确认,使测试工作更为有效
(4) 覆盖率测试是白盒测试的重点,使用基本路径测试达到语句覆盖标准;对于重点模块,应使用多种覆盖标准衡量代码的覆盖率
(5) 不同测试阶段,侧重点不同
单元测试:以代码检查、逻辑覆盖
集成测试:增加静构结构分析、静态质量度量
系统测试:根据黑盒测试结果,采用白盒测试
2. 最少测试用例数计算
将构成循环操作的重复型结构用选择结构代替,因此在N-S图中只存在顺序和分支操作
N-S图按分支结构分层,整个程序的最少测试用例数为每个分层中最少测试用例数的乘积
3. 测试覆盖标准:Foster的ESTCA覆盖标准、Woodward等人的层次LCSAJ覆盖标准
1. 对象和类
面象对象的编程语言:以对象为中心,以消息为驱动,程序=对象+消息
类是一种新的数据类型,是设计的核心,是通过抽象数据类型的方法来实现的一种数据类型
类是对某一对象的抽象,对象是某一类的实例,两者密切相关
2. 封装、继承和多态性
(1) 封装:把数据和操作结合一体,使程序结构更加紧凑,避免了数据紊乱带来的调试与维护的困难
(2) 继承:可以从一个类派生到另一个类,派生类继承了父类和祖先类的数据成员和函数,增加了软件的可扩充性,并为代码重用提供了强有力的手段
(3) 多态性:多种表现形式,可以用‘一个对外接口,多个内在实现方法’表示。
1. 面向对象测试的分类
依据面向对象开发模型(面向对象分析、面向对象设计、面向对向编程),分为:
(1) 面向对象分析的测试(OOA Test)、面向对象设计的测试(OOD Test):是对分析结果和设计结果的测试,主要对分析设计产生的文本进行的,是软件开发前期的关键性测试
(2) 面向对象编程的测试(OOP Test):对编程风格和程序代码实现进行测试,主要的测试内容在OO Unit Test和OO Integrate Test中体现
(3) 面向对象单元测试(OO Unit Test):对程序内部具体单一的功能模块的测试,主要对类成员函数的测试,是OO Integrate Test的基础
(4) 面向对象集成测试(OO Intergrate Test):对系统内部的相互服务进行测试,如成员函数间的相互作用,类间的消息传递。不仅要基于OO Unit Test,还要参考OOD、OOD Test的结果
(5) 面向对象确认测试(OO System Test)、面向对象系统测试(OO System Test):最后阶段的测试,以用户需求为测试标准,借鉴OOA 、OOA Test的结果
2. 面向对象测试模型
(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) 定义的服务是否重复,是否定义了能够得到的服务 |
(1) 面向对象设计(OOD)
采用‘造型的观点’,以OOA为基础归纳出类,并建立类结构或进一步构造类库,以实现分析结果对问题空间的抽象。OOD归纳的类即可以是对象的简单延续,也可以是不同对象的相同或相似的服务
(2) OOD与OOA
OOD是OOA的进一步细化和更高层的抽象,所以OOD、OOA的界限很难区分,OOD确定类和类结构不仅是满足当前需求分析要求,更重要是通过重新组合或加以适当的补充,方便实现功能重用和扩增。因此,对OOD的测试,建议针对功能的实现和重用以及OOA结果的分析
(3) OOD测试划分的三个方面
测试名称 | 概述 | 测试考虑方面 |
---|---|---|
认定的类的测试 | 认定的类:可以是OOA中认定的对象,或对象所需要的服务的抽象、对象所具有的属性的抽象。认定的类尽量具有基础性,便于维护和重用 | (1) 是否涵盖了OOA中所有认定的对象 (2) 是否能体现OOA中定义的属性 (3) 是否能实现OOA中定义的服务 (4) 是否对应着一个含义明确的数据抽象 (5) 是否尽可能少地依赖其他类 (6) 类中的方法是否是单用途 |
构造的类层次结构的测试 | 类层次结构:通常基于OOA中产生的分类结构的原则来组织,着重体现父类和子类一般性和特殊性,在当前问题空间中,主要要求是能在解空间中构造全部功能的结构框架 | (1) 类层次结构是否涵盖了所有定义的类 (2) 是否体现了OOA中所定义的实例关联 (3) 是否实现了OOA中所定义的消息关联 (4) 子类是否具有父类没有的新特性 (5) 子类间的共同特性是否完全在父类中得以体现 |
类库的支持的测试 | 类库的支持:也属于类层次结构的组织问题,但重点是再次软件开发的重用。作为高质量类层结构的评估 | (1) 一组子类中关于某种含义相同或基本相同的操作,是否有相同的接口 (2) 类中方法的功能是否较单纯,相应的代码行是否较少(<30) (3) 类的层次结构是否是深度大,宽度小 |
因为OOA、OOD阶段分析和设计的模型不能进行测试,不能被执行,所以每次迭代后要进行评审,针对两个方法:正确性、一致性 | 正确性:主要在于分析和设计模型表示所使用的符号语法是否正确,语义是否正确以及类的关联(实例间的联系)是否正确地反映了真实世界对象间的关联 | |
一致性:OOD和OOA模型(分析、设计和编码层次即类、属性、操作、消息)要一致,可以用模型内各实体之间的关联性判断;评估方法:检查每个类与其他类的连接,采用CRC(类-责任-协作者)模型和对象-关系图 CRC模型:由CRC索引卡片构成,卡片中列出类名、类的操作、以及其他协作类,类完成的责任 对象-关系图:提供了类之间连接(关系)的图形表示 | ||
评估类模型,采用步骤 (1) 再次考察CRC模型和对象-关系模型,进行交叉检查,保证OOA模型所包含的协作都能体现 (2) 检查每个CRC索引卡片的描述,以确定是否某被授权的责任是协作者定义的一部分 (3) 反转该连接,保证每个被请求的服务的协作者正在接收来自合理源的请求 (4) 使用在(3)的反转连接,确定是否可能需要其他的类,或责任是否被合适地在类间分组 (5) 确定是否被广泛请求的责任可被组合为单个的责任 (6) 步骤(1)~(5)被迭代地应用到每个类,并贯穿于OOA模型的每次演化中 | ||
创建设计模型,应对系统设计和对象设计进行复审 系统设计:描述构成产品的子系统、子系统分配到处理器的方式,类到子系统的分配;通过检查在OOA阶段开发的对象-行为模型,和映射需要的系统行为到被设计用于完成该行为的子系统来进行复审。在系统行为语境中复审并发性和任务分配,评估系统的行为状态以确定哪些行为为并发存在 对象模型:表示了每个类的细节和实现类间的协作所必须的消息序列活动;针对对象-关系网络来测试,以保证所有设计对象包含为实现每张CRC索引卡片定义的协作所必须的属性和操作 |
(1)面向对象程序:把功能的实现分布在类中,能正确实现功能的类,通过消息传递来协同实现设计要求的功能。将出现的错误精确的确定在某一具体的类上。
(2) 测试重点:忽略类功能实现的细则,将测试的目光集中在类功能的实现和相应的面向对象程序风格上
(3) 测试方面(c++为例)
测试方面 | 概述 |
---|---|
数据成员是否满足娄据封装的要求 | 数据封装:是数据和数据操作的集合 基本原则:检查数据成员是否被外界(数据成员所属的类或子类以外的调用)直接调用。当改变数据成员的结构时,是否影响了类的对外接口,是否会导致相应的外界必须改动 |
类是否实现了要求的功能 | 类所实现的功能是通过成员函数执行的,应首先保证成员函数的正确性 单独看待成员函数,可以使用面向对象单元测试方法 类成员函数间的作用和类之间的服务调用,需要进行面向对象集成测试 注:测试类的功能,不能仅满足于代码能无错地运行或被测试类所提供的功能无错,应该以所做的OOD结果为依据,检测类提供的功能是否满足设计的要求,是否有缺陷,必要时还应该参照OOA的结果,以之为最终标准 |
(1) 可以将一些传统的单元测试方法在面向对象软件的单元测试中使用,如等价类划分、因果图、边界值分析法、逻辑覆盖法、路径分析法、程序插桩法,单元测试一般建议由程序员完成
(2) 单元级测试的测试分析和测试用例,规模和难度均远小于对整个系统的测试分析和测试用例,并且对语句应该有100%的代码执行覆盖率。
(3) 设计测试用例选择输入数据的两个假设:
如果函数(程序)对某一类输入中的一个数据正确执行,对同类中的基他输入也能正确执行(等价类)
如果函数(程序)对某一复杂度的输入正确执行,对更高复杂度的输入也能正确执行
(4) 针对继承性,Brian Marick两方面的考虑
继承的成员函数是否都不需要测试:当继承的成员函数在子类中做了改动;成员函数调用了改动过的成员函数的部分这两种情况需要对子类重新测试
对父类的测试是否能照搬到子类:可以重新测试或在父类原有的测试要求和测试用例上增加新的测试要求和测试用例,主要针对子类中变动的部分进行测试
(1) 传统的自顶向下或自底向上的集成测试策略在面向对象软件的集成测试中无意义,OO软件的集成测试需要在整个程序编译完成后进行,面向对象程序具有动态特性,程序的控制流无法确定,只能对编译完成的程序做基于黑盒子的集成测试
(2) 面向对象软件的集成测试两种策略
基于线程的测试(Thread based testing):集成对响应系统的一个输入或事件所需的一组类,每个线程分别进行集成和测试,应用回归测试以保证没有产生副作用。
基于使用的测试(Use based testing):通过测试那些几乎不使用服务器类的的类(独立类)而开始构造系统,在独立类测试完成后,下一层中使用独立类的类(依赖类)被测试,这个依赖类层次的测试序列一直持续到构造完整个系统。
(3) 测试目的:能够检测出相对独立的,单元测试无法检测出的,那些类相互作用时才会产生的错误,只关注于系统的结构和内部的相互作用
(4) 面向对象软件的集成测试过程
第一步:静态测试 针对程序的结构进行,检测程序结构是否符合设计要求。通过使用测试软件的‘可逆性工程’功能,得出源程序的类系统图和函数功能调用关系图,与OOD结果相比较,检测程序结构和实现上是否有缺陷,检测OOP是否达到了设计要求
第二步:动态测试 根据静态测试得出的函数功能调用关系图或类关系图作为参考,按照如下步骤设计测试用例,达到如下测试覆盖标准
设计测试用例步骤:选定检测的类,参考OOD分析结果,确定出类的状态和相应的行为;确定覆盖标准;利用结构关系图确定待测类的所有关联;根据程序中类的对象构造测试用例,确认使用什么输入激发类的状态,使用类的服务和期望产生什么行为等,还要设计一些类禁止的例子,确认类是否有不合法的行为产生
覆盖标准:达到类所有的服务要求或服务提供的一定覆盖率;依据类间传递的消息,达到对所有执行线程的一定覆盖率;达到类的所有状态的一定覆盖率等
(1) 系统测试:需要测试它与系统其他部分配套运行的表现,以确保在系统各部分协调工作的环境下软件也能正常运行
(2) 要求:测试环境尽量与用户实际使用环境相同,保证被测系统的完整性,对暂时没有的系统设备部件,应采取相应的模拟手段。参考OOA分析结果,检测软件是否能够完全‘再现’问题空间
(3) 不仅是检测软件的整体行为表现,另一方面对软件设计开发的确认。OO软件的确认和系统测试具体的测试内容与传统的系统测试基本相同,包括:功能测试,强度测试,性能测试,安全测试,易用性测试,恢复测试,安装/卸载测试
关注于设计合适的操作序列以测试类的状态
1. 对每个测试用例应当给予特殊的标识,并且还应当与测试的类有明确的联系
2. 测试目的应当明确
3. 应当为每个测试用例开发一个测试步骤列表,列表包含内容
列出所要测试对象的说明
列出将要作为测试结果的消息和操作
列出测试对象可能发生的例外情况
列出外部条件,为了正确对软件进行测试所必须有的外部环境的变化
列出为了帮助理解和实现测试所需要的附加信息
1. 基于故障的测试
(1) 具有较高的发现可能故障的能力
(2) 从分析模型开始,考察可能发生的故障,设计用例去执行设计和代码
(3) 可用于集成测试,发现消息联系中‘可能的故障’(可能的故障指意料之外的结果、错误地使用了操作/消息、不正确地引用等)
(4) 除用于操作测试外,还可用于属性测试,用以确定其对于不同类型的对象行为是否赋予了正确的属性值
(5) 是从客户对象(主动)上发现错误
(6) 不能发现的错误:不正确的规格说明,用户不需要的功能或缺少用户需要的功能;没有考虑子系统间的交互作用
2. 基于场景的测试
(1) 主要关注用户需要做什么,不是产品能做什么,即从用户任务(使用用例)中找出用户要做什么及如何去执行
(2) 有助于在一个单元测试情况下检查多重系统,比基于故障的测试更实际,更复杂一点
3. OO类的随机测试
如果一个类有多个操作(功能),这些操作(功能)序列有多种排列,这种不变化的操作序列可随机产生,用这种可随机排列来检查不同类实例的生存史,称为随机测试
4. 类层次的分割测试
(1) 可以减少用完全相同的方式检查类测试用例的数目,类似于等价类划分
(2) 分类:基于状态的分割、基于属性的分割、基于类型的分割
基于状态的分割:按类操作是否会改变类的状态进行分割(归类)
基于属性的分割:按类操作所得到的属性来分割(归类)
基于类型的分割:按完成的功能分割(分类),如初始操作、计算操作、查询操作
5. 由行为模型(状态、活动、顺序和合作图)导出的测试
状态转换图(STD)可以用来帮助导出类的动态行为的测试序列,以及这些类与之合作的类的动态行为测试用例,根据状态转换图,设计出最小测试用例,加入其他测试序列到最小测试序列中,保证类所有行为被充分检查
一.负载压力测试概述
1.负载压力:指系统在某种指定软件、硬件以及网络环境下承受的流量,如并发的用户数、持续运行时间、数据量等。其中并发的用户数是负载压力的重要体现。
2.负载压力测试
指在一定测试约束条件下,测试系统所能承受的并发用户量、运行时间、数据量,以确定系统所能承受的最大负载压力
负载压力测试是性能测试的重要组成部分
3.性能测试:用来保证产品发布后系统的性能能够满足用户需求,包括两种测试策略:性能评测、性能调优
(3) 性能评测-性能调优的基础
在真实环境下,检查系统服务等级的满足情况,评估并报告整个系统的性能
对系统的未来容量作出预测和规划
(4) 性能调优
性能调优步骤
查找形成系统瓶颈或者故障的根本原因
进行性能调整和优化
评估性能调整的效果
4.负载测试:通过逐步增加系统负载,测试系统性能的变化,并最终确定在满足性能指标的情况下,系统所能承受的最大负载量的测试
5.压力测试
通过逐步增加系统负载,测试系统性能的变化,并最终确定在什么负载条件下,系统性能处于失效状态,并以此来获得系统能提供的最大服务级别的测试
压力测试是为了发现在什么情况下系统的性能会变得不可接受
6.并发性能测试
并发性能测试的过程,是一个负载测试和压力测试的过程。
逐渐增加并发用户数负载,直到系统的瓶颈或者不能接收的性能点,能过综合分析交易执行指标,资源监控指标来确定系统并发性能的过程
并发性能测试是负载压力测试中的重要内容
并发性能测试包括:应用在客户端性能的测试、应用在网络上性能的测试、应用在服务器端上性能的测试三个方面
7.疲劳强度测试
采用系统稳定运行情况下所能支持的最大并发用户数,或者日常运行用户数,持续执行一段时间业务,保证达到系统疲劳强度需求的业务量,通过综合分析交易执行指标和资源监控指标,来确定系统处理最大工作量强度性能的过程
8.大数据量测试
大数据量测试包括独立的数据量测试和综合数据量测试两类
独立的数据量测试:指针对某些系统存储、传输、统计、查询等业务进行的大数据量测试
综合数据量:指和压力性能测试、负载性能测试、疲劳性能测试相结合的综合测试
二. 负载压力测试的目的:1).在真实环境下检测系统性能,评估系统性能以及服务等级的满足情况2).预见系统负载压力承受力,在应用实际部署之前,评估系统性能3).分析系统颈,优化系统:(1)瓶颈:应用系统中导致系统性能大幅下降的原因。硬件,操作系统、数据库或开发的应用程序中都有可能存在瓶颈
(2)建议首先消解决软件瓶颈,原因有三个:
软件瓶颈往往导致系统性能衰减更快,消除软件瓶颈,系统性能提升更快
人为因素更易导致软件瓶颈要消除软件瓶颈,开发人员会更主动,并且可以节省资源
盲目增加硬件则无形中增加维护费用,将来,软硬件不匹配的问题终究会暴露出来
4).负载压力性能问题分为需要优化的性能问题和非系统优化所能解决的性能问题
4.为企业项目的实施提供信心,帮助用户正确地进行容量规划,实现软硬件投资合理化,最终交付高质量的系统,避免项目投产失败,保证用户的投资得到相应的回报
三.负载压力测试策略
1.可以利用手工进行测试和利用自动化工具进行测试两种测试策略
(1) 手工测试:无法解决同步问题,无法捕捉程序内部的变化情况
(2) 自动化工具测试:可以解决手工测试中无法解决的问题
2.自动化工具测试策略
(1) 利用商业化测试工具:LoadRunner,QALoad
(2) 利用开放资源测试工具:开放系统测试体系OpenSTA、TestMaker、Apache Jmeter
(3) 利用自主开发工具:核心内容是对与服务器的交互计时,
四.产品生命周期中负载压力测试计划
1.在需求分析中充分关注负载压力性能
2.从设计中得到负载压力性能指标
3.开发阶段创建一个负载压力性能测试环境
(1) 确保合理精确的测试环境,并且此环境可重用
(2) 为测试环境制定规则的负载压力性能测试的时间表,如果测试环境是共享的,负载压力性能测试不能与其他活动同时发生
(3) 选择一个负载压力性能测试工具
(4) 验收阶段在多等级范围内测试并调优
(5) 运行阶段持续监控系统负载压力性能
五.负载压力测试的盲点
在负载压力测试时,不进行功能校验,当功能发生错误时,测试工具不能够记录产生的错误,忽略了负载压力情况下的功能不稳定问题。所以负载压力测试期间必须要进行必要的功能内容校验,即在测试过程中记录所有虚拟用户的操作,及服务器的响应,才有助于判断功能错误,这是当前负载压力测试的最大挑战。
硬件系统 | 由中央处理单元CPU(运算器、控制器)、存储器、输入设备和输出设备组成;分为单总线结构、双总线结构 |
---|---|
软件系统 | 由应用软件和系统软件给成 |
组成 | 运算器:对数据进行加工处理的部件,主要完成算术运算和逻辑运算 |
---|---|
控制器:从内存中取出指令,并指出下一条指令的存储位置 | |
功能 | 程序控制,操作控制,时间控制,数据处理 |
基本输入出设备
存储系统
存储器结构 | 高速缓存(cache),主存储器(MM)和辅助存储器(外存储器) |
---|---|
分类 | 按位置分:内存(主存)、外存(辅存) 按访问方式分:按地址访问和按内容访问 按材料分:磁存储器、半导体存储器、光存储器 按寻址方式分:随机存储器和直接存储器 按工作方式分:读写存储器、只读存储器 |
相连存储器 | 是一种按内容访问的存储器,把数据或数据的一部分作为关键字,将该关键字与存储器中的每一个单比较,找出存储器中所有与关键字相关的数据字 |
高速存储器 | 组成:控制部分和cache部分 地址映象方法:直接映象、全相连映象、组相连映象 替换算法:随机替换算法,先进先出算法、近期最少使用算法、优化替换算法 性能分析:主存的访问时间/ 计算机实际访问时间 |
虚拟存储器 | 由主存、辅存、存储管理单元及操作系统中的存储管理软件组成,分类页式、段式、段页式虚拟存储器 |
外存储器 | 用来存放暂时不用的程序和数据,并且以文件的形式存储。CPU不能直接访问外存中的数据,只有将其以文件为单位调入主存方可访问;由磁表面存储器及光盘存储器构成;磁盘存储器、光盘存储器 |
磁盘阵列技术 | 由多台磁盘存储器组成的,一个快速大容量高可靠的外存子系统,常见为廉冗余磁盘阵列(RAID),RAID分为6级 |
中断控制
作用 | CPU可以不用等待I/O的状态,直接去处理其他业务,I/O系统使用中断信号通知CPU,CPU转入中断处理程序中,完成与I/O系统的数据交换,提交了CPU的效率 |
---|---|
处理方法 | 多中断信号线法、中断软件查询法、雏菊链法、总线仲载法,中断向量表法 |
中断优先级控制 | 当不同优先级的多个中断源同时提出中断请求时,CPU应优先响应高优先级的中断源,最先响应高优先级 |
对象及目的 | 对象:主存储器;目的:保存数据 |
---|---|
功能 | 主存储器的分配和回收;提高主存储器的利用率;存储保护;主存扩充 |
分区存储管理 | 固定分区:静态分区方式,系统生成时将主存划分大小不等的区域,易形成碎片 可变分区:动态分区方式,作业装入时划分,个数可变,大小等于作业的大小,也容易形成碎片 可重定位分区:移动所有已分配好的分区,使之成为连续的区域,有效解决磁盘碎片的问题 |
分页存储管理 | 原理:进程的地址空间划分为大小相等的区域(页),主存空间划分为与页相同大小的物理块(块或页框),为进程分配主存时,将进程中若干页分别装入多个不邻接的块中 地址结构:由页号P,偏移量W(页内地址) 页表:为保证能在主存中找到每个页面所对应的物理块,为每个进程建立一张页面映射表,简称为页表,实现从页号到物理块号的地址映射 |
分段存储管理 | 将作业的地址空间划分为若干个段,进程的各个段可以分配到主存的不同分区中,为每个进程建立一张段映射表,实现逻辑段到物理主存区的映射 |
段页式存储管理 | 结合分页、分段存储管理方式,将主存划分成大小相等的存储块(页框),将进程按程序的逻辑关系分为若干段,并为每个段赋予一个段名,将每个段划分成若干页,以页架为单位离散分配,利用段表和页表实现逻辑地址到物理地址的映射 |
虚拟存储管理 | 定义:主存可以将暂时不用的页(段)调出至磁盘,有足够的空间将要访问的页(段)装入主存,系统具有的主存容量比实际主存容量大得多,称这样的存储器为虚拟存储器; 实现:请求分页系统、请求分段系统;请求段页式系统(在原存储形式上增加请求和置换功能) 特征:离散性、多次性、对换性、虚拟性 页面置换算法:最佳置换算法(将永久不用或长时间内不再访问的页置换出去)、先进先出置换算法(将最先进入主存的页置换出去)、最近最久未使用置换算法LRU(选择最上次访问以来所经历的时间最大页置换出去)、最近未用置换算法NUR(通过访问标志,将未使用过的页面置换出去,) |
分类 | 按数据组织分类:块设备、字符设备 从资源分配角度分类:独占设备、共享设备、虚拟设备 按数据传输率分类:低速设备、中速设备、高速设备 按输入输出对象分类:人机通信和机机通信息设备 按是否可交互分类:非交设备和交互设备 |
---|---|
目标 | 提高设备的利用率(提高CPU与输入输出设备之间的并行操作程度),为用户提供方便统一的界面, |
任务 | 动态地掌握并记录设备的状态、设备分配和释放、缓冲区管理、实现物理I/O设备的操作、提供设备使用的用户接口、设备的访问和控制、I/O缓冲和调度 |
软件 | 分为四层:中断处理程序、设备驱动程序、与设备无关的系统软件、用户级软件 |
定义 | 文件 :是具有符号名的、在逻辑上具有完整意义的一组相关信息项的集合;信息项是构成文件内容的基本单位 文件系统:操作系统中实现文件统一管理的一组软件和相关数据的集合,专门负责管理和存取文件信息的软件机构。 |
---|---|
文件类型 | 按性质和用途:系统文件、库文件、用户文件 按信息保存期限:临时文件、档案文件、永久文件 按保护方式:只读文件、读写文件、可执行文件、不保护文件 UNIX系统分为普通文件、目录文件、设备文件(特殊文件) 文件系统类型:FAT,Vfat,NTFS,Ext2,HPFS |
文件结构 | 逻辑结构:用户角度 分为具有结构的记录式文件(定长、可变长) 、无结构的流式文件 物理结构:存储器存储方式 分为连续结构、链接结构、索引结构 |
文件目录 | 文件控制块FCB:每个文件设置用于描述和控制文件的数据结构,包括文件名和存放文件的物理地址,包含基本信息类、存取控制信息类、使用信息类 文件目录:文件控制块的有序集合,用于文件的检索,分为一级、二级、多级目录结构 |
存取方法 | 指读写文件存储器上的一个物理块方法;包括顺序存取、直接存取、按键存取 |
存储空间管理 | 管理方法:空闲区表、位示图、空闲块链、成组链接法(UNIX系统) |
文件使用 | 文件系统通过用户给出的文件名,查出对应文件的存放位置,读出文件内容 操作系统在操作级(命令级)和编程级(系统调用和函数)向用户提供文件服务 操作级提供命令:目录管理类、文件操作类、文件管理类 编程级提供调用:创建文件、撤销文件、打开文件、关闭文件、读文件、写文件 |
文件共享 | 不同用户进程使用同一文件,常见文件链接分为硬链接和符号链接 |
文件保护 | 采用存取控制方式进行保护,涉及存取控制矩阵、存取控制表、用户权限表、密码 |
文件安全性可靠性 | 在系统级、用户级、目录级、文件级四个级别上对文件进行安全性管理 通过转储和恢复、日志文件、文件系统的一致性实现文件的可靠性 |
定义 | 系统为完成一个用户的计算任务(或一次事务处理)所做的工作总和 |
---|---|
组成 | 由程序、数据和作业说明书组成;作业说明书包括作业基本情况、作业控制、作业资源要求的描述,体现用户控制意图 |
管理 | 作业控制:采用脱机和联机两种控制方式 作业状态:提交、后备、执行、完成 作业控制块JCB:记录作业各种有关信息的登记表,是作业存在的唯一标志,包括用户名、作业名、状态标志等信息 作业后备队列:将作业控制块排列成一个或多个队列,即队列由JCB组成 |
调度 | 算法:先来先服务、短作业优先、响应比高优先、优先级调度算法、均衡调度算法 衡量指标:平均周转时间或平均带权周转时间 |
用户界面 | 定义:用户接入口或人机界面,是计算机中实现用户与计算机通信息的软件和硬件部分的总称 组成:硬件部分(输入、输出装置)、软件部分(协议、操作纵命令及处理软件) 发展阶段:控制面板式用户界面、字符用户界面、图形用户界面、新一代用户界面 |
功能 | 除具备基本功能外,还应有联网功能,支持网络体系结构和各种网络通信协议,提供网络互联功能,支持有效、安全可靠的数据传送 |
---|---|
特征 | 硬件独立性、多用户支持、支持网络实用程序及其管理功能、多种客户端支持、提供目录服务、支持多种增值服务 |
分类 | 集中模式、客户机/服务器模式、对等模式 |
概念 | 运行在嵌入式智能芯片环境中,对整个智能芯片以及其控制的各种部件和装置等资源进行统一协调、调度、指挥和控制的系统软件 |
---|---|
特点 | 微型化,可定制,实时性、可靠性,易移植性;与OS相比,占用空间小,执行效率高,便于个性化定制和软件固化存信 |
开发环境 | 通常配有源代码级可配置的系统模块设计、丰富的同步原语、可选择的调度算法、主存分配策略等 常见的嵌入式系统有Windows CE、Palm OS |
基本概念 | 数据库:长期存储在计算机内的,有组织的,可共享的数据的集合 | |
---|---|---|
数据库管理系统DBMS:是一组对数据进行管理的软件,是一个可实际运行的,按照数据库方式存储、维护和向应用系统提供数据或信息支持的系统 | ||
数据库系统:是实现有组织、动态存储大量相关数据的系统,由数据库、软件、硬件和人员组成 | ||
数据库技术:是研究数据库的存储、结构、设计、管理和使用的一门学科 | ||
数据模型 | 概念 | 数据模型:对现实世界数据特征的抽象 现实世界:数据是客观存在的各类原始数据,按用户的观点对数据和信息建模 信息世界:是现实世界在人们头脑中的反映,数据库常用术语:实体、实体集、属性和码 机器世界:按计算机系统的观点建模,描述数据的常用术语:字段、记录、文件和记录码 |
三要素 | 数据结构:是所研究的对象类型的集合,是对系统静态特性的描述 数据操作:对数据库中各种对象的实例允许执行的操作及操作规则的集合 数据的约束条件:是一组完整性规则的集合 | |
E-R模型 | 实体联系模型,属于概念数据模型,采用的三个主要概念:实体、联系和属性 实体:可以区别于其他对象的“事件”或“物体”,如企业中的每个人都是一个实体,由一组特性(属性)表示 联系:分为实体内部联系和实体与实体之间的联系;两个不同实体集之间可以存在一对一、一对多、多对多的联系;两个以上不同实体集之间可以存1:1:1,1:1:n,1Ⓜ️n和rⓂ️n的联系;同一实体集内的各实体之间可以存在1:1,1:n,m:n的联系 属性:是实体某方面的特性,分类包括简单属性、复合属性、单值属性、多值属性、NULL属性、派生属性 E-R方法:实体-联系方法,从现实世界中抽象出实体和实体之间的联系,采用E-R图来表示数据模型 | |
层次模型 | 属于基本数据模型,采用树型结构表示数据与数据间的联系。每一个结点表示一个记录类型(实体),记录之间的联系用连线表示,除根结点以外,其他结点有且仅有一个双亲结点 特点:记录之间的联系通过指针实现,比较简单,查询效率高 缺点:只能表示1:n的联系 | |
网状模型 | 属于基本数据模型,是层次模型的一个特例,去掉了层次模型的两个限制,允许两个结点之间有多种联系。每一个结点表示一个记录类型(实体)。 特点:能更为直接的描述现实世界,具有良好的性能,存取效率高 缺点:结构复杂 | |
关系模型 | 属于基本数据模型,由若干个关系模式组成的集合 |
功能 | 数据定义、数据库操作、数据库运行管理、数据组织、存储和管理、数据库的建立和维护、与其他软件系统的通信功能,不同DBMS之间的转换功能 |
---|---|
特征 | 数据结构化且统一管理、有较高的数据独立性、数据控制功能(安全性保护、完整性、并发控制、故障恢复) |
网络分类 按通信距离分 - 广域网、局域网、城域网
按信息交换方式分 - 电路交换网、分组交换网、综合交换网
按网络拓扑结构分 - 星形、树形、环形、总线型
按通信介质分 - 双绞线网、同轴电缆网、光纤网、卫星网
按传输带宽分 - 基带网、宽带网
按使用范围分 - 公用网、专用网
按速率分 - 高速网、中速网、低速网
按通信传播方式分 - 广播式、点到点式
体系结构 采用ISO/OSI网络体系结构,OSI参考模型从低到高为物理层、数据链路层、网络层、传输层、会话层、表示层、应用层;
1~3层:负责通信功能,为通信子层
5~7层:资源子网层
局域网协议 | 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/IP为Internet的核心协议 TCP/IP分层模型:(低到高)网络接口层(数据链路层)、网际层、传输层、应用层 网络接口层协议:只提供接口规范 网际层协议-IP(网际)协议、ICMP(Internet控制协议)协议、ARP(地址解析IP->物理地址)协议、RARP(反地址解析物理地址->IP)协议 传输层协议-TCP(传输控制)协议、UDP(用户数据报)协议 应用层协议:NFS、Telnet、SMTP、DNS、SNMP、FTP |
网络传输介质互联设备 | 网络线路与用户节点链接:T型头、收发器、RJ-45接口、调制解调器 |
---|---|
物理层的互联设备 | 中继器:实现局域网网段互联,适用于连接相同的局域网段 集线器:一种特殊的多路中继器, |
数据链路层的互联设备 | 网桥:工作于MAC子层,两个网络MAC子层以上的协议相同,都可以用网桥互联 交换机:采用端口交换、帧交换、信元交换三种交换技术 |
网络层互联设备 | 路由器:互连的网络低两层协议可以不同 |
应用层互联设备 | 网关:连接不同类型而协议差别又较大的网络 |
Internet地址 | 域名格式:用户所在的主机名或地址,由四部组成 主机名.本地名.组名.最高层域名 IP地址格式:32位 由4个小于256的数字组成,分为A(000~127),B(128~191),C(192~223),D(224~239),E(240~255)五类 |
---|---|
Internet服务 | DNS域名服务:提供域名地址与IP地址的映射变换,采用客户机/服务器模式,由解析器和域名服务器组成 TELNET远程登录服务:在Telnet协议支持下,将用户端与远程主机相连,采用客户机/服务器模式,由客户软件、服务器软件及Telnet通信协议组成; E-mail电子邮件服务:利用计算机进行信息交换的电子媒体信息,基于客户机/服务器模式,由E-mail客户软件、E-mail服务器和通信协议(SMTP、POP)组成 WWW服务:一种交互式图形界面的Internet服务,具有强大的信息连接功能的多媒体信息服务系统,基于客户机/服务器模式,提供超文本传输协议HTTP,由Web服务器、浏览器和HTTP通信协议等组成;URL统一资源定位器 FTP文件传输服务:在计算机之间传输文件,采用客户机/服务器模式,由客户软件、服务器软件和FTP通信协议组成,建立控制连接、数据连接 Gopher:将Internet上的信息组织成某种索引,采用客户机/服务器模式, |
网络安全 | 定义:保护计算机、网络系统的硬件、软件以及系统中的数据,不因偶然的或恶意的原因而遭到破坏、更改或泄露,确保系统能连续和可靠地运行,使网络服务不中断 |
---|---|
涉及内容:运行系统的安全、信息系统的安全、信息传播的安全、信息内容的安全 | |
信息系统对安全的基本需求:保密性、完整性、可用性、可核查性 | |
安全威胁:物理威胁、网络攻击、身份鉴别、编程威胁、系统漏洞 | |
网络的信息安全 | 信息的存储安全:使用的安全(用户的标识、存取权限限制、安全问题追踪),计算机防病毒防治,系统安全监控,数据的加密,防止非法的攻击等内容 |
信息的传输安全:链路加密,节点加密,端-端加密 | |
防火墙技术 | 分类:包过滤型防火墙、应用代理网关防火墙,状态检测技术防火墙 |
体系结构:一般由过滤路由器和代理服务器组成;典型防火墙由过滤路由器,双宿主主机,被屏蔽主机以及被屏蔽子网 |
意义:在经济、技术、科学及管理等社会实践中,以改进产品、过程和服务的适用性,防止贸易壁垒,促进技术合作,促进最大社会效益为目的,对重复性事物和概念通过制定、发布和实施标准,达到统一,获得最佳秩序和社会效益的过程
机构:标准化技术委员会是制定国家标准和行业标准的一种重要组织形式,它是一定专业领域内从事全国性标准化工作的技术工作组织。
国际标准:由国际标准化组织(ISO)、国际电气委员会(IEC)所制定的标准,在世界范围内使用,各国可以自愿采用,不强制使用
国家标准:由政府或国家级的机构制定或批准的、适用于全国范围的标准,是一个国家标准体系的主体和基础,国内各级标准必须服从且不得与之相抵触,常见:中华人民共和国国家标准GB、美国标准、英国标准、日本工业标准
行业标准:由行业机构、学术团体或国防机构制定,并适用于某个业务领域的标准,常见IEEE,中国GJB
企业标准:由企业或公司批准、发布的标准
我国标准分为国家、行业、地方、企业四类标准
按适用范围 | 国际、国家、行业、企业标准 |
---|---|
按性质分类 | 技术、管理、工作标准 |
按标准化对象 | 基础标准、产品标准、方法、安全、卫生、环境保护、服务标准 |
按法律约束 | 强制性约束、推荐性标准 |
计算机安全:指计算机资产的安全,要保证这些计算机资产不受自然和人为的有害因素的威胁和危害;计算机资产由系统资源和信息资源组成
信息安全基本要素:机密性、完整性、可用性、可控性、可审查性
计算机安全等级:技术安全性、管理安全性、政策法律安全性
定义:是一种程序,编制或者在计算机程序中插入的破坏计算机功能或者破坏数据,影响计算机使用并且能够自我复制的一组计算机指令或者程序代码,并具有这样的特性:可以修改别的程序,使得被修改的程序也具有这种特性
特点:寄生性、隐藏性、非法性、传染性、破坏性
类型:系统引导型病毒、文件外壳型病毒、混合型病毒、目录型病毒、宏病毒
繁衍方式:变种、病毒程序加密、多形性病毒、伪装
防治:人工预防(修改程序)、软件预防、管理预防(建立法律制度、教育管理、建立计算机系统管理制度)
加密技术:两个元素 算法、密钥
过程:对原来为明文的文件或数据按某种加密算法进行处理,使其成为不可读的一段代码(密文)
分类:对称加密技术、不对称型加密、不可逆加密三类
信息化:是指社会经济的发展从以物质与能量为经济结构的重心,向以信息与知识为经济结构的重心转变的过程。在这个过程中,不断地采用现代信息技术装备国民经济各部门和社会各领域,从而极大地提高社会劳动生产力。
定义 | 指民事权利主体(公民、法人)基于创造性的智力成果而享有的权利 |
---|---|
分类 | 工业产权和著作权 著作权:指作者对其创作的作品享有的人身权和财产权;人身权包括发表权、署名权、修改权和保护作品完整权财产权包括使用权和获得报酬权 |
特点 | 无形性(智力创造成果) 双重性(具有财产权和人身权) 确认性(依法审查确认得到法律保护) 独占性(专用权具有独占性) 地域性(在本国授予、的产权在本国有效) 时间性(具有保护期限) |
法规 | 《中华人民共和国著作权法》、《…专利法》、《…继承法》《…公司法》、《…合同法》、《…商标法》、《…产品质量法》 《…反不正当竞争法》、《…刑法》、《…计算机信息系统安全保护条例》、《…计算机软件保护条件》、《…著作权法实施条例》 |
主体 | 享有著作权的人,包括公民、法人和其他组织 |
---|---|
客体 | 指著作权法保护的计算机软件著作权的范围(受保护的对象),计算机软件指计算机程序及其有关文档 |
条件 | 独立创作:受保护的软件必须由开发者独立开发,任何复制和抄袭他人开发的软件不能获得著作权 可被感知:受保护的作品应当是作者创作思想在固定载体上的一种实际表达 逻辑合理:受保护的软件必须具备合理的逻辑思想 |
权利 | 人身权:享有发表权和开发者身份权(署名权) 财产权:享有控制和支配,并能够为权利人带来一定经济效益的权利,包括使用权、复制权、修改权、发行权、翻译权、注释权、信息网络传播权、出租权、使用许可权和获得报酬权、转让权 |
定义 | 指应用计算机科学、数据及管理科学等原理,以工程化的原则和方法来解决软件问题的工程。 |
---|---|
目的 | 指高软件生产率,提高软件质量,降低软件成本 |
生存周期 | 由软件定义(系统分析、项目计划、需求分析)、软件开发(设计、编码、测试)、软件维护三个阶段组成 |
任务 | 确定软件系统的综合要求 导出系统的逻辑模型 如有必要,可开发一个原型系统 分析软件系统的数据要求 修正项目开发计划 |
---|---|
方法 | 结构化分析方法SA:面向数据流的分析方法,自顶向下逐层分解,分析结果包括 数据流图DFD:用来描述数据流从输入到输出的变换流程, 数据字典:为数据流图中每个数据流、文件、加工以及组成数据流或文件的数据项作出说明 小数明:对加工进一步进行描述,描述方法结构化语言、判定表、判定树 补充材料 |
更多软考科目备考资料请在群文件中下载。
1.软考中级网络工程师备考详细资料
2.软考中级软件设计师备考详细资料
3.软考中级软件评测师备考详细资料