欢迎您访问起点作文网,请分享给你的朋友!

当前位置 : 首页 > 范文大全 > 实用范文

函数最值的应用(6篇)

来源: 时间:2025-10-20 手机浏览

函数最值的应用篇1

关键词:函数;定义域;重要性

中图分类号:G712文献标识码:A文章编号:1002-7661(2012)09-033-01

函数是高中数学的重点和难点,它贯穿于整个高中数学教学的始终。而函数的定义域是构成函数的两大要素之一,它似乎是非常简单的,然而在解决问题中稍不留神,常常会引人走进误区。因此,在解函数题中要特别强调定义域对解题结论的作用与影响。

一、函数关系式与定义域

函数关系式包括定义域和对应法则,所以在求函数的关系式时必须要考虑所求函数关系式的定义域,否则所求函数关系式可能是错误。如:

例1:某单位计划用长为90cm,宽为48cm的长方形铁皮做一个无盖的容器,先在四角分别截去一个小正方形,然后把四边翻转的角,再焊接而成。求该容器的体积V与容器高x的函数关系式?

解:设容器的高为x米,则容器底的宽为(48-2x)米,长为(90-2x)米。

由题意得:

故函数关系式为:.

如果解题到此为止,则本题的函数关系式还欠完整,缺少自变量的范围。也就说学生的解题思路不够严密。因为当自变量24时,V,这与实际问题相矛盾,所以还应补上自变量的范围:

即:函数关系式为:()

这个例子说明,在用函数方法解决实际问题时,必须要注意到函数定义域的取值范围对实际问题的影响。若忽略这一点,就体现出学生思维缺乏严密性。若注意到定义域的变化,就说明学生的解题思维过程体现出较好思维的严密性。

二、函数最值与定义域

函数的最值是指函数在给定的定义域区间上能否取到最大(小)值的问题。如果不注意定义域将会导致最值的错误。如:

三、函数值域与定义域

函数的值域是该函数全体函数值的集合,当定义域和对应法则确定,函数值也随之而定。因此在求函数值域时,应注意函数定义域。如:

例2:求函数的值域.

错解:令

故所求的函数值域是.

剖析:经换元后,应有,而函数在[0,+∞)上是增函数,

所以当t=0时,ymin=.故所求的函数值域是[,+∞).

以上例子说明,变量的允许值范围是何等的重要,若能发现变量隐含的取值范围,精细地检查解题思维的过程,就可以避免以上错误结果的产生。

四、函数单调性与定义域

函数单调性是指函数在给定的定义域区间上函数自变量增加时,函数值随着增减的情况,所以讨论函数单调性必须在给定的定义域区间上进行。如:

例3:指出函数的单调区间.

解:因为对数函数的真数要大于0,所应先求出函数的定义域:

函数定义域为.

令,知在上时,u为减函数,在上时u为增函数。

又.

函数在上是减函数,在上是增函数。

决即函数的单调递增区间,单调递减区间是。

如果在做题时,没有在定义域的两个区间上分别考虑函数的单调性,就说明学生对函数单调性的概念一知半解,没有理解,在做练习或作业时,只是对题型,套公式,而不去领会解题方法的实质,也说明学生的思维缺乏深刻性。

五、函数奇偶性与定义域

函数最值的应用篇2

关键词:二次函数、单调性、最值

中图分类号:G633.6

在初中教材中,对二次函数作了较详细的研究,由于初中学生基础薄弱,又受其接受能力的限制,这部份内容的学习多是机械的,很难从本质上加以理解。进入高中以后,尤其是高三复习阶段,要对他们的基本概念和基本性质(图象以及单调性、奇偶性、有界性)灵活应用,对二次函数还需再深入学习。下面我把自己在多年的职高数学教学中对二次函数在高一数学中具体应用做一个小结。

一、可以帮助学生进一步深入理解函数概念

初中阶段已经讲述了函数的定义,进入高中后在学习集合的基础上又学习了映射,接着重新学习函数概念,主要是用映射观点来阐明函数,这时就可以用学生已经有一定了解的函数,特别是二次函数为例来加以更深认识函数的概念。二次函数是从一个集合A(定义域)到集合B(值域)上的映射:AB,使得集合B中的元素与集合A的元素X对应,记为这里表示对应法则,又表示定义域中的元素X在值域中的象,从而使学生对函数的概念有一个较明确的认识,在学生掌握函数值的记号后,可以让学生进一步处理如下问题:

