基于数据流测试用例设计-软件测评师题目

张开发
2026/4/28 11:15:15 15 分钟阅读

分享文章

基于数据流测试用例设计-软件测评师题目
数据流测试用例貌似没找到相关资料可能是软件测评师考试新增的题目我研究了教材做了此分享希望对你有帮助定义、案例取自《软件测评师 2021版》后文有来自希赛老师的题目以及我的拆解、答案。文中只讲全定义测试、全计算测试两种其他的自行类推定义代码示例分析变量定义、谓语使用、计算使用到表格中画出数据流向图定义-使用图主要汇总出测试条件测试类型全定义-测试覆盖全定义测试每个变量的定义到计算谓语使用、计算使用至少执行一次的路径测试示例代码只有a变量a被谓语使用且被计算使用那么全定义测试只需要一条测试用例要么a-谓语使用要么a-计算使用注意是二选一要求只是定义被使用了就行一定不要被“覆盖”这种词搞混淆说人话就是上面的定义-使用图6.15每个变量从定义到使用只要一条路径作为测试用例就行比如变量Discrim原本有3个定义-使用路径但是我们只需要选其中一条路径即可比如选1-4ABR1R2同理直选一个路径就行值得注意的是Is_Complex这个变量有两次定义因为要覆盖所以两次定义都得作为测试条件这点可能很多人容易漏那么汇总下来就是下面的表格全定义测试的测试覆盖项重点看子路径子路径由数据流图得出测试条件变量定义-使用对子路径测试覆盖项TCOND1A0-10-1TCOND2B0-10-1TCOND3C0-10-1TCOND4Discrim1-41-2-3-4TCOND5Is_Complex5-95-8-9TCOND6Is_Complex7-97-8-9TCOND7R110-1310-11-12-13TCOND8R211-1311-12-13我们根据上表只要子路径能合并执行下去的就作为一个测试用例因此全定义 测试用例 为 2条特别注意上图圈起来的不是唯一解法还可以这样总之无论你怎么合并路径至少都是 2条测试用例这2条用例就是最优解路径无法再合并了OK根据上图我们得到两条测试用例补全输入值、预期值即可全计算覆盖每个变量到所有计算都要测试示例代码A变量A被计算一次又被其他分支计算一次还在另一个地方计算一次那么全定义测试A变量 需要 3 条测试用例A 的全计算使用测试用例有3条覆盖项Discrim有 2 条测试用例以此类推画出覆盖测试表重点也是子路径需参考数据流图上图覆盖项是 13 个合并能合并的子路径作为一条测试用例如下图测试覆盖项1-11是一条路径全部覆盖到了所以作为一条测试用例剩下的测试覆盖项12TCOVER12 单独作为一条测试用例因此全计算使用测试用例为2条视频里老师题目的拆解老师教学里的题目做“定义-使用对”表拿到题目后按的 定义-使用对进行拆解为表格定义-使用对计算使用谓词使用测试条件0-2a0-2b0-3a0-5b0-6c0-7c3-6max5-6max3-8max5-8max7-8max需要注意的是步骤1 的int max不是定义max只有在3和5的地方max被赋值才算是被定义画出数据流图这个图必须画因为后面对覆盖项进行拆分子路径时需要参考这个图全定义测试用例就是把上面的拆解表格按变量维度进行重新排版下文都会省略测试条件编号、测试覆盖项编号等数据重点在于讲解如何计算最小用例测试条件变量定义-使用对测试覆盖项a0-20-3b0-20-5c0-60-7max3-65-63-85-87-8根据前面我们讲过的“全定义测试”不管是谓语使用、计算使用只算其中一个就好所以我们只需要 6 个覆盖项如下图圈起来的说明为什么max要三条因为max有三处定义每处定义都必须被测试到把6个覆盖项 补全一下子路径根据数据流图得到测试条件变量定义-使用对子路径测试覆盖项a0-20-1-2b0-20-1-2c0-60-1-2-3-60-1-2-4-5-6可选max3-63-65-65-67-87-8把子路径能合并的合并尽可能以最长路径来做这样测试用例最少根据下图2个路径就覆盖了所有测试项因此测试用例为 2个上面注意 max 7-8是可以接在max 3-6之后也就是能在一条用例里看数据流图6后面走到7是通的OK我们只需要在上表补全 输入输出 就得到完整测试用例表编号变量定义-使用对子路径子路径从数据流图中得到输入a输入b输入c输出max1a,b0-20-1-2c0-60-1-2-3-6max3-63-6max7-87-82max5-65-6全计算使用所有计算使用的都要覆盖如图总共 6个 覆盖项划出变量的覆盖项重点在于写出子路径根据数据流图得到因为下面要根据子路径看哪些能合并到一条用例中编号变量定义-使用对子路径输入a输入b输入c输出max1a0-30-1-2-3b0-50-1-2-4-5c0-70-1-2-4-5-6-7max3-83-6-8注意这里不能是3-6-7-8因为7有另一个max定义max5-85-6-8注意这里不能是5-6-7-8因为7有另一个max定义max7-87-8观察哪些可以合并为一条用例比如下面这样能合并为 3条 测试用例注意合并方法不唯一但是结果一定是 3条用例如果3说明合并少了3条是最优解下图为另一种合并方法OK根据上表组织为测试用例表单3条补全输出输出即可编号变量定义-使用对子路径输入a输入b输入c输出max1a0-30-1-2-3max3-83-6-82b0-50-1-2-4-5max5-85-6-83c0-70-1-2-4-5-6-7max7-87-8以上答案跟老师讲的一致按理逻辑不会有错

更多文章