These are all about software testing methods

1. The main purpose of this article

  1、介绍测试方法;
  2、区分黑盒测试、灰盒测试和白盒测试(逻辑覆盖测试);
  3、区分静态测试(控制流分析、数据流分析、信息流分析;同行评审)和动态测试(动态测试工具);
  4、了解手工测试和自动化测试。

When introducing the above software testing methods, you need to first understand the concept of software products. All documents and codes generated in the software development process can be called software products. At the same time, as long as it is a software product, it is the object of testing, that is, software testing. The objects are all documents and codes generated in the software life cycle.

2. Introduction and classification of software testing methods

@@@ According to the different information of the tested object, the software testing methods are divided into black box testing, gray box testing and white box testing.

1. White box testing

   1)概念(定义):是依据被测软件分析程序内部构造,并根据内部构造分析用例,来对内部控制流程进行测试,可完全不顾程序的整体功能实现情况,即已知软件产品的内部实现过程,可以通过测试证明每种内部操作是否符合设计规格的要求,所有内部成分是否已经过检查。
   2)思想:白盒测试又被称为玻璃盒测试、透明盒测试、开放盒测试、结构化测试、逻辑驱动测试、是基于程序结构的逻辑驱动测试。
   3)测试对象: 函数、算法与数据结构
   4)目的
       (1)一般在测试前期进行,通过达到一定的逻辑覆盖率指标,使得软件内部逻辑控制结构上的问题能基本得到消除;
       (2)保证内部结构达到一定的覆盖程度,能够给予软件代码质量更大的保证;
       (3)白盒测试发现问题后,解决问题的成本较低。

   5)白盒测试的常用技术:
       (1)静态分析:包括控制流分析、数据流分析、信息流分析
       (2)动态分析:逻辑覆盖测试(分支测试、路径测试等)、程序插装等 
                    逻辑覆盖测试根据覆盖的对象不同,可以分为:语句覆盖、判定(分支)覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖。
                    程序插装指调试程序时,在程序中插入一些打印语句,程序执行时打印出我们关心的信息,通过这些信息了解执行过程中程序的一些动态行为。
                    逻辑覆盖率的统计通过程序插装来实现。
   6)白盒测试的特点:
       (1)测试人员需要了解软件的实现;
       (2)可以检测代码中的每条分支和路径;
       (3)揭示隐藏在代码中的错误;
       (4)对代码的测试比较彻底;
       (5)实现代码结构上的优化;
       (6)投入较大,成本高;
       (7)无法检测代码中遗漏的路径和数据敏感性错误;
       (8)不验证规格的正确性。

2. Black box testing

   1)定义:把测试对象看成是一个黑盒,只考虑其整体特性,不考虑其内部具体实现过程。即已知产品的需求规格,但不知其内部实现,可以进行测试证明每个需求是否实现。
   2)思想:基于规格的测试,测试类型都来源于质量模型。
   3)测试对象:系统、子系统、模块、子模块、函数等。
   4)常用的黑盒测试方法:等价类划分法、边界值分析法、因果图分析法、判定表法、状态迁移法等。
   5)目的:减少测试时的测试用例数,用尽量少的测试用例完成测试,发现更多的问题。
   6)黑盒测试的特点
       (1)对于更大的代码单元来说(子系统甚至系统级)比白盒测试效率要高;
       (2)测试人员不需要了解软件的实现细节,包括特定的编程语言;
       (3)从用户的视角进行测试,很容易被理解和接受;
       (4)有助于暴露任何规格不一致或有歧义的问题;
       (5)没有清洗和简明的规格,测试用例很难设计;
       (6)不能控制内部执行路径,会有很多内部程序路径没有被测试到;
       (7)不能直接针对特定的程序段,这些程序可能非常复杂(因此可能隐藏更多的问题)

3. Gray box test

Using the overall characteristic information of the tested object, the black box testing method is used; using the internal specific realization information of the tested object, the white box testing method is used; the testing method between white box and black box testing is called gray Box testing.

  1)定义:如果即利用被测对象的整体特性信息,又利用被测对象的内部具体实现信息,采用得就是灰盒测试方法。两种信息占得比例不同,相应的灰度就不同。
  2)适用对象:一般集成测试采用灰盒测试方法。

@@@ According to whether the software system under test is running, the test is divided into static test and dynamic test.

