2)控制流图:将流程图映射到一个相应的流图(假设流程图的菱形决定框中不包含复合条件)。
结点:在流图中,每一个圆,称为流图的结点,代表一个或多个语句。一个处理方框序列和一个菱形决测框可被映射为一个结点;
边:流图中的箭头,称为边或连接,代表控制流,类似于流程图中的箭头。一条边必须终止于一个结点,即使该结点并不代表任何语句(例如:if-else-then结构)。
区域:由边和结点限定的范围称为区域。计算区域时应包括图外部未闭合的范围
周环比控制流图:
第二步:计算圈复杂度
圈复杂度(Cyclomatic complexity)(环形复杂度):
*是一种为程序逻辑复杂性提供定量测度的软件度量;
*当该度量用于基本路径测试方法,计算所得的值给出了程序基本集的独立路径数量,确保所有语句至少执行一次而必须进行测试数量的上界。
*有3种方法计算圈复杂度:
1)V(G) =流图中区域个数(由边和结点限定的范围称为区域。)
2)V(G) =V(G)=E-N+2,E是流图中边的数量,N是流图中结点的数量
3)V(G)=P+1,P是流图G中判定结点的数量
周环比控制流图圈复杂度计算:1)区域个数是14;2)V(G)=33-21+2=14;3)V(G)=13+1=14
历史最佳控制流图复杂度计算:1)区域个数是11;2)V(G)=24-15+2=11;3)V(G)=10+1=11
第三步:导出用例
根据圈复杂度的算法,可以得出对应数量的独立的路径,一条独立路径是指和其他的独立路径相比,至少引入一个新处理语句或一个新判断的程序通路。V(G)值正好等于该程序的独立路径的条数。
周环比用例:
路径1:1-21卖家表不存在
结果:提示卖家表不存在
路径2:1-2-21卖家表为空,无数据
结果:不做周环比处理
路径3:1-2-3-2-21前提:单条数据
卖家uin、历史最佳flag不存在
结果:该条数据不做历史最佳处理
路径4:1-2-3-4-5-6-7-9-14-19-20-2-21前提:单条数据
卖家表、卖家uin、周环比flag存在,访客数周环比flag满足要求,访客数周环比小于等于0,支付金额数、购买转化率周环比flag都不满足要求。
结果:只发送访客数周环比降低提醒
路径5:1-2-3-4-5-6-8-9-14-19-20-2-21前提:单条数据
卖家表、卖家uin、周环比flag存在,访客数周环比flag满足要求,访客数周环比大于0,支付金额数、购买转化率周环比flag都不满足要求。
结果:只发送访客数周环比提高提醒
路径6:1-2-3-4-9-10-11-12-14-19-20-2-21前提:单条数据
卖家表、卖家uin、周环比flag存在,访客数周环比flag和购买转化率周环比flag不满足要求,支付金额数周环比flag满足要求,支付金额数周环比小于0
结果:只发送支付金额数周环比降低提醒
路径7:1-2-3-4-9-10-11-13-14-19-20-2-21前提:单条数据
卖家表、卖家uin、周环比flag存在,访客数周环比flag和购买转化率周环比flag不满足要求,支付金额数周环比flag满足要求,支付金额数周环比大于0。
结果:只发送支付金额数周环比提高提醒
路径8:1-2-3-4-9-14-15-16-18-19-20-2-21前提:单条数据
卖家表、卖家uin、周环比flag存在,访客数周环比flag和支付金额数周环比flag都不满足要求,购买转化率周环比flag满足要求,购买转化率周环比大于0
结果:只发送购买转化率周环比提高提醒
路径9:1-2-3-4-9-14-15-16-17-19-20-2-21前提:单条数据
卖家表、卖家uin、周环比flag存在,访客数周环比flag和支付金额数周环比flag都不满足要求,购买转化率周环比flag满足要求,购买转化率周环比小于等于0
结果:只发送购买转化率周环比降低提醒
路径10:1-2-3-4-5-9-10-11-12-14-15-16-17-19-20-2-21前提:单条数据
卖家表、卖家uin、周环比flag存在,访客数周环比flag、支付金额数周环比flag、购买转化率周环比flag都满足要求;访客数周环比不存在,支付金额周环比、购买转化率周环存在,且小于0。
结果:访客数周环比不存在时,只发送支付金额周环比和购买转化率周环比降低提醒。
路径11:1-2-3-4-5-6-7-9-10-14-15-16-17-19-20-2-21前提:单条数据
卖家表、卖家uin、周环比flag存在,访客数周环比flag、支付金额数周环比flag、购买转化率周环比flag都满足要求;访客数周环比和购买转化率周环比都存在,且小于0支付金额周环比不存在。
结果:支付金额周环比不存在时,只发送访客数周环比和购买转化率周环比降低提醒。
路径12:1-2-3-4-5-6-7-9-10-11-12-14-15-19-20-2-21前提:单条数据
卖家表、卖家uin、周环比flag存在,访客数周环比flag、支付金额数周环比flag、购买转化率周环比flag都满足要求;访客数周环比和支付金额周环比都存在,且小于0购买转化率周环比不存在。
结果:购买转化率周环比不存在时,只发送支付转化率周环比和购买转化率周环比
路径13:1-2-3-4-9-14-19-2-21前提:单条数据
卖家表存在、周环比flag存在,卖家uin不存在,访客数周环比flag、支付金额数周环比flag、购买转化率周环比flag都不满足要求;
第二条数据:卖家表、卖家uin、周环比flag存在;访客数周环比flag、支付金额数周环比flag、购买转化率周环比flag都满足要求;访客数周环比、支付金额周环比、购买转化率周环比都小于等于0
结果:不做周环比处理
第二条数据发送访客数、支付金额数和购买转化率周环比都降低提醒
路径14:1-2-3-4-5-6-8-9-14-19-20-2-3-4-5-6-7-9-14-19-20-2-21前提:多条数据(两条)
卖家表、卖家uin、周环比flag存在;访客数周环比flag满足要求,支付金额数周环比flag和购买转化率周环比flag都不满足要求;第一条数据访客数周环比大于0,第二天数据访客数周环比小于0
结果:第一条数据发送访客数周环比提高提醒;第二条数据发送访客数周环比降低提醒