类型I:已知,求

这里不能把理解为时的函数值,只能理解为自变量为的函数值。

类型Ⅱ:设,求

这个问题理解为,已知对应法则下,定义域中的元素的象是,求定义域中元素X的象,其本质是求对应法则。

一般有两种方法:

(1)把所给表达式表示成的多项式。

,再用代得

(2)变量代换:它的适应性强,对一般函数都可适用。

令,则从而

二、进一步论证了二次函数的单调性与图象。

在高中阶阶段学习单调性时,必须让学生对二次函数在区间及上的单调性的结论用定义进行严格的论证,使它建立在严密理论的基础上,与此同时,进一步充分利用函数图象的直观性,给学生配以适当的练习,使学生逐步自觉地利用图象学次函数有关的一些函数单调性。

类型I:函数在区间上单调递减,求:实数的取值范围

解:因为函数的图象的对称轴为直线,且在区间上单调递减,所以

,即

类型Ⅱ:画出下列函数的图象,并通过图象研究其单调性。

这里要使学生注意这些函数与二次函数的差异和联系。掌握把含有绝对值记号的函数用分段函数去表示,然后画出其图象。

三、巧妙求二次函数的最值

解决二次函数在给定区间上的最值问题,核心是对函数图象的对称轴与给定区间的相对位置关系的讨论,一般分为对称轴在区间的左边、中间、右边三种情况。

1、正向型

正向型指已知二次函数的解析式和定义域,求其最值。对称轴与定义域的相对位置关系的讨论是解决此类问题的关键,此类问题包括三种情形:轴定,区间定;轴定,区间变;轴变,区间定。

轴定,区间定

类型I:已知函数,当时,求最大值和最小值。

解:

当时,,则当时,取得最小值,当时,取得最大值。

轴定,区间变

类型Ⅱ:设函数,,求函数的最小值。

解:,,,对称轴为。

当,即时,函数在区间为减函数,所以最小值为

当,即时,在对称轴为处取得最小值,最小值为

当时,函数在区间为增函数,所以最小值为

综上可知,,

轴变,区间定

类型Ⅲ:求函数在上的最大值

解:的对称轴为

当,即时,在上的最大值为

当,即时,在上的最大值为

当,即时,在上的最大值为

综上可知,,

2、逆向型

逆向型指已知二次函数在某区间上的最值,求函数解析式或区间中的参数值。

已知函数在区间上有最大值,求实数的值。

解:

当时,函数在区间上的值为常数,不符合题意,舍去

当时,函数在区间上是增函数,最大值为,解得

当时,函数在区间上是减函数,最大值为,解得

综上可知,的值为或

函数最值的应用篇3

一、直接法

某些函数的结构并不复杂,可以通过适当变形,由初等函数的最值及不等式的性质直接观察得到它的最值。

例1求y=x3+2/2+5暑的最杏值,解析:变形为y=1=X2+2/3,故当x=0,时,yma

二、反函数法

由原函数反解出x=£(y),根据x的范围求出y的范围,进而得到y的最值的方法称为反函数法,此方法适用于能顺利求得反函数的函数,如形如y=αt+b/ct+d(α≠0)的函数,类似地,此方法也可推广到可以解得g(x)=£(y),且已知g(x)的取值范围的函数,

三、配方法

配方法是求解“可化为二次函数形式”这一类函数的最值问题的基本方法,有着广泛的应用,

四、换元法

引入新变量对原函数式中的代数式或三角函数进行代换,将所给函数转化成容易求最值的简单函数,进而求得最值的方法称为换元法,形如y=ax+6的函数求最值常用此法,用换元法解题时要特别注意变元前后自变量的取值范围要保持一致。五、不等式法

通过对原函数式进行变形,利用等基本不等式求函数的最值的方法称为不等式法,用不等式法求最值时,要注意“一正、二定、三相等”的应用条件,即不等式中的两项必须都为正,两项的和一定时积有最大值、积一定时和有最小值,必须能取得到最值,

点评:利用不等式法求最值时,要注意函数取到最值时,相应的x的值是否存在,如果不存在,则此最值不能取到,此时要考虑用其他方法来解题,点评:用不等式法和判别式法都只能求出例8中函数的最小值,如果要求它的最大值,上述方法就不可行了,需要考虑换用其他方法,

七、单调性法

