项目实战案例剖析:B样条曲线问题的测试‘亚盈体育手机app’

 产品系列     |      2022-06-01 00:13
本文摘要:哈喽,小同伴们,上期我们给大家分享了如何举行循环结构测试,本期,我们就进一步给大家做一个实战项目的剖析。下面,我们就进入正题,给大家说说循环结构测试案例。【案例】我们今天就以B样条曲线问题,作为今天的测试样例。 B样条(B-Spline)曲线是最重要的自由曲线曲面类型之一。我们可以在在二维平面内,凭据指定的控制点坐标,在指定的精度下,根据指定幂次,绘制与这组控制点对应的B样条曲线的函数。

亚盈体育手机app

哈喽,小同伴们,上期我们给大家分享了如何举行循环结构测试,本期,我们就进一步给大家做一个实战项目的剖析。下面,我们就进入正题,给大家说说循环结构测试案例。【案例】我们今天就以B样条曲线问题,作为今天的测试样例。

B样条(B-Spline)曲线是最重要的自由曲线曲面类型之一。我们可以在在二维平面内,凭据指定的控制点坐标,在指定的精度下,根据指定幂次,绘制与这组控制点对应的B样条曲线的函数。

代码如下图:void drawBSpline( GLint order, GLfloat v[][2], GLint ptsNum, GLint numofU, GLint node[] ){glColor3f(0.0,1.0,0.0); // 设置B样条曲线绘制颜色为绿色glLineWidth(3.0); // 设置绘制线宽for(int i=0; i<ptsNum-order; i++){// 对每段曲线,有numofU个点glBegin(GL_LINE_STRIP); // 开始绘制的标志GLfloat tempU=node[0]; // 对tempU赋初值for(int k=0; k<numofU; k++) {// 对每个点,有Bj, k(u)*Vj个取值,j=i-k, i-k+1, ..., iGLfloat tempx = 0.0, tempy = 0.0;GLint jj = i;for(int j=-order; j<1; j++){// 盘算对应B样条基函数的值,即Bi, k(u)GLfloat tempB = calcBaseFunc( j, order, tempU, node );tempx += v[jj][0] * tempB;tempy += v[jj][1] * tempB;jj++; // 极点是不停变化的,但B样条基函数其实是稳定的}glVertex2f(tempx, tempy); // 不记载曲线点,直接绘制B-spline曲线上的点tempU+=1.0/(numofU-1); // 更新tempU,作为下次循环的初值}glEnd(); // 竣事绘制的标志}}【剖析】那么,这样的循环结构,我们应该从那里开始测试呢?首先,我们要知道,这是一个包罗了3层嵌套循环的法式。因此,在做测试时,应遵循从内向外举行测试的顺序。可是,在写测试分析时,我们则应该由外向内举行。

亚盈体育

如下图,我们可以将每层循环涉及的循环变量、初值、终值和循环累加量的情况,做一个简朴的枚举。如图,表中ptsNum、oder、numofU均为取值不确定的变量,并满足如下的约束条件:(1)order≥0,曲线幂次不应小于零;(2)ptsNum≥2,控制点的个数至少应能生成一条直线段;(3)numofU≥2,绘制B样条曲线的点数应保证至少包罗起点和终点。针对这样的界限条件,我们应联合循环次数的界限组合,来举行测试设计。

这样,我们就可以获得下图的内容:凭据上图,我们可知:上图中共存在42个测试用例。其中,①9个(21.4%)是永远测不到的情况;②18个(42.9%)是不切合约束条件的情况。这种情况,我们只需要选择其中几个举行测试即可;③剩下的15个(35.7%)测试用例中,只有3个是可以获得平滑曲线的,其他均对应测试的是特殊的曲线形式或特殊的显示效果。因此,如果仅凭据循环的类型(串联、嵌套等),并联合循环次数的界限举行测试,那么这种测试方法更靠近调试的思想。

对于B样条曲线来说,它的焦点在于如何正确盘算B样条基函数的值?B样条曲线如何随着幂次的变化而变化,曲线形状如何随着绘制精度的变化而变化,以及B样条控制多边形的形状和绘制精度对获得的B样条曲线形状具有怎样的影响?如果将这些因素都思量进去,那么,我们将获得如下几组测试用例。通过上述分析,我们不难看出,实际上,B样条曲线的绘制函数是一种特殊情况,它所涉及的数值在盘算上较为庞大。如果我们要磨练函数盘算的正确性,就必须凭据B样条曲线点的盘算公式,通过手动方式来盘算其正确效果。

这样做其实很是烦琐。所以,我们一般地处置惩罚方法是,通过直观视察的方式,对法式盘算效果举行开端磨练。

亚盈体育

如果曲线生成切合一般纪律,则开端认为盘算历程是正确的。【项目小结】循环结构是法式中,一类比力重要的结构。

所以我们必须针对循环重点,举行测试。日常事情中,对循环的测试一方面是对测试历程举行静态检查,另一方面,是通过控制循环界限,来视察执行效果是否与预期输出保持一致。对于单个循环节点来说,我们需要针对循环次数的界限来举行测试,并对循环历程中循环变量的初始化、递增和终止条件的正确性举行测试,从而确保循环历程完整、正确,循环变量变化的正确性,从而保证循环历程的可控性。对于多个串联的循环节点,我们可参照单个循环节点的测试,来设计测试用例。

对于嵌套的循环节点,除遵循上述原则之外,我们还要同时思量到笼罩到关于内、外循环差别循环次数的界限组合情况。对于非结构化的循环体,重点就在于修改设计,而不是测试了。

综上述,大家在做相应的测试用例时,要注意设计细节和设计合理性,对于差别特点的问题,要做到详细问题详细分析,这样测试历程才气越发顺利。↓↓↓点击下方【相识更多】,领取软件测试零基础学习资料+课程。


本文关键词:项目,实战,案例,亚盈体育app最新版下载,剖析,样条,曲线,问,题的,测试

本文来源:亚盈体育-www.gzsnmz.cn