# addressbook程序需要登录 # case.login(driver, "admin", "123") # seq_script_addressbook(driver,tevent,pathT,induval) ################################### # phpcss程序需要登录 # case.loginForPhpCss(driver, "admin", "admin") # seq_script_phpcss(driver, tevent, pathT, induval) ################################### endTime = datetime.now() usertime = endTime - startTime print 'endTime - startTime运行该测试用例用时:\t', endTime - startTime recordFun.recordTestCaseRunTime(usertime) if __name__ == '__main__': SM = obtain_efsm_info2.obtain_efsm() #注意对应的模型是哪个 print "%s has %s states and %s transitions" % (SM.name, len( SM.stateList), len(SM.transitionList)) # pathT = ['T3', 'T101', 'T102', 'T104'] # pathT = ['T19', 'T22', 'T23', 'T89', 'T30', 'T31', 'T30', 'T31', 'T90', 'T39', 'T40', 'T41', 'T42', 'T80'] # 'T21','T20', 'T22'中的T20是人工加的,序列能否顺利执行,还取决与模型建的准不准确,状态完不完整 # 还要注意是几个输入变量 # 下拉列表的,不能用clear后填值 # induval = ['ouh2RA', '37409t', '2qFVBC'] # induval = ['8tn8X6', '4Mz63Q'] # pathT=['T1', 'T3', 'T6', 'T7', 'T11', 'T22', 'T4'] # pathT = ['T1', 'T3', 'T6', 'T7', 'T8', 'T4'] # induval = ['rB9m6O', '0RW02i', '7t58M4', 'bDxdsI', 'qYky7B', 'w00h1a'] # pathT = ['T1', 'T3', 'T8', 'T8', 'T9', 'T10', 'T4'] # induval = ['kl3HqN', 'sLu3a8', 'uZRQq7', 'luVSf9', '8eM4Uk', 'tRQaRi', 'S3lp4u', 'mEhAd9', 'c50tyY', 'Nt5Fe3'] # pathT=['T1', 'T3', 'T11', 'T13', 'T13', 'T22', 'T8', 'T8', 'T5', 'T6', 'T7', 'T6', 'T7', 'T4']
if p_solve == 0: afterLocalUnCoverPath.append(p) endTime = datetime.now() usertime = endTime - startTime print "局部搜索用时:", usertime recordFun.recordLocalUserTime(usertime) if len(afterLocalUnCoverPath) == 0: overgame = 1 else: recordFun.recordLocalUnCoverPath(afterLocalUnCoverPath) return overgame, testdata if __name__ == '__main__': import obtain_efsm_info2 SM = obtain_efsm_info2.obtain_efsm() SM.allPathNum() pop = [[ 'T27', 'T28', 'T29', 'T90', 'T41', 'T42', 'T43', 'T44', 'T45', 'T91', 'T51', 'T52', 'T53', 'T92', 'T82' ], ['T27', 'T28', 'T29', 'T32', 'T33', 'T34', 'T35', 'T36', 'T79'], [ 'T3', 'T87', 'T16', 'T17', 'T18', 'T14', 'T15', 'T88', 'T22', 'T23', 'T89', 'T28', 'T29', 'T90', 'T80' ], ['T11', 'T14', 'T15', 'T12', 'T13', 'T16', 'T17', 'T18', 'T77'], [ 'T11', 'T16', 'T17', 'T18', 'T14', 'T15', 'T12', 'T13', 'T14', 'T15', 'T77' ], ['T3', 'T87', 'T12', 'T13', 'T77'], ['T19', 'T24', 'T25', 'T26'], ['T54', 'T55', 'T55', 'T82'], [
def main(): SM = obtain_efsm_info2.obtain_efsm() popsize, pc, pm, Max = config.getPopParameter() startTime = datetime.now() pop = generate_seq_ga_check.initialpop_feasible(popsize, SM) ''' pop =[['T27', 'T28', 'T29', 'T90', 'T41', 'T42', 'T43', 'T44', 'T45', 'T91', 'T51', 'T52', 'T53', 'T92', 'T82'], ['T27', 'T28', 'T29', 'T32', 'T33', 'T34', 'T35', 'T36', 'T79'], ['T3', 'T87', 'T16', 'T17', 'T18', 'T14', 'T15', 'T88', 'T22', 'T23', 'T89', 'T28', 'T29', 'T90', 'T80'], ['T11', 'T14', 'T15', 'T12', 'T13', 'T16', 'T17', 'T18', 'T77'], ['T67', 'T68', 'T69', 'T68', 'T69', 'T72', 'T73', 'T74', 'T85'], ['T11', 'T16', 'T17', 'T18', 'T14', 'T15', 'T12', 'T13', 'T14', 'T15', 'T77'], ['T3', 'T87', 'T12', 'T13', 'T77'], ['T19', 'T24', 'T25', 'T26'], ['T54', 'T55', 'T55', 'T82'], ['T3', 'T87', 'T12', 'T13', 'T14', 'T15', 'T12', 'T13', 'T14', 'T15', 'T77'], ['T59', 'T62', 'T63', 'T62', 'T63', 'T64', 'T65', 'T66', 'T84'], ['T11', 'T12', 'T13', 'T77'], ['T46', 'T47', 'T48', 'T47', 'T48', 'T49', 'T50', 'T51', 'T52', 'T53', 'T81'], ['T67', 'T68', 'T69', 'T68', 'T69', 'T72', 'T73', 'T74', 'T85'], ['T19', 'T20', 'T21', 'T78'], ['T59', 'T60', 'T61', 'T84'], ['T38', 'T43', 'T44', 'T45', 'T80'], ['T19','T24','T25','T26'], ['T27', 'T28', 'T29', 'T28', 'T29', 'T28', 'T29', 'T28', 'T29', 'T79'], ['T46', 'T51', 'T52', 'T53', 'T47', 'T48', 'T51', 'T52', 'T53', 'T49', 'T50', 'T92', 'T82'], ['T27', 'T28', 'T29', 'T32', 'T33', 'T34', 'T35', 'T36', 'T79'], ['T46', 'T47', 'T48', 'T47', 'T48', 'T49', 'T50', 'T51', 'T52', 'T53', 'T81'], ['T1', 'T2', 'T75'], ['T11', 'T12', 'T13', 'T88', 'T78'], ['T11', 'T14', 'T15', 'T12', 'T13', 'T16', 'T17', 'T18', 'T77'], ['T59', 'T60', 'T61', 'T84'], ['T19', 'T22', 'T23', 'T22', 'T23', 'T89', 'T32', 'T33', 'T37', 'T79'], ['T1', 'T2', 'T75'], ['T38', 'T39', 'T40', 'T80'], ['T3', 'T4','T5', 'T8','T9', 'T10']]''' '''pop = [ ['T27', 'T28', 'T29', 'T90', 'T41', 'T42', 'T43', 'T44', 'T45', 'T91', 'T51', 'T52', 'T53', 'T92', 'T82'], ['T27', 'T28', 'T29', 'T32', 'T33', 'T34', 'T35', 'T36', 'T79'], ['T3', 'T87', 'T16', 'T17', 'T18', 'T14', 'T15', 'T88', 'T22', 'T23', 'T89', 'T28', 'T29', 'T90', 'T80'], ['T11', 'T14', 'T15', 'T12', 'T13', 'T16', 'T17', 'T18', 'T77'], ['T11', 'T16', 'T17', 'T18', 'T14', 'T15', 'T12', 'T13', 'T14', 'T15', 'T77'], ['T3', 'T87', 'T12', 'T13', 'T77'], ['T19', 'T24', 'T25', 'T26'], ['T54', 'T55', 'T55', 'T82'], ['T3', 'T87', 'T12', 'T13', 'T14', 'T15', 'T12', 'T13', 'T14', 'T15', 'T77'], ['T67', 'T68', 'T69', 'T68', 'T69', 'T72', 'T73', 'T74', 'T85'], ['T19', 'T20', 'T21', 'T78'], ['T59', 'T60', 'T61', 'T84'], ['T38', 'T43', 'T44', 'T45', 'T80'], ['T46', 'T51', 'T52', 'T53', 'T47', 'T48', 'T51', 'T52', 'T53', 'T49', 'T50', 'T92', 'T82'], ['T46', 'T47', 'T48', 'T47', 'T48', 'T49', 'T50', 'T51', 'T52', 'T53', 'T81'], ['T1', 'T2', 'T75'], ['T11', 'T12', 'T13', 'T88', 'T78'], ['T19', 'T22', 'T23', 'T22', 'T23', 'T89', 'T32', 'T33', 'T37', 'T79'], ['T38', 'T39', 'T40', 'T80'], ['T56', 'T57', 'T58','T94'], ['T3', 'T4', 'T5', 'T8', 'T9', 'T10'], ['T56','T57','T58'], ['T4 6', 'T47', 'T48', 'T47', 'T48', 'T49', 'T50', 'T51', 'T52', 'T53', 'T81'], ['T59', 'T62', 'T63', 'T62', 'T63', 'T64', 'T65', 'T66', 'T84'], ]''' # pop = [ # ['T3', 'T27', 'T28', 'T30', 'T31', 'T79'], # ['T5', 'T67', 'T37', 'T38', 'T37', 'T39'], # ] strf = " 初始种群" recordFun.recordInitalPop(strf, pop) print " 种群为: " for sub in pop: print sub testdata, M = execute.gdata(pop, SM) # 为序列产生数据,执行测试用例,获取评估矩阵M print " 通过M获得所有敏感路径入口点覆盖标识cover_flag及敏感路径完全覆盖标识flag" flag, cover_flag = execute.table_handle(M) # print "敏感路径入口点覆盖标识cover_flag = ",cover_flag # print "敏感路径完全覆盖标识flag = ", flag coverage, Uncover_path_list = execute.table_coverage(M) ######################## 以上为评估初始种群############################ iteration = 0 while True: recordFun.recordPathCover(iteration, coverage, Uncover_path_list) recordFun.recordAllM(iteration, M) if iteration > Max: break # 先判断种群是否覆盖所有入口点 print " 敏感路径入口点覆盖标识cover_flag = ", cover_flag print " 敏感路径完全覆盖标识flag = ", flag if cover_flag == 1: # 如果覆盖了所有敏感路径的入口点 if flag == 1: # 在判断是否覆盖所有的敏感路径 testcase = zip(pop, testdata) # 测试用例等于序列+数据 print testcase break else: # 进行局部搜索 print " 第", iteration, "代" + "进行局部搜索" print " 进入局部搜索的pop", pop print " 进入局部搜索的testdata", testdata print " 进入局部搜索的M", M print " 进入局部搜索的Uncover_path_list", Uncover_path_list # 局部算法接口在这调用 print "Uncover_path_list" # overgame,testdata = local_search_alg.Local_search_for_SA(pop,testdata,M,Uncover_path_list,SM) # overgame,testdata = local_search_alg.Local_search_for_HC(pop,testdata,M,Uncover_path_list,SM) overgame, testdata = local_search_alg.Local_search_for_GA( pop, testdata, M, Uncover_path_list, SM) if overgame == 1: testcase = zip(pop, testdata) # 测试用例等于序列+数据 print testcase break # 退出while ,执行下面的时间记录代码 else: tip = " 搜索失败,结束" print tip return tip #退出整个程序,不会执行下面的时间记录代码了 else: print " 继续全局GA,搜序列" pop, M, testdata, cflag = generate_seq_ga_check.GA( pop, pc, pm, popsize, SM, M, testdata) if cflag == 1: testcase = zip(pop, testdata) # 测试用例等于序列+数据 print testcase break else: flag, cover_flag = execute.table_handle(M) coverage, Uncover_path_list = execute.table_coverage(M) iteration += 1 #得到新的flag, cover_flag后,这里会直接到while True那句话再开始 endTime = datetime.now() usertime = endTime - startTime