如果能确定函数在某个区间上的单调性,就可以求出该函数的最值,求解函数在给定区间上的最值问题常可试用这种方法,函数的单调性可以直接用单调性的定义来判别,也可结合函数的图像来研究,或者用导数法来判定。

点评:看到例11中的函数的形式,很多同学会考虑用换元法来解题,但若用换元法无法将其转化为一元二次函数的形式,会让解题过程变得更繁杂,甚至无法顺利进行下去,在判断函数的单调性时,方法的选择也是很重要的,三种方法各有特点:定义法是最容易想到的,图像法最直观,而导数法往往比较简捷。

函数最值的应用篇4

关键词:三角函数高中数学最值值域常见问题方法探究

三角函数是基本初等函数,它是描述周期现象的重要数学模型,在数学领域和其他领域中有着相当重要的作用。本文从现代高中教学实际出发,分析并介绍了三角函数中常见的最值求解类型问题,结合具体的实例,阐述了相关问题的典型解题方法,探讨了一般的解题策略与技巧。

一、三角函数的定义

数学领域中,三角函数又叫圆函数,是针对平面直角坐标系而言的角函数,通常定义为包含这个角的直角三角形的两个边的比率,也可以等价的定义为单位圆上的各种线段的长度。现代数学理论认为,三角函数的定义是把它们表达为无穷级数或特定微分方程的解,允许它们的值域由实数域的任意正数和负数值扩展到复数值。现代数学领域中,三角函数属于初等函数中的一类函数。

二、三角函数的最值

最值问题是一类特殊的数学问题,它在生产、科学研究和日常生活中有着广泛的应用,而且在高中数学教学中也占有比较重要的比重,它经常与三角函数、二次函数、一元二次方程、不等式及某些几何知识紧密联系,其解法灵活,综合性强,能力要求高。

三、三角函数最值问题的常见类型及求解策略

三角函数的实际应用多与最值有关,解决这类问题的方法是选取一个恰当的变量θ角,构造以θ角为自变量的函数,通过求三角函数最值来解决。这类问题解题一般流程为:审读题意设角建立三角函数式进行三角变换解决实际问题;通常分两步求解:首先,建立目标函数,其关键是选择恰当的自变量并确定自变量的取值范围;其次,是在符合实际问题意义的情形下求目标函数的最值。故而解决这类问题,要掌握各数学分支知识,能综合运用各种数学技能,灵活选择合理的解题方法。

高中数学教学中,在三角函数问题分析时,比较常见的类型主要体现在以下几种类型,下面结合实例分析以下它们的解题策略:

1.型如y=asinx+bcosx型的函数

2.型如y=asinx+b(或y=acosx+b)的函数

这种类型的函数的特点是由一次函数与正弦函数复合而成的,最值求解可用三角函数的有界性。要特别注意题设中所给出的区间或是挖掘题中的隐含条件。

例:函数y=ksinx+b的最大值为2,最小值为-4,求k,b的值。解:若k>0,则当sinx=1时,ymax=2;

当sinx=-1时,ymin=-4

k+b=2,-k+b=-4,解得k=3,b=-1同理可以求得k<0的情况。

3.型如y=asin2x+bcosx+c型的函数

此种类型题目的特点是含有sinx,cosx,并且其中一个是二次,解决思路最好应用sin2x+cos2x=1,使函数式只含有一种三角函数,再应用换元法,转化成二次函数来求解。

4.型如y=asin2x+bsinxcosx+mcos2x型的函数。

此种类型题目的特点是含有sinx,cosx的二次式,他的解题方式是进行降幂处理,再转化成y=asinx+bcosx的形式解题。

凡此种种,还有型如y=型的函数;型如y=sinxcos2x型的函数;含有sinx与cosx的和与积型的函数式等等最值问题均可找到其解题规律。

四、结束语

总之,三角函数的最值问题,是最近几年高考所经常涉及的数学领域,三角函数最值的求解方法,也是比较多样和灵活的。在高中数学教学中,根据实际需要,结合三角函数的性质,明确具体问题的实质,掌握三角函数的最值求解方法,简化三角函数的问题复杂性,可以极其有效的便捷学生处理问题的效率。

参考文献:

函数最值的应用篇5

关键词:三角函数;典型题型;解题应用

中图分类号:G630文献标识码:A文章编号:1003-2851(2012)-08-0128-02

一、高考三角函数考点分析

近几年高考对三角函数部分的考查主要有两个方面:一是三角函数的变换,二是三角函数图像和性质。考查的知识点:

