day01_测试理论(测试概念及分类)

软件都是安全的吗?

答案是错误的。。没有不存在缺陷的软件,只有迄今为止尚未发现的缺陷。软件的缺陷会带来严重的后果。

软件测试的目的/目标

  • 以最少的人力丶物力和时间找出软件中潜在的各种错误和缺陷,保证各种错误和缺陷得以修复,避免软件发布后由于潜在的软件错误和缺陷造成的隐患所带来的商业风险。
  • 同时利用测试过程中得到的测试结果和测试信息,作为后续项目开发和测试过程改进的重要输入,避免在将来的项目和测试中重复同样的错误。提高软件的测试效率和产品的质量。

                                                                                                     

软件测试的定义

软件测试是在现有的软件中查找隐含的缺陷(Bug)或错误的过程就是软件测试,目的就是发现软件当 中的缺陷或错误。软件测试贯穿于整个软件生命周期中。

经典定义

  • 1979,Myers在《软件测试艺术》一书中给出这样的定义:测试是为发现错误而执行程序的过程。理解: 测试是为了证明程序有错,而不是证明程序无错误。 一个成功的测试是发现了至今未发现的错误的测试。

IEEE标准定义

  • 在规定条件下运行系统或构件的过程:观察和记录结果,并对系统或构件的某些方面给出评价。分析软件项目的过程:检测现有状况和所需状况之间的不同,并评估软件项目的特性。

国内定义 

GB/T 11457给出这样的定义: 依据规范的软件检测过程和检测方法,按照测试计划和测试需求对被检测软件 的文档、程序和数据进行测试的技术活动。

  • 软件测试是一个过程,测试不只是测试执行,它包括从计划开始到测试结 束的一系列活动。
  • 软件测试需要测试方法和技术,或者说技巧。
  • 软件包括程序、数据和文档,除了测试执行程序,数据和文档也需要测试。

不同时期关于测试的其他定义

  • 正向思维:使自己确信产品是能够正常工作的评价一个程序和系统的特性或能力,并确定它是否达到期望的结果,软件测试就是以此为目的的任何行为。
  • 反向思维:测试是为发现错误而执行一个程序或者系统的过程,测试就是为了证明程序有错,而不是为了证明程序无错误。
  • 测试是一切以评价程序或系统的属性、能力为目的的活动;测试是对软件质量 的度量(Hetzel,1983)。评价程序或系统的过程。
  • 测试是与软件开发或维护工作并行进行的一个过程。
  • 测试是一个获取信息,降低决策风险的过程。通过测试,向整个团队提供关于 产品质量和项目环境的信息,帮助他们做出决定。
  • 软件测试: 在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进 行评估的过程。 简单地说,软件测试是一种实际输出与预期输出之间的审核或者比较过程。

总结:

  • 软件测试贯穿软件的生命周期
  • 软件测试的对象包括软件的文档丶程序丶软件运行的数据
  • 软件测试与软件开发密切相关
    • 开发一个小模块,对应的是单元测试
    • 开发了多个模块,对应的是联合测试(集成测试)丶确认测试(保证系统功能实现)丶系统测试(模拟真实的用户使用环境)
    • 开发完毕,对应的是验收测试

软件测试原则

  • 只能证明软件存在问题,不能证明不存在问题
  • 不能进行穷尽(穷举)测试,应该分类别测试
  • 测试工作要尽早的介入,降低修复成本(需求文档--ui、程序、测试)
  • 缺陷存在集群现象,二八原则:20%的模块中存在80%的缺陷
  • 测试依赖环境(系统、浏览器)
  • 杀虫剂现象
  • 不存在缺陷谬论

软件测试分类

按照不同的标准软件测试也可以分成不同的类别,具体如下图所示:
                                                                                                                                                                                                                                                                              
