01 软件测试基本概念

Posted on Wed, 25 Dec 2024 17:03:30 +0800 by LiangMingJian


1.软件测试

1.1 软件测试的定义

  • 软件测试是指通过手工或自动化来测定某个软件产品系统的过程。
  • 广义的软件测试由确认、验证和测试三个方面组成:
    • 确认要保证做的产品正确。软件测试的确认是保证软件满足用户需求的一系列活动和过程。其目的是证实在一个给定的外部环境中软件的逻辑正确性,检查软件在最终的运行环境上是否达到预期的目标。
    • 验证要保证产品做得正确。软件测试的验证是保证软件正确实现特定功能的一系列活动和过程。其目的是保证软件生命周期中,每一阶段的成果满足上一阶段所设定的目标。
  • 软件测试中确认和验证的区别在于:
    • 确认是针对某一具体功能或某一特定用户需求进行测试的。
    • 验证是针对整体的用户需求来进行测试的。
    • 比如:需求不准确时,客户提出的需求验证通过了,但是确认不一定通过,因为按照需求做出来的功能可能无法实现用户特定的应用场景。

1.2 软件测试的目的

  • 软件测试的目的是发现错误并验证规定的需求是否满足。
  • 软件测试为的是发现程序中存在的错误,证明程序有错,而不是证明程序无错误。

1.3 软件测试的依据

  • 软件测试的依据是需求规格说明书。
  • 在软件测试中,需求规格说明书是导致软件缺陷的最大原因。

1.4 软件测试的对象

  • 程序
  • 文档
  • 数据

1.5 软件测试的执行

  • 初测期:测试主要功能和关键的执行路径,排除主要障碍。
  • 细测期:依据测试计划和测试用例,逐一测试功能、特性、性能、界面、兼容性、可用性等内容,预期可发现大量不同性质、不同严重程度的错误和问题。
  • 回归测试期:修改程序后要进行回归测试,在系统已达到稳定,一轮测试中发现的错误已十分有限,并复查已知错误的纠正情况,未引发任何新的错误时,终结回归测试。

1.6 软件测试的原则

  • 溯源性原则:所有的测试都应该追溯到用户的需求。
  • 工程性原则:应当尽早地,不断地进行软件测试,甚至进行预防性测试,测试要贯穿于软件工程的各个阶段。
  • 独立性原则:避免开发人员自己测试自己的程序,防止开发团队和测试团队长期合作,产生的思想同化,导致测试人员的思想独立性消失。
  • 合理性原则:认识到无法对软件进行全局的、各种可能的测试。软件测试需要在符合指定的要求和测试强度之间找到一个合理的点,设置测试的终止条件。测试时间并非越长越好,需要在质量,进度和成本间做出平衡。
  • 不完全性原则:应当知道完全测试是不可能的,软件测试的路径是无法穷尽的,测试不可能完全暴露出所有缺陷。测试结束后,只能说程序没有问题或者说测试的结果未发现错误,不能说这个软件没有错误。测试无法发现软件潜在的缺陷(缺陷被发现了就不是潜在的了)。
  • 相关性原则:应当充分注意测试中的群集现象,对错误出现较多的程序段进行重点测试,一个软件发现的错误越多,那么在这个软件中没有发现的错误就会越多。
  • 可接受性原则:在利益相关方可接受的情况下,允许一定的问题存在于软件中。
  • 风险性原则:测试是为了降低软件质量的风险,但是测试本身也是有风险的。所以在制定测试策略时,应该考虑测试的风险,利用风险管理原则对软件测试的风险进行管理。

1.7 软件测试的停止条件

  • 测试用例全部执行完毕;
  • 测试覆盖率符合要求;
  • 测试超过了预定的时间;
  • 查出了预定数目的故障(单位时间内查出故障低于预定值);
  • 执行完预定的测试计划;

2.软件质量

2.1 软件质量的定义

  • 软件质量是软件特性的综合,是指软件满足规定或潜在用户需求的能力。
  • 软件质量主要从内部质量、外部质量、使用质量和过程质量这四个方面来衡量。

2.2 软件质量保证

  • 软件质量保证(SQA)是指通过对软件产品进行有计划的评审与审计,来确保软件开发按照产品质量过程标准实施项目管理活动。
  • 软件质量保证通过预防、检查与改进来保证软件质量,其关心的是开发过程活动本身,强调的是一种管理性的活动。
  • 软件质量保证的主要活动有:质量规范制定;技术评审实施;软件测试流程追踪;质量标准的监督执行;软件质量要素度量;质量数据记录与保存。

2.3 软件质量保证与软件测试的关系

  • 软件测试只是软件质量保证中的一个活动子项,保证质量的手段有多种,软件测试是质量保证很重要的一种技术手段。
  • 软件质量保证指导软件测试的计划与执行,监督测试结果的客观性、准确性与有效性。
  • 软件测试为软件质量保证提供质量数据,作为软件质量评价的客观依据。
  • 软件质量保证侧重于对软件开发流程进行评审与监控。
  • 软件测试侧重于对软件质量特性进行检测与验证。

3.测试用例

3.1 测试用例的概念

  • 测试用例是为了特定目标而设计的一系列输入、执行条件和预期结果集合。
  • 测试用例的三要素是:输入,预期输出,执行条件。
  • 测试用例是测试实施的依据,体现了测试的方案、方法、技术和策略。
  • 测试用例的作用是保证测试的规范性,提高测试效率,保证测试质量,避免随意性和盲目性,以及作为软件企业的一类资产。

3.2 测试用例的分类(按预期结果和作用)

  • 通过(正面)测试用例:描述需求可以正确实现的测试用例。
  • 失败(负面)测试用例:描述需求可以不能实现的测试用例。

3.3 测试用例的分类(按测试对象)

  • 功能点测试用例:描述功能点使用的测试用例。
  • 业务流程用例:描述业务流程使用的测试用例。

3.4 测试用例设计原则

  • 测试前应当设计合理的测试用例;
  • 在设计用例时应当包括合理和不合理的输入条件;
  • 测试用例应当要映射到需求。
  • 测试用例的覆盖率不一定达到 100%。
  • 测试用例的数量不与覆盖率成正比,不能一味的追求覆盖率而增加测试用例,应当注意测试成本和覆盖率的选择。
  • 场景法适用于模拟复杂业务流程。
  • 等价类法适用于输入项少,输入项的属性或者特性相同的功能点。
  • 业务流程的测试需要提供多条数据来覆盖流程。
  • 经常使用边界值法验证界面输入值是否正确。

3.5 测试用例的内容

  • 用例编号。
  • 用例名称。
  • 测试等级。
  • 验证步骤。
  • 预期结果:注意是预期结果,而不是实测结果。
  • 入口准则:确立软件测试的切入点。
  • 出口准则:将测试的执行结果和已经定义的测试目标进行比较。

4.测试策略

  • 软件测试的策略是在一定软件测试标准、测试规范的指导下,依据测试项目的特定环境而规定的测试原则和方法。
  • 测试策略简单来讲就是一套方法论,这套方法论用来衡量利益相关者的利益,选择一个合适的平衡点,使得投资回报可以接受。
  • 设计测试策略的方法:
    • 基于分析的策略
    • 基于模型的策略
    • 基于标准规范的策略
    • 基于自动化的回归测试策略