1.三角函数的图象和性质是考查的重点。2.三角函数的化简求值是常考题型。3.考应用,建立三角模型。4.考综合,突出三角的函数性质。

二、高考三角函数典型题型解析

1.三角函数图像变换

图像变换是三角函数的考察的重要内容,解决此类问题的关键是理解A,?棕,?渍的意义,特别是?棕的判定,以及伸缩变换对?渍的影响。

例如:将函数y=sin4x的图象向左平移■个单位,得到y=sin(4x+φ)的图象,则φ等于()

A、-■B、-■C、■D、■

考点:函数y=Asin(ωx+φ)的图象变换

分析:利用函数图象的平移,求出函数的解析式,与已知解析式比较,即可得到φ的值.

解答:解:函数y=sin4x的图象向左平移■个单位,得到y=sin4(?仔+■)的图象,就是y=sin(4x+φ)的图象,故选C

2.常见的几种三角函数求值题型。

(1)y=asinx+b、(或y=acosx+b)型

基本思路:利用sinx≤1(或cosx≤1)即可求解,但必须注意字母a的符号对最值的影响。

例:求函数y=asinx+b(a≤0)的最大值。

解:由于sinx≤1,所以-1≤sinx≤1,且a≤0,从而函数y=asinx+b(a≤0)的最大值为-a+b。

(2)y=asin2x+bsinx+c(或y=cos2x+cosx+c)型

基本思路:可令t=sinx(或t=cosx)t≤1化归为闭区间上的二次函数的最值问题。

例:求函数y=sin2x+2cosx-3的值域。

分析:此类题目可以转化为型y=cos2x+cosx+c的三角函数的最值问题。

解:由于y=sin2x+2cosx-3

=1-cos2x+2cosx-3

=-cos2x+2cosx-2,

令t=cosxt≤1则原式转化为:y=-t2+2t-2t≤1

对上式配方得:y=-(t-1)2-1t≤1

从而当t=-1时,ymin=-5;当时t=1时,ymax=-1。

所求函数的值域为[-5,-1]。

(3)y=■(或y=■)型

基本思路:可化归为sin(x+?渍)=g(y)去处理;或用万能公式换元后利用判别式法去处理,特别a=c时,还可以利用数形结合法去处理。

例:求y=■的值域。

分析:此题我们采用化归为sin(x+?渍)=g(y)去处理。

解:由y=■得:ycosx-sinx=-2-3y,

■sin(x+?渍)=-2-3y,

sin(x+?渍)=-■

又由于csin(x+?渍)=■≤1

解得:y∈[■,■]。

(4)含有sinx?芄cosx,sinxcosx的函数最值问题

基本思路:可令t=sinx?芄cosx,t≤■将sinxcosx转化为t的关系式,从而化归为二次函数的最值问题。

例:求函数y=(sinx+1)(cosx+1)的值域。

分析:由于上式展开后为:y=sinxcosx+sinx+cosx+1恰好为上述形式的三角函数的最值问题。所以可令t=sinx+cosx,t≤■去求解。

解:由y=(sinx+1)(cosx+1)展开得:y=sinxcosx+sinx+cosx+1,

设t=sinx+cosx,t≤■,则sinxcosx=■,

此时:y=■+t+■=■(t+1)2

y∈[0,■]。

(5)含参数型的三角函数的最值问题

基本思路:需要对参数进行讨论。

例:求函数yasinx+b的最大值。

分析:由于a的符号不确定,所以要对参数a的符号加以讨论。

解:由于sinx≤1,所以-1≤sinx≤1,

当a≥0时,函数y=asinx+b(a≤0)的最大值为a+b;

当a

3.三角函数的单调性综合运用

三角函数是中学数学的七类基本初等函数之一,具有比较完备的函数性质,又因系统的三角公式及其变换,使三角函数问题丰富多彩、层次分明、变化多端,常与函数、三角、数列、解析几何等结合考查。

例:已知函数f(x)=2cosxsin(x+■)-■sin2x+sinxcosx

(1)求函数f(x)的最小正周期;

(2)求f(x)的最小值及取得最小值时相应的x的值;

命题意图:本题主要考查三角公式、周期、最值、反函数等知识,还考查计算变形能力,综合运用知识的能力。

知识依托:熟知三角函数公式以及三角函数的性质、反函数等知识。

技巧与方法:等价转化,逆向思维。

解:(1)f(x)=2cosxsin(x+■)-■sin2x+sinxcosx

