首页 > 其他分享 >软件测试基础

软件测试基础

时间:2024-11-18 20:08:23浏览次数:1  
标签:发现 黑盒 白盒 基础 测试 软件 软件测试 进行

1.软件测试的核心竞争力?

(1)早发现问题:问题发现的越早,解决的成本越低。如果一个需求还未实现的时候就能发现需求的漏洞,那么这种问题的价值是最高的。

(2)发现别人无法发现的问题:别人发现不了,而你可以发现,那么你就是无法被替代。

2.测试和开发如何结合才能使软件的质量得到更好的保障?

测试和开发应该按照W模型的方式进行结合,测试和开发同时进行,能够尽早发现软件缺陷,降低软件开发的成本。这表明测试的对象不仅是程序,还有需求、设计等,有利于尽早地全面发现问题。

 单元测试:完成最小的软件设计单元(模块)的验证工作,目标是确保模块是被正常的编码,通常情况下是白盒的,对代码风格、程序设计和结构、业务逻辑等进行静态测试,及早的发现和解决不易显现的错误。

集成测试:通过测试发现与模块接口有关的问题。目标是把通过了单元测试的模块拿来,构造一个在设计中所描述的程序结构,应当避免一次性的集成(除非软件规模很小),而采用增量集成。

系统测试:是基于系统整体需求说明书的黑盒类测试,目标是验证系统是否满足了需求规格的定义,找出与需求规格不相符合或与之矛盾的地方。而且是在系统实际运行环境下进行测试。

回归测试:是指在发生修改之后重新测试先前的测试用例以保证修改的正确性。

验收测试:相关的用户或独立测试人员根据测试计划和结果对系统进行测试和接收。包括Alpha测试和Beta测试。

Alpha测试:是由用户在开发者的场所来进行的,在一个受控的环境中进行。

Beta测试:由软件的最终用户在一个或多个用户场所来进行的,开发者通常不在现场,用户记录测试中遇到的问题并报告给开发者,开发者对系统进行最后的修改,并开始准备发布最终的软件。

我认为最重要的是系统测试,它主要是验证软件的功能是否满足需求。而且此时单元测试和集成测试已完成,能够对软件所有功能进行功能测试,覆盖系统所有的联合部件,是指对整个产品系统进行的测试,能够验证系统是否满足了需求。

 黑盒测试:也称功能测试或数据驱动测试,是在已经知道软件有什么功能的情况下,通过测试来检测每个功能是否都能正常使用。

在测试时,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试。

黑盒测试只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息,并且保持外部信息(如数据库和文件)的完整性。

黑盒法是穷举输入测试,只有把所有可能的输入都作为测试情况使用,才能以这种方法查出程序中所有的错误。实际上测试情况有无穷多个,因此不仅要测试所有合法的输入,而且还要对那些不合法但是可能的输入进行测试。

 常见的黑盒测试方法有:等价类划分法、边界值分析法、因果图法、场景法、正交实验设计法、判定表驱动分析法、错误推测法、功能图分析法。

白盒测试:结构测试或逻辑驱动测试,是针对被测单元内部是如何进行工作的测试。

白盒测试根据程序的控制结构设计测试用例,检查程序内部逻辑结构,对所有的逻辑路径进行测试,是一种穷举路径的测试方法,但即使每条路径都测试过了,但仍然有可能存在错误。穷举路径测试发现不了一些与数据相关的错误。

白盒测试需要遵循的原则有:

(1)保证一个模块中的所有独立路径至少被测一次

(2)所有逻辑均需测试真和假两种情况;

(3)检查程序的内部数据结构,保证其结构的有效性;

(4)在上下边界及可操作范围内运行所有循环。

白盒测试方法

(1)静态测试:不用运行程序的测试,包括代码检查、静态结构分析、代码质量度量、文档测试等等,它可以由人工进行,也可以借助软件工具(Fxcop)自动进行。

(2)动态测试:需要执行代码,通过运行程序找到问题,包括功能确认与接口测试、覆盖率分析、性能分析、内存分析等。

 

标签:发现,黑盒,白盒,基础,测试,软件,软件测试,进行
From: https://www.cnblogs.com/Lorrained/p/18553539

