测试是为了度量和提高被测试软件的质量,对测试软件进行工程设计、实施、维护的的整个生命周期过程。

仅仅发现Bug是测试的初步,而分析出根本原因推动问题的解决,却要有很深的功底。

不同的测试岗位从事不同的工作内容,但殊途同归,根本上都是要求具备快速解决问题的能力。

  • 调试:在已知错误的情况下,对软件程序代码做出的一系列检查,校正的过程。
  • 测试:在未知错误的情况下,检查程序代码是否有问题的过程。

    软件测试从软件质量保证的角度来检查程序代码是否有误,而调试是为了解决当前已知的错误,调试活动无法替代软件测试活动。

软件测试

测试是为了度量和提高被测试软件的质量,对测试软件进行工程设计、实施、维护的的整个生命周期过程

软件测试是对软件形成过程的文档、检查软件数据和执行程序代码的测试,而不仅是对程序进行的测试。

软件全生命周期测试:软件错误不仅是程序错误,也包含分析和设计的错误。

软件质量

软件满足规定用户或潜在用户需求的能力,要从软件在内部,外部和使用过程中的表现来衡量,包含内部质量、外部质量、和使用质量。

软件测试与软件质量的区别

  • 软件测试人员的一项重要任务是提高软件质量,但不等于说软件测试人员就是软件质量保证人员,因为测试只是质量保证工作中的一个环节。

    软件质量保证和软件测试是软件质量工程中两个不同层面的工作。
  • 质量保证(QA):质量保证的重要工作通过预防,检查与改进来保证软件质量(所关注的是软件质量的检查与测量,着眼于软件开发的过程,步骤和产物)。

    QA采用“全面质量管理”和“过程改进”的原理展开质量保证工作。
  • 软件测试:测试过程虽然与开发过程紧密相关但,关心的不是过程的活动,而是对过程的产物以及开发出的软件进行剖析。

    对测试中发现的问题的分析、追踪与回归测试也是软件测试中的重要工作,因此软件测试是保证软件质量的一个重要环节。

软件测试的目的

是想以最少的人力,物力和时间找出软件中潜在的各种错误和缺陷,过修正各种错误和缺陷提高软件质量,回避软件发布后由于潜在的软件缺陷和错误造成的隐患所带来的商业风险。

基于不同的立场,存在着两种完全不同的测试目的:

  • 从用户的角度出发,普遍希望通过软件测试暴露软件中隐藏的错误和缺陷,以考虑是否可接受该产品。
  • 从软件开发者的角度出发,则希望测试成为表明软件产品中不存在错误的过程,验证该软件已正确地实现了用户的要求,确立人们对软件质量的信心。

换言之,测试的目的是:

想以最少的时间和人力,系统地找出软件中潜在的各种错误和缺陷。

测试的附带收获是,它能够证明软件的功能和性能与需求说明相符合。

实施测试收集到的测试结果数据为可靠性分析提供了依据。

测试不能表明软件中不存在错误,它只能说明软件中存在错误

Glenford J.Myers就软件测试目的提出以下观点:

  • 测试是程序的执行过程,目的在于发现错误。
  • 一个好的测试用例在于能发现至今未发现的错误。
  • 一个成功的测试是发现至今未发现的错误的测试。

软件测试的原则

  1. 所有的软件测试都应追溯到用户需求。
  2. 应当把“尽早地和不断地进行软件测试”作为软件测试者的座右铭。
  3. 完全测试是不可能的,测试需要终止。根据测试错误的概率以及软件可靠性要求,确定最佳停止测试时间。
  4. 测试无法显示软件潜在的缺陷。也就是说测试只能证明软件存在错误而不能证明软件没有错误。
  5. 充分注意测试的群集现象。经验表明,测试后程序中残存的错误数目与该程序中已发现的错误数目或者检错率成正比。
  6. 程序应避免检查自己的程序。
  7. 尽量避免测试的随意性。

测试需要终止的原因:输入量太大;输出结果太多;路径结合太多。根据测试错误的概率以及软件可靠性要求,确定最佳停止测试时间。

软件测试的对象

根据软件定义,软件包括程序,数据和文档,所以软件测试并不仅仅是程序测试,软件测试应该贯穿整个软件生命周期中。

需求分析,概要设计,详细设计以及程序编码等各阶段所得到的文档,包括需求规格说明,概要设计规格说明,详细设计规格说明以及源程序。

为了把握各个环节的正确性,人们需要进行各种验证和确认工作 :

  • 验证(verification): 是保证软件正确实现特定功能的一系统活动和过程,目的是保证软件生命周期中的每一个阶段的成果满足上一个阶段所设定的目标。
  • 确认(validation): 是保证软件满足用户需求的一系列的活动和过程,目的是在软件开发完成后保证软件,用户需求相符合。