=2cosx(sinxcos■+cosxsin■)-■sin2x+sinxcosx

=2sinxcosx+■cos2x=2sin(2x+■)

f(x)的最小正周期T=π

方法归纳:

本难点所涉及的问题及解决的方法主要有:

1.考查三角函数的图象和性质的基础题目,此类题目要求考生在熟练掌握三角函数图象的基础上要对三角函数的性质灵活运用。

2.三角函数与其他知识相结合的综合题目,此类题目要求考生具有较强的分析能力和逻辑思维能力。在今后的命题趋势中综合性题型仍会成为热点和重点,并可以逐渐加强。

3.三角函数与实际问题的综合应用

此类题目要求考生具有较强的知识迁移能力和数学建模能力,要注意数形结合思想在解题中的应用。

(2)当2x+■=2kπ-■,即x=kπ-■(k∈Z)时,f(x)取得最小值-2.

三、高考中三角函数的解题应用

高考试题中的三角函数题注重三角知识的基础性,突出三角函数的图象、周期性、单调性、奇偶性、对称性等性质。

(一)知识整合

1.熟练掌握三角变换的所有公式,理解每个公式的意义,应用特点,常规使用方法等。2.熟练掌握正弦函数、余弦函数、正切函数、余切函数的性质,并能用它研究复合函数的性质。

(二)方法技巧

1.三角函数恒等变形的基本策略

(1)常值代换.(2)项的分拆与角的配凑。(3)降次与升次。(4)化弦(切)法。

2.证明三角等式的思路和方法

(1)思路:利用三角公式进行化名,化角,改变运算结构,使等式两边化为同一形式。(2)证明方法:综合法、分析法、比较法、代换法、相消法、数学归纳法。

3.证明三角不等式的方法:比较法、配方法、反证法、分析法,利用函数的单调性,利用正、余弦函数的有界性,利用单位圆三角函数线及判别法等。

函数最值的应用篇6

关键词:路径测试;测试设计;软件测试

中图分类号:TP311文献标识码:A文章编号:1009-3044(2013)03-0509-04

1概述

在软件测试过程中,一个不太复杂的程序,其路径数都有可能是一个庞大的数字,使得完整的路径覆盖很难实现,因此测试时需要对路径进行选择,以减少测试路径的数量,使得覆盖这些有限的路径成为可能。

本文提出一种基于路径重要程度选择测试路径的测试用例设计方法,其主要思想是将被测软件流程图中的节点按其重要程度进行加权,然后按照不同执行路径的权值由高到低的顺序依次选择测试路径。

基于路径重要程度的选择方法分为三个主要步骤:确定函数权值、确定软件的加权图和按权值进行路径选择。

2确定函数权值

函数权值的确定主要依据函数输入、输出和函数可能对软件或系统产生的影响三个因素,通过对三者综合评价,给出函数的权值。

2.1函数输入的分析

函数调用时,实参对形参变量的数据传递是将实参值拷贝到形参变量中,根据被传递数据的性质,函数调用可分为传值调用、引用调用和传址调用。

2.1.1传值调用

用普通数据充当函数参数,函数调用开始后,系统为形参开辟一临时存储区,将各实参值拷贝给形参,形参即得到实参值。由于实参、形参占用不同的存储单元,形参的变化不会影响实参。传值调用中,实参值不会因被调用函数的误操作而丢失、破坏。

2.1.2传址调用

传址调用传递的数据是地址值,即变量的地址、数组名和函数名等,在这种情况下,把实参变量的地址或数组名传递给形参变量,在函数内部用这些地址进行操作。

2.1.3引用调用

引用调用方式,实参用变量名,形参用引用,通过对引用的操作,相当于对被它引用的变量进行操作,对引用的改变,实质上就是改变实参的变量值,它的作用与传址一样的,但是比传址更方便、更直接。

上述三种调用方式中,经过传值调用,实参值不会因被调用函数的误操作而丢失、破坏,而传址调用和引用调用会使所传递的参数处于随时被修改的危险中;另外,由于传址调用和引用调用会改变函数的自变量,若没有注意到这些函数调用后自变量会发生变化,而当作原来的自变量使用时也会出错。因此传址调用和引用调用应比传值调用赋予更大的权值。

2.2函数输出的分析

