《3-4功能性测试回顾.ppt》由会员分享,可在线阅读,更多相关《3-4功能性测试回顾.ppt(49页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、功能性测试回顾功能性测试回顾内容n测试工作量n测试效率n测试的有效性n指南n案例研究 功能性测试回顾 n我们学习了很多测试技术,这些方法的共同之处就是将程序看作是将输入映射到输出的数学函数。根据研究输入值的属性演变成基于边界值的方法,等价类的方法和判定表的方法、因果图、正交测试等。四种有代表性的功能性测试方法 n边界值分析 n等价类划分 n判定表n因果图 边界值分析n基于边界的方法是通过标识输入程序输入变量的边界值域,确定四种技术:p边界值分析:单缺陷、正常值p健壮性测试:单缺陷、有异常情况p最坏情况测试:多缺陷、正常值p健壮最坏情况测试:多缺陷、有异常情况等价类划分n相似的输入、输出和操作,
2、我们定义了等价类:p弱一般:单缺陷、正常值p强一般:多缺陷、正常值p弱健壮:单缺陷、异常值p强健壮:多缺陷、异常值判定(决策)表n判定表解决了程序函数的逻辑依赖关系n判定表保证我们考虑了所有可能的条件值组合n判定表的完备性能够保证一种完备的测试因果图n根据需求规格说明书,分析因果关系n有助于用一个系统的方法选择出高效的测试用例集n额外的好处,就是可以指出规格说明的不完整性和不明确之处n因果图是一种形式语言,实际上是一种数字逻辑电路,但没有使用标准的电子学符号,而是使用了稍微简单点的符号每种测试方法的测试用例数曲线每种测试方法的精细程度n边界值分析p不识别数据或逻辑依赖关系,采用非常机械的方式生
3、成测试用例,很容易被自动化n等价类划分p注意到数据依赖关系和函数本身使用这些手段需要更多的考虑,还需要更多的判断和技巧p首先要考虑如何标识等价类,之后的处理也是机械的n判定表p要求测试人员既要考虑数据,又要考虑逻辑依赖关系p通常通过一遍尝试可能不能得到决策表的条件,但是如果有了一个良好的条件集合,所得到的测试用例就是完备的,在一定意义上还是最少的 每种测试方法的测试用例标识工作量趋势线测试标识工作量和测试执行工作量的折衷n容易使用的方法会生成大量测试用例,因此执行时间很长n如果将工作量投入到更精细的测试方法,则执行时间就会缩短 每种测试方法的测试用例数趋势线n图8-3 三角形问题的测试用例数趋
4、势线n图8-4 次日问题的测试用例数趋势线n图8-5 佣金问题的测试用例数趋势线n图8-6 三个问题的测试用例数趋势线内容n测试工作量n测试效率n测试的有效性n指南n案例研究 功能性测试的基本局限n未测试的功能漏洞n冗余测试p降低测试的效率(efficiency)次日问题最坏情况边界值分析npage79表5-3中125个测试用例p冗余n测试用例1到5通过5个不同年份中的1月1日检查次日问题n年对日历的这个部分没有关系,因此我们预期这种测试用例有一个就足够的n如果大致估计有“10倍”的冗余,那么可以预期压缩到25个测试用例p漏洞n有多个2月测试,但是都没有涉及28和29日,并且与闰年也没有联系n
5、围绕2月底和闰年,测试还有严重漏洞等价类划分和判定表方法对边界值分析方法的提高npage94次日问题的强等价类测试用例向正确的方向前进npage110表7-16判定表方法的测试用例测试了强等价类测试用例遗漏的可能性n所有这些分析支持两点结论p功能性测试有漏洞p使用更精细的手段能够缩小这些漏洞内容n测试工作量n测试效率n测试的有效性n指南n案例研究 测试的有效性(效果,effectiveness)n给定一个程序P,给定一种测试方法,用这种测试方法设计测试用例,研究所设计的测试用例能够怎样有效地找出程序P中的缺陷研究测试有效性的困难n这要假定我们知道程序中的所有缺陷n形成死循环的是,如果我们知道程
6、序中的所有缺陷,就会采取有针对性的措施n由于我们不知道程序中的所有缺陷,因此永远也不会知道给定方法所产生的测试用例是否能够发现这些缺陷解决方法n根据不同类型的缺陷反向研究n给出特定的一种缺陷,我们可以选择最有可能发现这种缺陷的测试方法(功能性测试和结构性测试)n如果结合最可能出现的缺陷种类的知识,最终会得到可提高措施有效性的实用方法n通过跟踪所开发软件中的缺陷的种类(和密度),还可以改进这种方法内容n测试工作量n测试效率n测试的有效性n指南n案例研究 与软件测试有关的故事n有一个醉汉在路灯下的人行道上爬行。当警察问他在干嘛时,他说他在找汽车钥匙。“你是在这里丢的吗?”警察问。“不,我是在停车场
7、丢的,但这里光线更亮。”n刻舟求剑故事对测试人员的重要启示n测试不大可能存在的缺陷是没有意义的n很好地了解最有可能发生的缺陷(或损害)种类,然后选择最有可能发现这类缺陷的测试方法,要更有效得多对可能存在的缺陷无法预知时的解决方法n利用程序的已知属性,选择处理这种属性的方法n在选择功能性测试方法时很有用的属性包括:p变量是否表示物理量或逻辑量?p在变量之间是否存在依赖关系?p是假设单缺陷,还是假设多缺陷?p是否有大量异常处理?选择功能性测试方法的初步的“专家系统”n如果变量引用的是物理量,可采用定义域测试和等价类测试 n如果变量是独立的,可采用定义域测试和等价类测试 n如果变量不是独立的,可采用
8、判定表测试 n如果单缺陷假设可保证,可采用边界值分析和健壮性测试 n如果多缺陷假设可保证,可采用最坏情况测试、健壮最坏情况测试和判定表测试 n如果程序包含大量异常处理,可采用健壮性测试和判定表测试n如果变量引用的是逻辑量,可采用等价类测试用例和判定表测试 选择功能性测试的判定表内容n测试工作量n测试效率n测试的有效性n指南n案例研究 假想的保险金计算程序n根据两个因素计算半年保险金p投保人的年龄p驾驶历史记录n保险金基本保险费率年龄系数安全驾驶折扣p年龄系数是投保人年龄的函数p如果投保人驾驶执照上的当前点数(根据交通违规次数确定)低于与年龄有关的门限,则给予安全驾驶折扣p驾驶人年龄范围为从16
9、岁到100岁p如果投保人有12点,则驾驶人的执照就会被吊销(因此不需要保险)p基本保险费率随时间变化,对于这个例子,是每半年500美元 年龄系数、门限点数与安全驾驶折扣的对应关系年龄和点数在最坏情况边界值测试下的取值保险金计算程序的最坏情况边界值测试n图8-7 最坏情况边界值测试的缺点与改进n遗漏了太多的问题描述p没有测试各种年龄门限p也没有测试点数门限n改进方法p通过更仔细地考虑年龄范围和点数范围,可以改进测试用例集合年龄和点数的集合nA1年龄:16年龄 25nA2年龄:25年龄 35nA3年龄:35年龄 45nA4年龄:45年龄 60nA5年龄:60年龄 100nP1点数0,1nP2点数2
10、,3nP3点数4,5nP4点数6,7nP5点数8,9,10,11,12表8-2 最坏情况值图8.8 保险金计算程序的最坏情况边界值测试用例n每个竖向集合(其中,年龄变量保持不变)有13个点,年龄变量的每个值(共有21个值)都有这样的一列,因此共有273个最坏情况边界值测试用例n这显然会存在严重冗余,因此需要引入等价类测试图8-9 保险金计算程序的弱和强等价类测试用例n年龄集合A1到A5和点数集合P1到P5,是等价类的自然选择n相应的等价类测试用例如图8-9所示p空心圆点对应强一般测试用例(多缺陷)p实心圆点对应弱一般测试用例(单缺陷)等价类测试的改进:判定表n等价类测试明显可以缓解冗余问题,但
11、是看起来仍然还有改进余地n为什么要针对A1测试所有点数类P2到P5?一旦超过点数门限,安全驾驶折扣就没有了n可以通过表8-3所示的扩展条目决策表解决这类依赖关系表8-3 保险金计算程序的判定表图8-10 保险金计算程序的判定表测试用例n比较图8-8和图8-10,一个过多,一个不足n希望找到某种折衷,而这正是醉汉找钥匙故事的意义思考保险金计算程序容易出现错误的地方n年龄范围的端点可能是很好的切入点,而这又把我们带回边界值模式n没有考虑16岁以下和100岁以上的年龄,这说明要考虑健壮边界值的一些元素n可能还需要检查安全驾驶折扣被取消的值,可能还包括保险不起作用的大于12的点数p请注意,对这些问题的回答没有出现在问题描述中,但是测试分析能够启发我们考虑这些问题的答案图8-11 保险金计算程序的最终(混合)测试用例n利用了通过应用程序的性质决定的所有三种形式测试的优点回顾n测试工作量n测试效率n测试的有效性n指南n案例研究