1. Verification of design specification 对设计规格/需求的验证
主要类型包括对用户需求的定义、分析以及设计
2. Validation of constructed system 对系统的输入/输出验证
主要类型有对软件系统的系统测试、集成测试、回归测试以及用户验收测试(User Acceptance Testing)
在整个测试项目周期中,项目主管可以发现,一个测试的项目如果要获得成功,两者缺一不可。一方面,测试组要使得软件在经过整个测试周期之后尽力满足客户的需求规格说明书,或者说在测试报告中向客户说明需求被满足的情况。另一方面,是测试人员在软件产品的测试周期中,要尽力做到的,即根据软件系统准备测试数据并验证。
IEEE在1983年提出了软件测试的定义:
“使用人工或自动手段来运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。”
Graphical User Interface (GUI) testing 用户界面测试
界面测试是所有应用软件测试过程中的必经之路
界面测试的目标有:
1. 提供用户可以用来操作的界面是否正常
2. 每个单独模块的功能界面是否正常
3. 各个模块的集成界面是否正常
用户界面测试常见错误:
· 功能定义错误(比如说简单的功能定义得很复杂,功能的解释难以理解)
· 功能遗漏
· 功能实现错误
· 用户界面拼写错误
· 适当的用户提醒
· 数据查询引起的错误
· 错误的搜索标准
· 字符串错误
· 界面布局不当
· 数据库调用显示错误
· 服务器流程错误运转
用户界面测试基本思想:
· 集中减少错误的发生
· 区分开逻辑错误
· 应用适当的测试设计技术
· 分层设计测试用例
· 实现测试自动化
Regression testing回归测试
回归测试的定义:回归测试是在软件维护阶段,对软件进行修改之后进行的测试。其目的是检验对软件进行的修改是否正确。这里,修改的正确性有两重含义:一是所作的修改达到了预定目的,如错误得到改正,能够适应新的运行环境等等;二是不影响软件的其他功能的正确性
1. 测试先前版本中发现的错误/缺陷
2. 重新测试所有程序
3. 发现隐藏的缺陷
4. 建立一个新的基线测试用例库
回归测试的基本过程
(1). 开发在提交新版本之前,会有一个新功能和修复bug的列表,测试人员要识别出软件中被修改的部分,对这些部分进行测试;
(2). 从原基线测试用例库中,排除所有不再适用的测试用例,确定那些对新版本依然有效的测试用例,建立新一轮的测试用例库。
(3). 依据测试策略,选择测试用例来测试新版本。
(4). 同时根据新版本中增加的功能还有修复的缺陷,分别生成新的测试用例。
(5). 对新的测试用例进行测试。
第(2)和第(3)步测试验证修改是否破坏了现有的功能,第(4)和第(5)步测试验证 修改工作本身。
注意,有个回归缺陷即regression bug是在回归测试过程中发现的,上个版本中没有的,由于增加新功能或修复缺陷等代码修改引起的bug。
Acceptance Testing验收测试
验收测试:验收测试旨在向软件的购买者展示该软件系统满足其用户的需求。它的测试数据通常是系统测试的测试数据的子集。所不同的是,验收测试常常有软件系统的购买者代表在现场,甚至是在软件安装使用的现场。这是软件在投入使用之前的最后测试。
验收测试是在用户参与下的测试,一般在客户的现场环境中进行。
在V模型中验收测试和需求分析阶段是对应的,因此,验收测试用例应该与软件需求规格说明书之间具有可追溯性。一个软件产品可能使用在多个项目中,因而可能具有复杂多样的功能,验收测试不可能也没有必要把研发阶段所有的测试用例都拿出来重新执行一遍。
· 满足客户关注的功能需求
· 最小化性能需求
· 最大化缺陷发现率
· 表现软件独有特性
配置测试
对软件和操作系统、数据库、第三方软件等的兼容性进行测试。
· 硬件配置兼容性
· 操作系统兼容性
· 内部软件兼容性
· 网络配置
· 数据库配置
单元测试:单元测试是对软件中的基本组成单位进行的测试,如一个模块、一个过程等等。它是软件动态测试的最基本的部分,也是最重要的部分之一,其目的是检验软件基本组成单位的正确性。一个软件单元的正确性是相对于该单元的规约而言的。因此,单元测试以被测试单位的规约为基准。单元测试的主要方法有控制流测试、数据流测试、排错测试、分域测试等等。
集成测试:集成测试是在软件系统集成过程中所进行的测试,其主要目的是检查软件单位之间的接口是否正确。它根据集成测试计划,一边将模块或其他软件单位组合成越来越大的系统,一边运行该系统,以分析所组成的系统是否正确,各组成部分是否合拍。集成测试的策略主要有自顶向下和自底向上两种。