类似于函数的输入参数,函数的返回值除了能返回普通数据外,也可以返回指针和引用。类似地,返回指针和引用较之返回数值,避免了栈空间中临时变量的产生,使程序的执行效率和空间利用率都得到了提高,给函数调用带来了极大的灵活性和很高的效率,但同时也可能给程序引入更多的错误。因此,返回指针和返回引用的函数比返回数值的函数应被赋予更大的权值。

2.3函数失效的影响

每一个函数都有一个适用范围,如果函数的约束条件不能满足,则调用函数就不能产生正确响应;或者函数本身的设计实现上就存在错误,也会导致失效。函数失效可能产生的影响不尽相同,可以分为以下几类。

2.3.1不影响其它函数

函数的失效仅限于自身,不会将错误扩散到其它函数或影响系统的使用,例如,输出函数执行信息时出现拼写错误。一般来说,不影响其它函数的情况比较少。

2.3.2影响其它函数

函数的返回值是另一个函数的输入值,或者函数修改了全局变量等情况下,函数的缺陷造成的影响不仅限于自身,还会传递到其它函数,这种传递的影响可以用影响区域进行度量。

2.3.3影响系统

函数的失效会导致软件异常退出或系统死机等严重后果。例如在有动态内存分配的程序中,往往存在多种与动态内存管理有关的错误,如内存泄漏、内存的重复释放、空指针引用等,这些错误会导致系统失效甚至崩溃;在进行科学计算的程序中往往会存在非法计算类故障,非法计算是指计算机不允许的计算,有些非法计算类故障产生后,会导致系统强行退出;在使用缓冲区或数组等结构时,由于未进行严格的边界检查,可能导致溢出错误,这些错误在某些情况下也会导致系统失效甚至崩溃。这些函数应被赋予最高等级的权值。

2.4函数复杂度的分析

对于用户自编的函数,在确定其权值时,除了考虑上述因素外,还需考虑函数的复杂度,因为程序的复杂度越高,说明其控制逻辑越复杂,则出错的可能性也相应地增大。复杂性度量可以使用McCabe圈复杂度。实践表明,对于[V(g)]≥10的控制流图所对应的程序,一般就比较复杂了。复杂度高的函数,在路径选择时,较之复杂度低的函数,应被赋予高权值。

2.5函数功能的分析

上面的讨论因素多侧重于函数的结构,在确定权值时,函数的功能也应作为一个重要的参考因素。不同的函数,实现的功能是不同的,这些功能对系统的影响也是不同的。例如,实现系统基本功能的函数,可能会被其他功能模块多次调用,这些函数的可靠性对于系统的可靠性有很大的影响,应被赋予高权值;对于实现系统核心功能的函数,反映的是用户最为关注的功能,相对于其他的辅助功能特性而言,应被赋予高权值使其得到充分测试,以确保软件核心功能的高可靠性。

2.6函数权值的计算

以上讨论的确定权值的参考因素中,有些可以通过分析得到确切的值,例如函数的圈复杂度[V(g)]或者函数的影响区域等;而有些因素对权值的影响不易量化,例如函数功能对权值的影响,这种影响不易量化为一个确切的值,这种情况下,可以做如下的处理:首先确定下各函数能够量化的因素,由前面的内容可以看出,这些因素主要是结构方面的,求出下节所述加权图的最大长度路径的权值,设为max;然后主要从函数功能的角度,可以综合考虑其他不易量化的因素,将需要重点测试的函数进行排序;最后综合前两项确定各个函数的权值。用数学语言描述如下:

设软件共有[n]个函数,[k]条路径。其中有[m]个函数的功能实现正确与否是我们所关注的,应作为测试的重点,经过这[m]个函数的路径共有[km]条,每条路径覆盖这[m]个函数中的一个或多个。采用如下的步骤为每个函数确定权值:

1)从函数的结构角度为每个函数加权,主要考虑函数的复杂度及其影响区域,这些因素都可以直接量化为权值;

2)求出这时最大长度路径的权值,设为[max];

3)主要从函数功能的角度,将需要重点测试的函数进行排序,不妨设排序后的函数顺序为[f1],[f2],[…,][fm],则这[m]个函数权值依次定为max+([m2]-1)[d],[…,]max+[m(m-1)d+2d],max+[m(m-1)d+d],max+[m(m-1)d],[d]>0为排序后这[m]个函数中相邻两个函数权值的差值,其余函数的权值不变。

通过采用上述方式加权,可以得到如下的测试效果:对于由[n]个函数构成的,共[k]条路径的软件,其中有[m]个函数需重点测试,通过采用按路径权值由高到低的顺序选择出的[w]条路径进行测试,可以最优地测试到这[m]个函数。

