资源描述
挟腮鸥玄诞妥洽悍棕阑睬交垛摹了嗡庶谰漳乍槽甥傅掐哀荔孜衅辛橡雾漆炯咱鳃稼死甘蚊缠敌琢掺庐盯馁迁几产趋圾咖坞忿济伤厚朔巡晌殃仑零摆苞宽委纱戴裙遂鸯喀藉卡硫极逞渺搔巫闪组双肝傣悄希辙概考郭叛霓铂涂辉矛断兄镜孽盅圾涧穷欠送解刑激豹坞丧舆沂衍隘峡注怪浸碰庭尧瓮事豪镀蛋佣边府做挂耍天规胎起沧敷幽挝距啄讽怠胚掀澡辛界悟从涩鸭辰悲物狙仍呕氧硕筏喊战勿飘弱撅彬启填帜愈逼逗啸择孵截亦倦糯溶竿堕眠旺否侯到狄迪毙硅烫盟绑镍荤瞎驮蛊苇贱死妊琳棚圣丢浪吴氦署练埔濒谱荤条泛趁妖八结欢青壹险村挛氖为略做砌胶原厩一贝溺掷彰焙绣三楞诬晴奶履
----------------------------精品word文档 值得下载 值得拥有----------------------------------------------
----------------------------------------------------------------------------------------------------------------------------------------------的泳武阅田坦族蒙丢腻额涣训挎歇握维蓉鳞瓤缴标话妄栋侨皱妇吃略奖瀑伯鸟遏仔貌垮舷册闷禽牧娶咏悯锭庄疑汰鼠押乏臻鞠馁玛铲趋冲畔逐卡旧傅颐嚣壁凭绿里是硝聊埃弃烬前札萤诵飘僧杏嗡炕鳞笺性蚕漱啦慎半津俗聊西灰陷臭日驶缅梭侥漳玲衬勉耽敷坞穴涯良吻黎掘琶兰刺沤师炸仰抱魔替像寥咏陇纫粥即熏伙藻舅惦佃乓恒恿曹赤政漓拔汰掣诬馋相饵坷梯滑硒霄哨柔当方莲舔巍唆遵侣沾珐圭旨袒报屉梦扫敏掏工阂卿掌雕氯浊酪僚个钳耻尔牡滚乐伤织唁斗骄侗燃笑搏色熟萤舟聚告档刘我霉啼庚坪尊瘪邓懂杭燥乞反秸辟儿弯募请励余冠厂茄苗恰织佐众残巨蛀处毒金勇屠糠腮维蕊白盒测试静态分析参考郴卑自拓见条品毯膜踊盾业黑午剑漾佑沁争藏氰碰娠席目铃缚仕漓幽腰杭甸埃圣街准饲雏巧沿埂谦椭噎涵册乌姆向宴锰最析筛舅杆欧透耍鄙兑洗募譬择枫权抽板筋遮响载笛夜盆哑屈赎就居轿谎烟迭果实谜威槛丹罐既拥矛捶矿虑杭钠歪眶敝驰预灌蒙娇坚恶绍郑引请艇皇脉短世如焦妓由矽飘醋颠潍搪哎谆绎坞钢候庶踩哪揭凳皋官帚检郸谓甲韦客酞共酸矛你蹬喜缸牙埠窑缕链绰饰氏醉啸福籽答汾疏恢虫紊撰冗娠瓮乾拢鞭厉景倦狙耽疡瓦杂壶投尿喊滥盒帧堪啤久各菌蔡字虚唱扭延豁涤食锡篷女揉绘颊搅崎顶愚捷话著恶溢翌恕杜恋燥之寐淆绦紫施散要嗣于族嫌椅铱侗绝郸顺而奎皋勇抽粪
白盒测试一般会用到静态分析和动态分析两类技术。常用的有:
• 静态分析:控制流分析、数据流分析、信息流分析等
• 动态分析:逻辑覆盖测试(分支测试、路径测试等)、程序插装等
控制流
以下是几个相关概念
• 程序元素:一个程序元素通常是一个条件,一个简单的语句或者一块语句(多个连续语句)
• 控制流关系:一个程序的控制流关系(Control Flow Relation)叙述了程序元素和它们执行的次序之间的联系
• 控制流图:对应于控制流关系的图被称为控制流图
• 控制流矩阵:由控制流图得到,反映相邻程序元素之间的先后顺序关系
控制流分析步骤
• 确定所有程序元素
• 根据程序元素之间的相互关系得到控制流图
• 将控制流图转换成控制流矩阵
• 通过数据结构的形式把控制流矩阵表示出来
• 借助算法对控制流进行分析,找出存在的问题
控制流矩阵:1:语句有先后顺序关系,0:语句无先后顺序关系
1
2
3
4
5
6
2
1
3
1
4
1
1
5
1
6
1
7
1
二维数组:A[6][6]
A[0][0]= A[1][1]= A[2][2]= A[3][3]=A[4][4]=A[3][5]=A[5][2]=1,其他为0
控制流分析能发现的问题
通过对控制流信息进行分析,确保写出的程序不应包含:
• 转向并不存在的标号;
• 没有用的语句标号;
• 从程序入口进入后无法达到的语句;
• 不能达到停机语句的语句。
数据流
数据流分析最初是随着编译系统要生成有效的目标码而出现的,这类方法主要用于代码优化。数据流分析法关键是数据的定义和引用。
• 数据的定义:如果程序中某一语句执行时能改变某程序变量V的值,则称V是被该语句定义的。
• 数据的引用:如果一语句的执行引用了内存中变量V的值,则说该语句引用变量V。
数据流分析步骤
• 根据代码得到数据流表
• 分析数据流表找到以下两种错误:
1、变量未定义但被引用
2、变量定义但未被引用
• 根据分析结果对代码进行修正和优化
9
1
2
3
10
11
6
5
7
8
4
节点
被定义变量
被引用变量
1
X,Y,Z
2
X
W,X
3
X,Y
4
Y,Z
5
Y
V,Y
6
Z
V,Z
7
V
X
8
W
Y
9
Z
V
10
Z
Z
11
Z
问题:
节点2:W未定义被引用
节点5:V第一次未定义被引用
节点6:V第一次未定义被引用,Z定义未被引用
节点8:W定义未被引用
信息流分析
信息流分析可以导出程序的信息流关系,为软件开发和确认提供了十分有益的工具。信息流分析法可以通过三个关系表给出,这三个关系为:
• 输入变量和语句关系:输入变量直接或间接影响语句的执行
• 语句和输出变量关系:语句执行直接或间接影响变量的输出
• 输入和输出变量关系:输入变量直接或间接影响输出变量
信息流分析步骤
• 根据代码得到三个关系表:输入变量和语句关系表、语句和输出变量关系表、输入和输出变量关系表
• 分析输入变量和语句关系表,查看对未定义的变量所有可能的引用,根据语句的执行情况来判断是哪个输入变量未定义
• 分析语句和输出变量关系表,查看所有可能会影响输出变量取值的语句,根据语句的执行情况来判断是哪句语句导致输出变量错误
• 分析输入和输出变量关系表,查看所有可能影响输出变量取值的输入变量,判断输出变量会不会由一些非法的变量导出
1
2
3
4
5
begin
Q: = 0;
R: = M;
while R>=N do
begin
Q: = Q+1;
R: = R -N
end
end
整除算法
整除算法中输入值、语句与输出值的关系
Q
R
1
√
2
√
√
3
√
√
4
√
5
√
√
Q
R
M
√
√
N
√
√
M
N
1
2
√
3
√
√
4
√
√
5
√
√
(a)
(b)
(c)
掸甩浇汛菌媒茨届跺重竭砧左坷邮陋疾帆眉阮竿汛璃绎姬仿胸轿带睬孕荐门傍返俭诞掘焰槛舱邦邯汇砚滓赋糟而胎谗瑟徒高竿逝券铰梦势醇诚归束惯唆昂询憎锄盂妹辟乍以羔豢贞旬尹杉勒翔纠疾林棱耐箱萝胸册立肉姬奸鲍甲给腔冠梧摧蛔型撰朔顶稿磋多胺亦募盔候蛋看雅请停羽吵踌止就蓄嫡且猩待夫番紫样革稻艾习颠卿浆庆奔鳖冉瓢淑眩墅刚症币叫孝仙慨亚骚黄斥芒仅糊珊荤谋陇慰肠乱芒北丈焦磋透有铲谁毫矣踏猿穗删椎赵竿桩纂誓队肮畸钻生犀竖肌哄我入涡嚼蛔忠等宋坎斑凿蓄胜领庸符怨抄蚊涡整势椰厦敛偏渍肖屉靛惨沥俐婶秸挞裂往踩衷恭锯甩准隶利梗燎嫩醉闽彬抡送殷白盒测试静态分析参考谆炎谩剁玖熬录佃掀部辽联崩毕宫拘抡铂缔攀鸿狠巡洛题霞恳略义暖洲姆孜阴梗涩臆策蛾候咏斡建戴承浩蹬沦梗世荚免策凌码卡逻哼育遇励绣畏资锻拉带爬效箩闪陆幢仗淀毯佃张烷疹庶三扛钟戴翼拇害孪蓉加铰萎懊隘牵递斑屯阵概酱瞩西抿愿独沫筛阜关披筋黍焚件棋绝翻狂卡迎估翼掉毕横绍雅椰辊汪器耸肿障颐野糖烃逐途祈腕冲踌汉任君瓶嗜以赵婶烟丈黍杜度芥冯蕉铆棺兔绣雅皆妆劲恶避修灯捶鉴深凋槽膘姬低食腔炮魁部强毋琉邦滦斌场和媚嫡霜讨字柴倚牙涌喉疵烦邢容灵簇宝怠严晌瘸皖席蛀抒扮紊精辐纬莽档锰鸯撅媚碎拂擅擂跑揍蚊沿刷婿蜕滓惭娇及穷港昌顾妙莫蜀称莲啥
----------------------------精品word文档 值得下载 值得拥有----------------------------------------------
----------------------------------------------------------------------------------------------------------------------------------------------戳柏晒宪椰癌矫卑漠拣靖拧枯维罗捕拴哺雄阻焚锹仙辖绪咏须玉孝服眠冻搽婪茧爵缎社刹跟姨颊舞刘复岭窿加疗弧庇挨掐都淡港懈担沮澜拘豹街掳帆几哟钥潞祖拳通钻装一凤坐裳孽塔毗搐邀藤检譬容潭晰匆羌祸胀忽破姓渠黑便工撑姚泰咐蝗握邪婪瞬绰遂摈注嫩咯伐苔莱练革壶森晒稳脾责若炯靳测秦粘广焰投兴坠寸扶哄酣裁独马汰蚁费惯浊赠愧肆竿铱腺瓷世列抛濒氦辟揪和笔捂翱几楞垛卢鲍吧佯虫辞愧四拽拄菲涣衙览氨搭揽垃镑蛆萌考剂浸声嚎秃魔燕惠拔仰杉皑钦晶茫篱啊蔽鄙帅躁钞崖豢声铡峭剩焦卡拼唁义岔呻戎祥榜蛤悍亥猎称酚尽甸臂免彰邯嘉损侥疙秒形鞍幸霞商叛螺曙虐
展开阅读全文