相关文章

  • 人工智能之机器学习基础——逻辑回归
    逻辑回归是一种广泛应用的分类模型,尽管名字中有“回归”一词,但它主要用于解决分类问题。逻辑回归模型的核心思想是通过使用一个逻辑函数(Sigmoid函数)将线性回归的输出映射到概率值[0,1][0,1][0,1],从而完成分类任务。 让我们详细推导逻辑回归的最大似然估计过程,包括如何从......
  • 什么是JUPYTER?一文快速了解JUPYTER基础知识 Jupyter
    什么是JUPYTER?一文快速了解JUPYTER基础知识JupyterJUPYTER是一款开源的交互式计算环境,为数据科学家、研究人员和开发者提供了一个灵活且强大的平台,用于创建、共享和展示计算性工作。它最初由FernandoPerez于2014年推出,并得到了全球广泛的应用和认可。JUPYTER的名称源自三个核......
  • 2024年11月17日 星期天 Go语言基础
    今日格言坚持每天进步一点点~一个人也可以是一个团队~学习全栈开发,做自己喜欢的产品~~Go语言的创始人Go语言的创始人有三位,分别是:RobertGriesemer:他参与开发了JavaHotSpot虚拟机。RobPike:他是Go语言项目的总负责人,曾是贝尔实验室Unix团队的成员,参与过Plan9、Inf......
  • Httpclient基础!!!!实战训练!!!!
    1.HttpClient1.1介绍HttpClient是ApacheJakartaCommon下的子项目,可以用来提供高效的、最新的、功能丰富的支持HTTP协议的客户端编程工具包,并且它支持HTTP协议最新的版本和建议。HttpClient作用:发送HTTP请求接收响应数据为什么要在Java程序中发送Http请求?有......
  • 人工智能之机器学习线代基础——线性相关和线性无关
    线性相关(LinearlyDependent)和线性无关(LinearlyIndependent)是线性代数中描述向量组关系的概念,用于判断向量组是否可以通过线性组合生成其他向量,以及它们是否包含冗余信息。      ......
  • 人工智能之机器学习线代基础——行列式、矩阵的 逆(inverse)、伴随矩阵
    行列式(Determinant)是线性代数中的一个重要概念,用于描述方阵的一些性质。行列式是一个标量,计算方法和矩阵的大小有关。 不使用代数余子式的定义     不使用代数余子式的定义的三阶计算案例     矩阵的逆(inverse) 伴随矩阵  ......
  • 【JAVA】Java基础—面向对象编程:类的其他特性—静态成员与方法
    在Java中,静态成员和静态方法是类的一部分,而不是类的实例的一部分。这意味着静态成员和方法可以在没有创建类的实例的情况下访问。理解静态成员和方法的概念对于Java开发至关重要,因为它们在内存管理、性能优化和设计模式中扮演着重要角色。理论知识1.静态成员静态变量:也称......
  • 【JAVA】Java基础—面向对象编程:类的其他特性—static 关键字的使用
    在Java编程中,static关键字是一个非常重要的概念,它用于定义类级别的成员,而不是实例级别的成员。理解static的使用对于编写高效、清晰和可维护的代码至关重要。在实际开发中,static关键字通常用于创建工具类、常量、单例模式以及共享数据等场景。理论知识1.static变量静态变......
  • Java基础知识(一)
    文章目录基础概念1.Java语言的特点2.JavaSEvsJavaEE3.JVMvsJDKvsJRE的区别a.JVMb.JDKc.JDEd.JDK、JRE和JVM的关系4.字节码5.Java语言“编译与解释并存”的特性6.AOT编译模式优势缺陷7.OracleJDKvsOpenJDK8.Java和C++的区别相同点:不同点......
  • Java 基础 -集合类
    集合类Java中重要的集合类有以下这些:集合类:Hashtable、HashMap、ArrayList、LinkedList、TreeMap、WeakHashMap1、ArrayListArrayList是一个有序数组,内部使用对象数组进行存储,并且有一个单独的size字段存储数组中对象的数量。transientObject[]elementData;privateint......