文章目录
1、系统实现概述
1.1 程序设计方法
程序设计方法是软件工程方法学的主要内容之一,主要有:结构化程序设计、面向对象的程序设计、面向方面的程序设计 和 可视化程序设计。
# 程序化设计方法
# 1、结构化程序设计 SP
经典的SP:顺序、选择if then else、循环 do while
扩展的SP:顺序、选择、循环、+ do_case + do_until
修正的SP:顺序、选择、循环、+ do_case + do_until + leave/break
# 2、面向对象的程序设计 OOP
OOPL
# 3、面向方面的程序设计 AOP
Aspect-Oriented Programming
# 4、可视化程序设计 VP
visual programming
比较常用的:VIsual Basic、Visual C++、Delphi、Power Builder
是一种事件驱动的程序设计方法
VP的主要过程是在 表单 中放置各种部件、定义事件的属性和编写事件的响应程序
1.2 程序设计语言与风格
程序设计语言是人机通信的工具。良好的程序设计语言能使程序员根据软件设计说明书去完成程序设计时困难最少,减少所需要的程序测试量,并且可以得出更容易阅读和更容易维护的程序。
如何选择语言呢?
- 为了使得程序容易测试和维护,以减少软件的总成本,所选用的程序设计语言应该有理想的模块化机制,以及可读性好的控制结构和数据结构;
- 为了便于调试和提高软件的可靠性,所选用的程序设计语言应该 能够尽可能多地发现程序中的错误;
- 为了降低软件开发和维护成本,所选的程序设计语言应该有良好的独立编译机制;
- 实际选择时,还要考虑实用方面的限制,例如:系统用户的要求、可使用的编译程序、可以得到的软件工具、工程规模、程序员的知识、软件的可移植性要求和软件的应用领域等。
使用OOPL----注意:
选择OOPL时,还要重点考虑是否支持OO方法的主要特征,以及类库和开发环境等。例如:C++就是一种典型的OOPL,充分支持OO方法中的三个主要特征
- 封装:封装是一种信息隐蔽技术,是指将数据和算法捆绑成一个整体,存取数据的时候只需知道其算法的外部接口,而无需了解数据的内部结构。C++通过建立类来支持封装性和信息隐蔽。
- 继承:继承性是指一类事物保留了另一类事物的全部特征,并且具有自身的独有性质。C++采用继承来支持复用。
- 多态:多态性是指当多种事物继承自同一事物时,同一操作在它们之间表现出不同的行为。C++使用函数重载、模板和虚函数等概念来支持多态性。
程序设计风格
良好的程序设计风格可以提高程序的可理解性、可复用性、可扩展性和健壮性,不仅能够明显减少维护和扩展开销,而且有助于在新项目中移植 和 复用。
- 可理解性:有意义的标识符、详细的注解、清晰规范的数据说明、单独明了的语句构造,合理的交互设计等。
- 可复用性:提高功能内聚、减小功能的规模、保持功能的一致性、将接口与实现分开、尽量不使用全局变量等。
- 可扩展性:封装实现策略、利用多态性机制、避免使用多分枝语句、精心设计共有服务等
- 健壮性:预防用户误操作、检查参数的合法性、不要预先确定限制条件、先测试后优化等。
2、软件测试概述
2.1 测试自动化
# 根据实际情况,来判断是否需要自动化
# 优点
1、提高测试执行速度
2、提高工作效率
3、保证测试结果的准确性
4、连续运行测试脚本
5、模拟现实环境下受约束的情况
# 缺点
1、自动化测试不能取代手工测试,能够发现的缺陷不如手工测试;
2、对所测产品质量的依赖性大,不能提高有效性,可能会制约软件开发;
3、测试工具本身不具备想象力;
4、需要投入人力,性价比问题
测试用例的生成
脚本的基本结构主要有以下几种
1、线性脚本
2、结构化脚本
3、共享脚本
4、数据驱动脚本
5、关键字驱动脚本
自动化测试工具
目前,自动化测试工具主要有单元测试工具、负载和性能测试工具、GUI功能测试工具和基于Web应用的测试工具等。
# 1、单元测试工具
(1)C/C++测试工具:如C++Test
(2)Java测试框架:Junit
(3)内存资源泄露检测该工具:BounceChecker、Purify
(4)代码覆盖率检查工具:TrueCoverage、PureCoverage、LogiScope
(5)代码性能检查工具:Macabe
(6)软件纠错工具:Rational Purl
# 2、负载和性能测试工具
是软件测试中作用最大的工具,可以完成一些难以用手工实现的测试
(1)Mercury Interactive的:LoadRunnner
(2)Compuware的:QALoad
(3)IBM Rational的:SQALoad、Performance、Visual Qualit
# 3、GUI功能测试工具
主要用于回归测试
(1)Mercury Interactive的:WinRunner
(2)Compuware的:QARun
(3)IBM Rational的:SQARobot
(4)Microsoft的:Visual Test Suite
# 4、基于web应用的测试工具
主要进行链接检查、html检查、web功能和安全行等方面测试。
(1)MI公司的:Astra系列
(2)RSW公司的:E-TestSuite、
WorkBench、
WebApplicationStress[WAS] Tool\
Link Sleuth
其他测试工具还包括缺陷跟踪工具、综合测试管理工具、嵌入式测试工具、数据库测试工具等。
2.2 软件调试
排错的方法
- 蛮力法:主要思想“通过计算机找错”
- 回溯法:backtracking,从出现错误征兆处开始,人工沿控制流程往回追踪,直到发现出错的根源。
- 原因排除法:通过演绎和归纳,以及二分法实现。
软件调试与软件测试的区别
- 测试的目的是找出存在的错误;调试的目的是定位错误且修改程序以修正错误;
- 调试是测试之后的活动
- 测试 是从一个已知的条件开始,使用预先定义的过程,有预知的结果;调试从一个未知的条件开始,结束的过程不可预计;
- 测试过程可以事先设计,进度可以事先确定;调试不能描述过程或持续时间。
3、软件测试方法
4、测试类型
4.1 单元测试
单元测试也称 模块测试
着重从模块接口、局部数据结构、重要的执行通路、出错处理通路 和 边界条件等方面对模块进行测试。
测试一个模块的时候,可能需要为该模块编写一个 驱动模块 和 若干个 桩模块。
- 驱动模块:用来调用被测模块。接收测试者提供的测试数据,把数据传送给被测模块,从被测模块接收测试结果
- 桩模块:用来模拟被测模块所调用的子模块,接受被测模块的调用,检测调用参数,并以尽可能简单的操作模拟被调用的子程序模块功能,把结果返回给被测模块。
注意:顶层模块测试不需要驱动模块,底层模块测试不需要桩模块。
单元测试策略
- 自顶向下的单元测试:先测试上层模块,再测试下层模块。由于测试下层模块时它的上层模块已测试过,所以不必另外编写驱动模块。
- 自底向上的单元测试:不必另外编写桩模块。
- 孤立测试:每个模块需要单独设计驱动模块和桩模块,增加了额外的测试成本。
- 综合测试策略:综合上述的。
4.2 集成测试
集成测试是检查模块之间,以及模块和已集成的软件之间的接口关系,并验证已集成的软件是否符合设计要求。
技术依据:软件概要设计文档
集成测试策略
集成测试分析
在进行集成测试之前,应首先进行集成测试分析。
集成测试分析 既包括对被测软件本身的分析(如:架构分析、模块分析、接口分析),也包括对测试可行性和测试策略的分析。
4.3 系统测试
4.4 确认测试
4.5 回归测试
4.6 汇总对比
注意区分:每个阶段都做了什么事情
5、面向对象系统测试
OO系统的测试策略与传统的结构化系统的测试策略有很大的不同,这些不同主要体现在两个方面:
- 测试的焦点从模块转向了类
- 测试的视角扩大到了分析和设计模型。
5.1 面向对象系统的测试策略
从测试内容看,OO系统的测试也可以分为:单元测试、集成测试和系统测试。
单元测试和集成测试,可纳入OOP的测试活动,而系统测试可单独作为一项活动。
也有文献将OO系统的测试分为:算法层、类层、模板层和系统层。
OO方法将开发分为 OOA、OOD和OOP三个过程。
OOA测试
待补充
OOD测试
待补充
OOP测试
待补充
5.2 面向对象系统的单元测试
OO系统的单元测试包括:
- 方法层面的测试:类似于传统软件测试中的对单个函数的测试。常用的测试技术包括:等价类划分法、组合功能测试(基于判定表的测试)、递归函数测试和多态消息测试等。
- 类层次的测试:具有良好封装性的类成为单元测试的基本对象。类层次的测试主要包括:
(1)不变式边界测试:类的属性的某些状态可能不会出现,称为类不变式,违反类不变式 去测试。
(2)模态类测试:类处于某个特定状态下,只能接受某些特定方法的调用。
(3)非模态类测试:任何状态都能接受所有方法的调用 - 类树层次的测试:OO的继承性和多态性使得子类的测试不仅要考虑自身的属性和方法,还应该考虑其父类和祖先类的影响。
(1)多态服务测试:从父类测试用例集中选择涉及多态方法的测试用例来测试
(2)展平测试:子类自定义的+从父类/祖先类那里继承来的
5.3 面向对象系统的集成测试
传统的集成测试策略
- 大突击集成
- 自底向上集成与自顶向下集成
- 夹层式集成
协作集成
一起完成某种特定功能的类,一起集成,一起去测试。
基于使用的集成
基于使用的集成首先测试那些基本不使用其他类的类(独立类)并开始构造系统,在测试完独立类之后,再测试下一层的使用独立类的类(称为依赖类)。这个依赖类层次的测试序列一直持续到构造完整个系统。
类之间连接的测试
如何充分测试 类之间的各种连接,包括:类关联的多重性测试、受控异常测试、往返场景测试 和 模态机测试。
6、软件评审
6.1 评审原则
非重点,了解即可
6.2 验证与确认
应当要求客户参加
1. 技术评审
2. 管理评审
# 验证与确认的关联
验证
开发周期中的一个给定阶段的产品是否达到上一阶段确立的需求的过程
对标-阶段
确认
开发过程结束时对软件进行评价以确定它是否和软件需求相一致的过程
对比-整体,最终