1. Static test

  1)定义:不运行被测试的软件系统,而是采用其他手段和技术对被测试软件进行检测的一种测试技术,例如:代码走读、文档评审、程序分析等。
  2)常用技术:静态分析技术。
       (1)定义:静态分析是一种不通过执行程序而分析程序的技术。
       (2)功能:检查软件的表示和描述是否一致,没有冲突或者没有歧义
       (3)目的:纠正软件系统在描述、表示和规格上的错误,因此是任何进一步测试的前提。
       (4)静态分析技术主要有3种不同的程序测试可能性
            *1*:考虑程序是否满足编码规则,语法上是否具有一致性和完整性;
            *2*:考虑文档描述是否规范、准确、便于查阅;
            *3*:考虑程序和文档之间的一致性。
       (5)静态分析技术有:控制流分析、数据流分析和信息流分析,下面一一介绍:
            *1*控制流分析
                #1#控制流相关概念
                     ………1、程序元素:一个程序元素通常是一个条件,一个简单的语句或者一块语句(多个连续语句)。
                     ………2、控制流关系:一个程序的控制流关系(Control Flow Relation)叙述了程序元素和他们执行的次序之间的关系。
                     ………3、控制流图:对应于控制流关系的图被称为控制流图。
                     ………4、控制流矩阵:有控制流图得到,反映相邻程序元素之间的先后顺序关系。
                #2#控制流分析能发现的问题
                     通过对控制流信息进行分析,确保写出的程序不应包含:转向并不存在的标号;没用的语句标号;从程序入口进入后无法达到的语句;不能达到停机语句的语句。

            *2*数据流分析
                #1#数据流相关概念
                     数据流分析最初是随着编译系统要生成有效的目标码而出现的,这类方法主要用于代码优化(代码优化主要包含:结构优化即可读性、时间效率和空间效率优化、可移植性优化)。
                     数据流分析法关键是数据的引用和定义。
                     ………1、数据的定义:如果程序中某一语句执行时能改变某程序变量V的值,则称V是被该语句定义的。
                     ………2、数据的引用:如果程序中一语句的执行引用了内存中变量V的值,则称V是被该语句引用的。
                #2#数据流分析步骤
                     ………1、根据代码得到数据流表
                     ………2、分析数据流表找到以下两种错误:
                           变量未定义但被引用
                           变量定义但未被引用

2. Dynamic test

   1)定义:按照预先设计的数据和步骤去运行被测软件系统,从而对被测试软件进行检测的一种测试技术。
   2)特点:主要分析软件系统在模拟或是真实的环境中执行之前、之中、之后的动态行为。
   3)常用技术:动态分析技术
       (1)定义:对软件系统运行行为进行分析,包含程序在受控的环境下使用特定的输入进行正式的运行,和期望的结果比较以检查系统运行是正确还是不正确。
       (2)常用动态分析技术:
            *1*:路径测试
            *2*:分支测试
            *3*:性能测试
       (4)常用动态分析工具及功能
            *1*:测试覆盖率分析:用于测试对代码的检测范围;
            *2*:跟踪:跟踪程序执行期间的所有路径
            *3*:调整:度量程序执行过程中所有的资源
            *4*:模拟:模拟系统的部分

@@@ All test methods can be classified as manual testing and automated testing.

1. Manual test

   1)定义:手工测试是传统的测试方法,由测试人员手工编写测试用例,执行,观察结果。
   2)缺点:测试工作量大,重复多,回归测试难以实现

2. Automated testing

   1)定义:自动化测试指利用软件测试工具自动实现全部或者部分测试工作:管理、设计、执行和报告,自动化测试节省大量的测试开销,并能够完成一些手工测试无法实现的测试。
   2)自动化测试的意义     
       (1)对程序新版本运行前一版本执行的测试,提高回归测试效率
       (2)可以运行更多更频繁的测试
       (3)可以执行手工测试困难或不可能做到的测试,比如大量的重复操作或者集成测试
       (4)更好的利用资源,比如测试仪器或者被测对象
       (5)测试具有一致性和可重复性,及自动化测试的步骤和结果完全一样的测试的复用性,及自动化测试甲苯可以拆分开给其他测试脚本使用
       (6)可以更快地将软件推向市场,软件发布前进行高效的回归测试,减少软件发布的时间
       (7)增加软件的信任度,通过自动化测试提高了测试效率,可以吧节约的时间拿出来做更多的测试
   3)自动化测试的限制
       (1)不能取代手工测试,自动化测试只能提高测试效率,不能提高测试有效性,即不可能发现更多缺陷更多
       (2)对测试设计依赖性极大,测试设计的不好会遗漏问题
       (3)自动化测试对软件开发具有很大的依赖性,开发出现变更可能导致前面的自动化测试完全失效
       (4)工具本身并不具备想象力,工具不具有智能
   4)自动化测试的误区
       (1)不现实的期望,希望自动化能取代手工测试
       (2)缺乏测试实践经验,手工测试都做不好,或者经验积累不够,就尝试自动化,很难成功
       (3)期望自动化测试发现大量新缺陷,自动化只能保证测试执行效率,确保已有的问题不会再发生,发现新缺陷不是其目的
       (4)安全性错觉,认为进行了自动化测试的软件就是安全的、质量有保证的只有手工测试做好了,明确了测试的观察点,才能把自动化测试做好,所以手工测试是自动化测试的一个基础

Guess you like

Origin blog.csdn.net/m0_52650621/article/details/112908595