3确定软件的加权图

3.1控制流图简化

在生成软件的加权图时,首先要消除控制流图中的环路,因为路径选择是按权值由高到低的顺序进行的,而环路所代表的循环,其循环次数在加权图的邻接矩阵中无从体现,不消除环路,则在选择路径时会因不断计算循环体内函数的权值而陷入死循环。在生成路径时,控制流图中的某些节点处于程序中的同一个分支上,这种节点在路径选择时并无特殊用处,因此可以将流图进一步简化,将与路径选择无关并且与其它节点合并后不影响对程序流图分析理解的节点合并简化掉。例如图1所示的控制流图中,节点3、6、8不影响路径选择,将其合并及消除图中环路后得到的结果如图2所示,节点2虽然在通过节点1、2、9的路径上对路径选择没有影响,但该节点是分支节点1的一个分支,不能被合并。做了上述处理后,在简化后的控制流图上选择的路径等价于在原流程图中选择的路径。

3.2弧权值确定

通过第一步的分析,可以得到流程图中每个节点的权值,在简化流程图的过程中,被合并的节点的权值应被加入到合并后节点的权值上。在后续的加权路径选择算法中,是对图的弧进行加权的,因此这里还要将节点的权值转化为弧的权值。因为出口节点是每条路径都要选择的节点,其权值对于路径选择没有影响,因此,这里选择将每个节点的权值移到其流出弧上。若节点代表的是分支,则不应有节点被合并到该节点上;该节点流出弧权值的确定分为两种情况:若分支条件中不存在函数调用,只是数值比较,则该节点权值为0,这时,若该节点后的各分支都是正常处理流程,则所有流出弧上权值都为0,测试时各分支的优先级由分支中函数的权值决定,若存在异常处理流程,则代表异常处理分支的弧上应被赋予一个正数,使得异常处理分支在测试时优先得到测试;若分支条件中存在函数调用,则该节点的权值为调用的函数的权值(若调用了多个函数,权值为这些函数权值的和);类似于前面,这种情况下,同一个分支节点的流出弧上的权值也可能是不同的,代表函数调用失败的弧的权值要比代表调用成功的弧的权值高。对于消除循环而引入的分支,特别是将固定次数的循环展开成顺序执行序列的情况,分支内每个函数的权值只计一次。

4按权值进行路径选择

4.1最长路径计算

为了求得最长路径,本文采用一种类似于迪克斯特拉(Dijkstra)算法的方法,按路径长度的递增次序,逐步产生最长路径。首先求出从顶点[v]到其邻接节点长度最大的一条路径,然后参照它求出长度更长的路径,直到从顶点[v]到其它各顶点的最长路径全部求出为止。该方法实际上是求从单个顶点[v]到图中其它顶点的最长路径。

为了叙述方便,首先引入以下记号并作相应的约定。

1)向量[D]的每个分量[D[i]]表示当前所找到的从源点[v0]到节点[vi]的路径的最大长度;

2)向量[S]的每个分量[S[i]]表示从源点[v0]到节点[vi]的最长距离是否已求出,若已求出则[S[i]=1],否则[S[i]]=0。

3)[Edge]为加权有向图[G]的邻接矩阵;

4)[P]为按照下述方法对[Edge]进行修正后得到的矩阵,它包含了所有关于最长路径的信息。由它可以求出入口节点到出口节点的所有最长路径;

5)Pre(u)表示u的前驱节点组成的集合。

对图3利用上述方法得到从源点到[v5]的最长路径为:[v1][v3][v5],路径长度为90。

4.2路径权值的计算与排序

通过以上计算,得到的路径是从入口节点到出口节点的最长路径,即权值最大的路径,但仅仅求得最长路径是不够的,路径选择算法需要解决按照权值由高到低的顺序依次选择执行路径的问题,即选择算法还应提供选择路径权值次于最长路径的方法。

因为[P[w][u]]=[l]代表从入口节点经过节点[w]到达节点[u]的最长路径为[l],解决上述问题的一个办法是:依次选择矩阵[P]中值小于最长路径权值的项,设为[P[w][u]],以节点[u]为源点,重复执行路径选择算法,就可求得节点[u]到出口节点的最长路径,再加上[v0]到该点的最长路径,就是从[v0]经过节点[u]到达出口节点的最长路径([w],[u]=[0,1,…n-1]);选择其中最大的路径为第二条测试路径,长度次之的为第三条路径,以此类推。为了简化运算过程,这里选择另外一种计算节点[u]到出口节点的最长路径的方法:通过一次运算过程求出所有节点间的最长路径,这样做可以避免重复执行迪克斯特拉算法。