Testing - 测试基础 - 概念的更多相关文章

  1. Testing - 测试基础 - 自动

    自动化测试模型 一个自动化测试框架就是一个集成体系,在这一体系中包含测试功能的函数库.测试数据源.测试对象识别标准,以及种可重用的模块. 自动化测试框架在发展的过程中,不断有新的模型(概念)被提出,目 ...

  2. Testing - 测试基础 - 探索

    定义 探索性测试(Exploratory Testing)是一种自由的软件测试风格,强调测试人员同时展开测试学习,测试设计,测试执行和测试结果评估等活动,以持续优化测试工作. 其特征有:即兴发挥,快速 ...

  3. Testing - 测试基础 - 方法

    选择和使用测试方法和工具 按照测试需求用途(或测试技巧)选择 在软件开发生命周期和软件测试流程中适当地选择 按照测试人员实际技能选择 选择可提供的和可执行的 测试方法 类别及技巧 目标 使用方法 举例 ...

  4. Testing - 测试基础 - 阶段

    估算 测试对软件工作量的估算的准确性 测试评估软件系统的状况的准确性 关注点: 不准确的估算 不适当的开发过程 不真实的状态报告 如何知道对工作量的估算是正确的 估算工作量的工具很容易出错 对软件工作 ...

  5. Testing - 测试基础 - 分类

    对软件内部结构的深入程度 黑盒测试:又叫功能测试.数据驱动测试或基于需求规格说明书的功能测试. 白盒测试:又称结构测试.逻辑驱动测试或基于程序代码内部构成的测试. 灰盒测试:包含性能测试.自动化测试. ...

  6. Testing - 测试基础 - 流程

    测试存在于各个阶段: 需求测试--->单元测试--->集成测试--->系统测试--->性能测试--->用户测试--->回归测试 需求测试 完整性&正确性 一 ...

  7. Testing - 测试基础 - 用例

    测试用例 是指对一项特定的软件产品进行测试任务的描述,体现测试方案.方法.技术和策略. 内容包括测试目标.测试环境.输入数据.测试步骤.预期结果.测试脚本等,并形成文档. 每个具体测试用例都将包括下列 ...

  8. Testing - 测试基础 - 理解

    理解 目的 测试就是要找到关键信息,有关项目和产品的关键决策都是根据这些信息做出. 对产品质量做出总体评估. 找出并报告团队所有可能会对产品价值产生消极影响的问题(但并不意味着能发现所有问题). 重心 ...

  9. Testing - 测试基础 - 模型

    珠玉在前,不再赘言. 软件测试模型 软件测试模型汇总

随机推荐

  1. 4..一起来学hibernate之Session详解

    后续... 后续... 后续... 后续... 后续... 后续... 后续... 后续... 后续... 后续... 后续... 后续... 后续... 后续... 后续...

  2. 改变html中鼠标形状

    要修改的属性是: style=”cursor:default” 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 pointer:是手型. crosshair:是十字 ...

  3. highcharts 当Y轴全部没有数据的时候 数据标签显示最下面 而不是居中显示

    yAxis: {min: 0,minRange: 1}

  4. pthread——pthread_cleanup

    Pthread_cleanup用于注册线程清理函数,注册的清理函数将在线程被取消或者主动调用pthread_exit时被调用:     一个简单的示例: #include <pthread.h& ...

  5. 用javascript写Android和iOS naitve应用,实在炫酷。

    关注NativeScript有一段时间了,说好了的三月发第一个Beta版,终于发布了. // declare the extended NativeScriptActivity functionali ...

  6. Vs2013 头文件注释

    在vs2013的默认安装目录 1.CS类修改方式 在C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\ItemTempla ...

  7. Xamarin.IOS之多视图

    欢迎大家加入以下开源社区 Xamarin-Cn:https://github.com/Xamarin-Cn Mvvmcross-Cn:https://github.com/Mvvmcross-Cn  ...

  8. C# Entity Framework查询小技巧 NoTracking

    在使用Entity Framework做查询的时候,如果只需要显示,而不用保存实体,那么可以用AsNoTracking()来获取数据. 这样可以提高查询的性能. 代码如下: var context = ...

  9. PostgreSQL基础整理(二)

    存储过程 实现功能:针对工资表30岁以下,工资提升10% 30至40提升20% 40以上提升30% + 奖金(入参)返回平均薪酬 创建表: DROP TABLE emps; CREATE TABLE ...

  10. Java设计模式6:策略模式

    策略模式 策略模式的用意是针对一组算法,将每一个算法封装到具有共同接口的独立类中,从而使得它们可以相互替换.策略模式使得算法可以在不影响到客户端的情况下发生变化. 策略模式的结构 策略模式是对算法的包 ...