基本路径测试是将程序流程图转化为控制流图,通过分析控制结构的环路复杂性,进而找出路径的基本独立集,最终导出测试用例。

基本独立集:

从基本独立集导出的测试用例保证对程序中的每一条语句至少执行一次。

控制流图:

定义:

百度百科:    

    是一个过程或程序的抽象表现,是用在编译器中的一个抽象数据结构,由编译器在内部维护,代表了一个程序执行过程中会遍历到的所有路径。它用图的形式表示一个过程内所有基本块执行的可能流向, 也能反映一个过程的实时执行过程。

个人理解:

  控制流图是顶点和有向边的集合。

  顶点分为:

        1. 初始节点Vb和结束节点Ve。初始节点入度为零(即没有进入初始节点的边),结束节点出    度为零(即没有出去的边)。

        2. 判断节点D。(即出度为二,例如if语句,while语句等)、

        3. 顺序节点S。(表示一块连续的语句群)

几种结构:

基本路径测试算法 java代码_测试用例

程序流程图如何转化为控制流图:

基本路径测试算法 java代码_基本路径测试算法 java代码_02

图中R1 R2 R3 R4 是将整个平面分成四个互不重叠的封闭区域。

基本路径测试算法 java代码_测试用例_03

基本路径:

基本路径就是从Vb到v1,v2......Ve的一条路径。(不包含重复的任意一段路)

例如:

P1:vb,v1,v2,v1,v2,ve   不是一条基本路径,因为v1->v2走了两边,重复。

P2:vb,v1,v2,v3,v1,v3,ve   是一条基本路径,虽然多次出现v1,v3,但是并未重复。

环路复杂性:

上界。

计算方法:

1. 控制流图中的区域数量,例如上面图二被分为四个区域,因此复杂性为4。

2. 环路复杂性=E-N+2。E为控制流图中边的数量,N为节点数量。

3. 判定节点的数量加一。

例如:

基本路径测试算法 java代码_基本路径测试算法 java代码_04

导出测试用例:

从初始节点开始,沿着控制流图向结束节点前进。按照从简单到复杂依次找出所有路径。

基本路径测试算法 java代码_测试用例_05

图矩阵法:

        导出流图或者决定基本路径的过程都需要机械化或者自动化。为了开发这种软件,需要用到称为图矩阵的数据结构。

图矩阵:

        是一个正方形矩阵,它的大小(即行或列数)等于流图节点数。

        每行和每列都对应于标识的节点,矩阵项对应节点间的连接。

                

基本路径测试算法 java代码_软件测试_06