软件工程 系列为本学期(2020春季)软件工程以及软件工程实践课程笔记整理~
转眼间6月份快要到来了,考试要临近了~
问题:一个软件经过各种测试后没问题,但到用户电脑上无法运行,给出解决方案?(预计会成为今年的考试题,嘿嘿哈嘿,自己猜的)
系统集成:将模块中各自的数据结构、彼此之间不能识别的数据等进行系统地联合与测试,使得信息能够在模块之间相互流通。
软件测试:利用测试技术尽可能多得发现软件中存在的错误,发现软件的功能、性能等与实际需求不相符之处,通过测试,让软件中存在的错误在交付给用户之前暴露无遗,从而交付给用户一个质量可靠、性能良好的软件。
目录
一、系统集成
二、系统测试
三、黑盒测试
(一)等价类划分法
(二)边界值分析法
(三)错误推测法
(四)因果图法
四、白盒测试
(一)逻辑覆盖法
(二)基本路径测试
五、软件测试过程
(一)单元测试
(二)集成测试
(三)确认测试
(四)系统测试
六、软件应用测试
1.系统集成基本概念
(1)通过结构化综合布线系统和计算机网络技术,将各个分离的设备(计算机、传感器等)和信息(软件模块)集成到相互关联的、统一和协调的系统之中;使资源充分共享,实现集中、高效和便利的管理;
(2)系统集成应该采用功能集成、网络集成、软件界面集成等多种集成技术;
(3)系统集成应综合利用各种计算机网络相关技术,适当选择各种软、硬件设备,经过相关人员的集成设计、安装调试、应用开发等大量技术性工作和相应的管理及商务性工作,使集成后的系统能满足用户对实际工作的需求,形成一个具有良好性能和适当性价比的计算机网络系统。
2.系统集成包括设备系统集成和应用系统集成两个方面
(1)设备系统集成:以搭建组织机构内的信息化管理支持平台为目的,利用综合布线技术、楼宇自控技术、通信技术、网络互联技术等将相关设备和软件进行集成设计、安装调试、界面定制开发和应用支持的行为。
(2)应用系统集成:从为客户提供高性能系统应用的角度,提出及实现系统模式的具体技术和运作方案,即为客户提供一个全面的系统解决方案。
3.系统集成的特点:
(1)以满足用户的需求为根本的出发点
(2)系统集成不是选择最好的产品的简单行为,而是选择最适合用户需求和投资规模的产品和技术
(3)不是简单的设备供货,体现更多的是设计、调试与开发的技术和能力
(4)包含技术、商务和管理等方面,是综合性的系统工程:技术是核心,管理和商务活动是系统集成项目成功实施的可靠保障
(5)性价比的高低是评价集成项目设计是否合理和实施是否成功的重要参考因素
1.软件测试:是发现错误的重要手段,能够发现分析和需求阶段产生的多数错误,是取得高可靠软件质量的重要措施之一。
2.软件测试的目的:以较小的代价发现软件中存在的错误
3.软件测试原则
(1)穷尽测试是不可能的:软件测试时抽样测试,满足一定的测试出口准则时应当终止;根据测试的风险和优先级控制工作量
(2)测试应该贯穿于软件生命周期的始终,并尽早测试:测试的准备和设计在编码之前开始;开发过程的每个阶段通过测试保证该过程产品的质量;越到测试后期,为修复缺陷付出的代价越大
(3)缺陷具有集群特性:Pareto原则表明80% 的错误集中在20%的程序模块中
(4)杀虫剂悖论:同样的测试用例被反复执行时,发现缺陷的能力会越来越差-->评审和修改测试用例
(5)没有失效不代表系统可用:即使测试没有发现任何缺陷,也不能证明软件完全正确;如果系统无法使用或者不满足用户的需求和期望,研发就是失败的
(6)测试的标准是用户的需求
(7)尽早定义产品的质量标准:建立质量标准,根据测试的结果,对产品的质量进行分析和评估
(8)可以由第三方或者独立的测试团队完成
4.软件的可测试性
(1)测试过程便于对软件的内部状态进行控制-->可控性
(2)通过测试能够对软件的内部状态进行观测-->可观测性
即对软件进行测试时信息获取的难易程度
软件可测试性的一个重要原则为技术文档的完整,并根据设计变化而及时更新
尽早确定用户接口和特征集,使软件的变化很少而且可控
5.测试用例的设计
(1)测试用例:软件测试过程中为了实现特定的测试目的而设计的一组测试输入、执行条件和预期的输出结果,以便测试某个程序是否满足特定需求
(2)测试用例的设计原则:
6.测试分类
(1)是否执行软件程序
(2)软件开发过程的角度
黑盒测试:在程序接口上进行软件功能测试,给定正确的输入,测试能否产生正确的输出;需要测试合法和不合法的输入数据;黑盒测试只能采用有限的输入作为测试,因此使用测试用例将测试的行为具体量化。
1.等价类划分:将程序的输入域划分成若干子集合,即把全部的输入数据合理划分成若干等价类,在每一个等价类中取一个或者几个有代表性的数据作为测试的输入条件,用少量有代表性的测试数据取得较好的测试结果
有效等价类:合理的、有意义的输入数据
无效等价类:输入无效的数据
2.设计测试用例
确定有效等价类和无效等价类
设计一个测试用例,尽可能覆盖尚未被覆盖的有效等价类
设计一个测试用例,仅覆盖一个尚未被覆盖的无效等价类
1.边界值分析法
2.设计原则
通过经验和知识推断错误的所在之处,基于经验和知觉推测程序中所有可能存在的各种错误,从而有针对性的设计测试用例,可以作为一种辅助的测试手段
考虑输入到条件之间的相互结合,利用图解法分析输入组合的情况,从而设计测试用例
1.因果关系
恒等关系:C1存在则E1产生
非关系:C1存在则E1不产生
或关系:原因C1 C2 或者 C3存在,E1产生
与关系:原因C1和C3同时存在,E1 产生
2.约束条件——输入 输出的约束
3.设计测试用例
1.白盒测试:把测试对象看做透明的盒子,测试人员依据程序内部的逻辑结构设计测试用例,测试程序所有的逻辑路径
2.白盒测试是一种穷举测试,但是及时对所有路径进行了测试,错误仍然可能出现
3.白盒测试针对程序模块:
1.语句覆盖:每条语句至少执行一次;没有办法测试隐藏的条件和可能到达的隐式逻辑分支
2.判定覆盖:每个判定的每个分支至少执行一次,即每个判定有一次真、有一次假
3.条件覆盖:每个判定的每个条件取到各种可能的值,即每个条件有一次真、有一次假;条件覆盖并不能保证判定覆盖
4.判定-条件覆盖:判定语句中的每个条件的所有可能结果至少出现一次,同时每个判定本身的所有可能结果也至少出现一次
5.条件组合覆盖:每个判定中各个条件的每一种组合至少出现一次
1.基本路径测试是在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,根据该集合设计的测试用例保证在测试中程序的每个可执行语句至少执行一次,同时判定条件也分别执行TRUE和FALSE一次。
2.基本路径测试的步骤:
软件测试贯穿于软件过程的每一个阶段,不同阶段采用不同的测试策略-->尽早发现软件中可能存在的错误。
1.依据详细设计描述,对程序模块(软件设计的最小单位)进行正确性检验,采用白盒测试技术,对模块内重要的控制路径设计测试用例;单元测试通常在编码阶段完成
2.单元测试的内容
3.单元测试的方法
单元测试在编码阶段进行
源程序代码编制完成-->评审 验证无语法错误-->根据设计文档设计测试用例-->验证程序功能
设计上层驱动模块和下层支持模块,单元测试需要驱动模块、支持模块的协同工作才能完成模块测试工作
1.集成测试:使得功能和性能完整的模块组合在一起仍然具有良好软件性能的测试技术,主要用于发现与接口有关的问题
2.模块组装成程序:
3.渐进测试的两种形式:
(1)自顶向下
(2)自底向上:从软件结构的最底层模块开始组装和测试
4.回归测试
5.烟幕测试
1.概念
经过集成测试,得到了完整的软件系统
确认测试:根据需求规格说明书中描述的软件有效性准则进一步验证软件的功能和性能是否与用户的要求一致
重点考虑:软件是够满足合同规定的功能和性能、文档资料是否完整、准确、人机交互界面等是否令用户满意
2.内容
1.系统测试:交付给用户之前最后测试阶段,结合计算机软件、硬件、外设、网络等进行各种组装测试和确认测试,是基于整体需求规格说明书的黑盒测试
2.包括
1.测试环境:硬件环境(服务器、客户端、网络连接设备、辅助硬件设备等)、软件环境(操作系统 数据库等)
2.确定软件的测试环境
3.测试环境的管理
总结一下这一章的主要内容
1. 掌握黑盒、白盒测试的主要方法,黑盒测试如等价类划分、边界值分析,以及因果图的画法;白盒测试主要是基本路径测试。
2. 掌握软件测试的几个过程,从模块测试到集成测试、确认测试和系统测试
3. 注意软件测试环境的管理,开头的问题是老师上课的时候提出的,可能的原因之一是因为客户的本地环境出现问题导致系统不能正常使用
4.有个好奇的想法,大的软件公司在进行软件开发时,现在都会采用哪些主流的测试方法呢?复杂的测试不会影响项目的进度吗?希望这些基本的理论有一天可以得以实践