按测试阶段划分
  • 单元测试 :又称模块测试,针对软件设计中的最小单位-程序模块,进行正确性检查的测试工作。单元测试需要从程序内 部结构出发设计测试用例。多个模块可以平行地独立进行单元测试。单元定义:C中指一个函数,Java中指一个类。是对软件中最小可测单元进行检查和验证
  • 集成测试:又叫组装测试,通常在单元测试的基础上,将所有程序模块进行有序的、递增的测试。
  • 系统测试:指的是将整个软件系统看为一个整体进行测试,测试的依据是软件需求说明书
  • 验收测试:检验软件是否符合用户需求的测试
    • α测试:Alpha 是内测版本 ,通常只在软件开发者内部交流 。一般而言, 该版本软件的bug较多,普通用户最好不要安装
    • β测试:Beta是公测版本,是对所有用户开放的测试版本,这一版本通常由软件公司免费发布, 用户可从相关的站点下载。通过一些专业爱好者的测试, 将结果反馈给开发者, 开发者们再进行有针对性的修改
    • γ测试:Gamma版本,指的是软件版本正式发行的候选版。该版本已经相当成熟了, 与即将发行的正式版相差无几, 成为正式发布的候选版本
按是否查看(覆盖)源代码
  • 黑盒测试 :又称数据驱动测试,完全不考虑程序内部结构和内部特性,注重于测试软件的功能需求,只关心软件的输入数据和 输出数据。
  • 白盒测试 :指的是把盒子打开,去研究里面的源代码和程序结构。
  • 灰盒测试: 灰盒测试,是介于白盒测试与黑盒测试之间的一种测试,不仅关注输出、输入的正确性,同时也关注程序内部的情况。
按是否运行分类
  • 静态测试 指不实际运行被测软件,而只是静态地检查程序代码、界面或文档中可能存在的错误过程。
  • 动态测试: 是指实际运行被测程序,输入相应的测试数据,检查实际输出结果和预期结果是否相符的过程。
按照是否自动化
  • 人工测试也叫做手工测试,测试人员手动去进行的测试
  • 自动化测试 :利用代码或者工具帮助人工进行测试
软件测试的更多分类
  • 冒烟测试冒烟测试就是对系统进行最基本功能的测试,保证基本的功能和流程能走通
  • 回归测试:当修复一个BUG后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。
  • 随机测试:随机测试主要是对被测软件的一些重要功能进行复测,也包括测试那些当前的测试用例没有覆盖到的部分。主要是根据测试者的经验对软件进行功能和性能抽查。
  • 探索性测试 :探索性测试意味着同时设计测试和执行测试。测试人员通过测试来不断学习被测系统。

常见软件测试术语

第三方测试

  • 是指独立于软件公司自身测试的测试,所谓的第三方是指在软件公司和软件用户之 间的另一方。

确认和验证

  • 确认:通过检查和提高客观证据来证实特定目的的功能或应用是否已经实现。
  • 验证:通过检查和提高客观证据来证实指定的需求是否已经实现。

软件质量保证 和 软件测试

  • 软件质量保证:制定和加强促进软件开发并防止软件缺陷的标准和方法,并鉴定标准和过程被正确的遵循。
  • 软件测试:用最短的时间尽可能的发现多的缺陷,并确保这些缺陷得以修复。

测试和调试

  • 调试:调试是由开发人员进行,发现缺陷代码,识别缺陷产生的原因,修改bug代码。
  • 测试:由测试人员,发现,提交,跟踪bug。

测试和调试的区别

  • 在主体、目标、方法和思路上有所不同。调试是由开发人员进行,修改bug代码。调试是由测试人员,发现,提交,跟踪bug。
  • 测试是从已知的条件开始,使用预先定义的过程,并且有预知的结果;调试是从未知的条件开始,结束的过程可能不可预计
  • 测试可以计划,可以预先制定测试用例和过程,工作进度可以度量;描述调试的过程或持续时间相对比较困难
  • 测试的对象包括软件开发过程中的文档、数据以及代码,而调试的对象一般来说只是代码。

猜你喜欢

转载自blog.csdn.net/weixin_44462792/article/details/114794075