一次运算求出所有节点间最长路径算法的思想如下:初始时,以任意两个节点之间的直接有向边的权值作为路径长度,对于任意两个节点[vi]和[vj],若它们之间存在有向边,则以此边上的权值作为它们之间的最长路径长度;若它们之间不存在有向边,则以-1作为它们之间的最长路径。以后逐步尝试在原路径中加入其它节点作为中间节点。如果增加中间节点后,得到的路径比原来的路径长度增加了,则以此新路径代替原路径,修改矩阵元素,代入新的更长的路径长度。以此类推,在任意一对节点[vi]和[vj]间尝试加入[n]个节点,最终得到的路径即为[vi]和[vj]间的最长路径。

为了描述算法的方便,引入以下记号:

1)[n]阶方阵序列[A(-1)],[A(0)],[A(1)],[…,][A(n-1)],其中:

[A(-1)[i][j]]=[Edge[i][j]];

[A(k)[i][j]=max{A(k-1)[i][j],A(k-1)[i][k]+A(k-1)[k][j]}],[k=0,1,…n-1]

[A(0)[i][j]]是从节点[vi]到[vj],中间节点是[v0]的最长路径的长度;[A(k)[i][j]]是从节点[vi]到[vj],中间节点序号不大于[k]的最长路径的长度;[A(n-1)[i][j]]是节点[vi]到[vj]的最长路径长度。

2)[path[i][j]=p]表示节点[vi]到[vj]的路径上,[vj]的前驱节点为[vp]。

将该方法用于图3所示的例子中,得到如下的结果([A[4][4]]由于路径选择的需要,被函数findmax赋值为0):

表1矩阵[A]

[\&[v1]\&[v2]\&[v3]\&[v4]\&[v5]\&[v1]\&-1\&10\&30\&60\&90\&[v2]\&-1\&-1\&-1\&50\&60\&[v3]\&-1\&-1\&-1\&20\&60\&[v4]\&-1\&-1\&-1\&-1\&10\&[v5]\&-1\&-1\&-1\&-1\&0\&]

表2矩阵[path]

[\&[v1]\&[v2]\&[v3]\&[v4]\&[v5]\&[v1]\&-1\&0\&0\&1\&2\&[v2]\&-1\&-1\&-1\&1\&3\&[v3]\&-1\&-1\&-1\&2\&2\&[v4]\&-1\&-1\&-1\&-1\&3\&[v5]\&-1\&-1\&-1\&-1\&-1\&]

结合矩阵[P]和矩阵[A]可以得到取值仅次于[D[4]]的是[P[0][4]]+[A[4][4]]和[P[3][4]]+[A[4][4]],可得到路径[v1][v5],[v1][v2][v4][v5],路径长度为70。此过程继续,得到的结果是[P[2][3]]+[A[3][4]],对应的路径是[v1][v3][v4][v5],路径长度为60。至此,按照权值由高到低的顺序依次得到了图3的全部4条路径。

5结束语

按权值进行路径选择后,以此为基础为每条路径选取测试数据,构造测试用例。一条路径可以对应多个测试用例。在选取测

试数据时,可以充分利用边界值选取等方法和基于路径的测试数据自动生成方法。得到了输入和预期输出等测试数据后,就完成了测试用例的设计。

基于路径重要程度的测试用例设计方法同其它测试用例设计方法一样,也存在优点和局限性。优点在于能够设计出针对软件中更容易出现错误之处的测试用例,或软件中更容易隐藏错误之处的测试用例,这样可以更有针对性地开展测试工作,合理分配测试资源,安排测试进度,提高测试效率,从而达到提高软件质量的目的。而路径生成时,不可达路径的可能产生,则是需要进一步考虑研习优化的地方。

参考文献:

[1]殷人昆,陶永雷,谢若阳,等.数据结构(用面向对象方法与C++描述)[M].北京:清华大学出版社,2006:283-289.

[2]徐凤生.一种求关键路径的新算法[J].计算机工程与应用,2005(24):82-84.

[3]ChowTS.TestingSoftwareDesignModeledbyFiniteStateMachines[J].IEEETransactionsonSoftwareEngineering,1978,4(3):178-187.