阅读下列Java程序,回答下列问题。 [Java 程序] public int addAppTask(Activity activity, Intent intent, TaskDescription description, Bitmap thumbnail) { Point size = getSize1; //1 final int tw = thumbnail.getWidth1; final int th = thumbnail.getHeight1; if (tw != size.x || th != size.y){ //2,3Bitmap bm = Bitmap.createBitmap(size.x, size.y, thumbnail.getConfig1); //4 float scale; float dx = 0, dy = 0; if (tw * size.x > size.y * th){ //5 scale = (float) size.x / (float) th; //6 dx = (size.y - tw * scale) * 0.5f; } else { //7 scale = (float) size.y / (float) tw; dy = (size.x - th * scale) * 0.5f; } Matrix matrix = new Matrix1; matrix.setScale(scale, scale); matrix.postTranslate((int) (dx + 0.5f), 0); Canvas canvas = new Canvas(bm); canvas.drawBitmap(thumbnail, matrix, null); canvas.setBitmap(null); thumbnail = bm; } if (description == null) { //8 description = new TaskDescription1; //9 } } //102.1、请简述基本路径测试法的概念。(2分)2.2、请画出上述程序的控制流图,并计算其控制流图的环路复杂度V(G)。(8分)2.3、请给出问题2中控制流图的线性无关路径。(5分)
阅读下列Java程序,回答下列问题。 [Java 程序] public int addAppTask(Activity activity, Intent intent, TaskDescription description, Bitmap thumbnail) { Point size = getSize1; //1 final int tw = thumbnail.getWidth1; final int th = thumbnail.getHeight1; if (tw != size.x || th != size.y){ //2,3Bitmap bm = Bitmap.createBitmap(size.x, size.y, thumbnail.getConfig1); //4 float scale; float dx = 0, dy = 0; if (tw * size.x > size.y * th){ //5 scale = (float) size.x / (float) th; //6 dx = (size.y - tw * scale) * 0.5f; } else { //7 scale = (float) size.y / (float) tw; dy = (size.x - th * scale) * 0.5f; } Matrix matrix = new Matrix1; matrix.setScale(scale, scale); matrix.postTranslate((int) (dx + 0.5f), 0); Canvas canvas = new Canvas(bm); canvas.drawBitmap(thumbnail, matrix, null); canvas.setBitmap(null); thumbnail = bm; } if (description == null) { //8 description = new TaskDescription1; //9 } } //102.1、请简述基本路径测试法的概念。(2分)2.2、请画出上述程序的控制流图,并计算其控制流图的环路复杂度V(G)。(8分)2.3、请给出问题2中控制流图的线性无关路径。(5分)
参考解析
解析:2.1、基本路径测试法是在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例的方法。 2.2、控制流图
环路复杂度V(G)=5 2.3、线性无关路径: 1.1-2-4-5-6-8-9-10 2.1-2-4-5-7-8-9-10(1-2-4-5-7-8-10) 3.1-2-4-5-6-8-10(1-2-4-5-7-8-10) 4.1-2-3-4-5-6-8-9-10(1-2-3-4-5-7-8-9-10,1-2-3-4-5-6-8-10,1-2-3-4-5-7-8-10) 5.1-2-3-8-9-10(1-2-3-8-10)
【解析】
本题考查白盒测试法的应用。 第一小题考查白盒测试用例设计方法中的基本路径测试法。 基本路径测试法是在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例的方法。 第二小题考查白盒测试用例设计方法:基本路径测试法。涉及到的知识点包括根据代码绘制控制流图、计算环路复杂度。 控制流图是描述程序控制流的一种图示方式,它由节点和定向边构成。控制流图的节点代表一个基本块,定向边代表控制流的方向。其中要特别注意的是,如果判断中的条件表达式是复合条件,即条件表达式是由一个或多个逻辑运算符连接的逻辑表达式,则需要改变复合条件的判断为一系列之单个条件的嵌套的判断。本题程序中,if(tw!=size.x || th!=size.y)这条判断语句中的判定由两个条件组成,因此在画控制流图的时候需要拆开成两条判断语句。需要注意的是,复合条件之间是“&&”的关系还是“||”的关系反应在控制流图的画法是不同的。 程序的环路复杂度等于控制流图中判定节点的个数加1,本题控制流图中判定节点个数为4,所以V(G)=5。 第三小题考查白盒测试用例设计方法:基本路径法。涉及到的知识点包括:根据控制流图和环路复杂度给出线性无关路径。 线性无关路径是指包含一组以前没有处理的语句或条件的路径。从控制流图上来看,一条线性无关路径是至少包含一条在其他线性无关路径中从未有过的边的路径。程序的环路复杂度等于线性无关路径的条数,所以本题中应该有5条线性无关路径。
环路复杂度V(G)=5 2.3、线性无关路径: 1.1-2-4-5-6-8-9-10 2.1-2-4-5-7-8-9-10(1-2-4-5-7-8-10) 3.1-2-4-5-6-8-10(1-2-4-5-7-8-10) 4.1-2-3-4-5-6-8-9-10(1-2-3-4-5-7-8-9-10,1-2-3-4-5-6-8-10,1-2-3-4-5-7-8-10) 5.1-2-3-8-9-10(1-2-3-8-10)
【解析】
本题考查白盒测试法的应用。 第一小题考查白盒测试用例设计方法中的基本路径测试法。 基本路径测试法是在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例的方法。 第二小题考查白盒测试用例设计方法:基本路径测试法。涉及到的知识点包括根据代码绘制控制流图、计算环路复杂度。 控制流图是描述程序控制流的一种图示方式,它由节点和定向边构成。控制流图的节点代表一个基本块,定向边代表控制流的方向。其中要特别注意的是,如果判断中的条件表达式是复合条件,即条件表达式是由一个或多个逻辑运算符连接的逻辑表达式,则需要改变复合条件的判断为一系列之单个条件的嵌套的判断。本题程序中,if(tw!=size.x || th!=size.y)这条判断语句中的判定由两个条件组成,因此在画控制流图的时候需要拆开成两条判断语句。需要注意的是,复合条件之间是“&&”的关系还是“||”的关系反应在控制流图的画法是不同的。 程序的环路复杂度等于控制流图中判定节点的个数加1,本题控制流图中判定节点个数为4,所以V(G)=5。 第三小题考查白盒测试用例设计方法:基本路径法。涉及到的知识点包括:根据控制流图和环路复杂度给出线性无关路径。 线性无关路径是指包含一组以前没有处理的语句或条件的路径。从控制流图上来看,一条线性无关路径是至少包含一条在其他线性无关路径中从未有过的边的路径。程序的环路复杂度等于线性无关路径的条数,所以本题中应该有5条线性无关路径。
相关考题:
阅读以下说明和Java代码,回答问题[说明]任何一种程序都是为了解决问题而撰写的,解决问题时需要实现一些特定的运算法则。在策略(Strategy)模式下,可以更换实现算法的部分而不留痕迹,切换整个算法,简化改为采用其他方法来解决同样问题。以下是一个“剪刀石头布”游戏。猜拳时的“策略”有2种方法:第一种是“猜赢后继续出同样的招式”(WinningStrategy),第二种是“从上一次出的招式种,以概率分配方式求出下一个招式的几率”(ProbStrategy)。程序中定义了Hand类表示猜拳时的“手势”,类内部以0(石头)、1(剪刀)、2(布)来表示。Hand类的实例只会产生3个。以下是Java语言实现,省略了不相关属性及方法,方法实现体亦有所省略,能够正确编译通过。[Java代码]//Hand.java文件public class Hand{public static final int HANDVALUE_GUU = 0; //石头public static final int HANDVALUE_CHO = 1; //剪刀public static final int HANDVALUE_PAA = 2; //布public static final Hand[] hand = {new Hand(HANDVALUE_GUU),new Hand(HANDVALUE_CHO),new Hand(HANDVALUE_PAA),};private int handvalue;(1) Hand(int handvalue){this.handvalue = handvalue;}public (2) Hand getHand(int handvalue)(//从值取得对象实例return hand[handvalue];}}//Strategy.java文件public interface Strategy{public (3) Hand nextHand();}//ProbStrategy.java文件import java.util.Random;public class ProbStrategy implements Strategy{public Hand nextHand(){int handvalue = 0;/*省略具体实现*/return Hand.getHand(handvalue);}}//WinningStrategy.java文件import java.util.Random;public class WinningStrategy implements Strategy {/*省略了不相关属性*/public Hand nextHand(){if(!won){prevHand = Hand.getHand(random.nextInt(3));}return prevHand;}}//Player.java文件public class Player {private String name;private Strategy strategy;public Player(String name, (4) strategy){this.name = name;this.strategy = strategy;}public Hand nextHand(){//向战略请示手势return (5) ;}}
To be deductible, the dominant motive for incurring an expense must be()the relationship to a business activity. A.to reduce income taxesB.tax avoidanceC.the intent to earn a profitD.personal
以下有关Android开发框架的描述,正确的是()。 A、一般而言,一个标准的Android程序包括Activity、Broadcase Intent Receiver、Service和ContentPrivater共4部分B、Android的Service和Windows中的Service不同C、Broadcase Intent Receiver提供应用程序之间数据交换的机制D、Content Privater为不同的Activity间进行跳转提供了机制
阅读以下说明和Java代码,回答问题1和问题2,将解答填写在对应栏内。【Java代码】class usethread implements (1) {int numusethread(int n){num=n;}public void (2) {for(int i=0;i<3;i++)System.out.println("running:"+num);System.out.println("finished:"+num);}public class multhread{public static void main(String args[]) (3) InterruptedException{Thread m1=new Thread(new usethread(1));Thread m2=new Thread(new usethread(2));m1.start();m2.start();m1.join();m2.join();}}【问题1】补充完整上面Java代码中(n)处。【问题2】写出上面Java代码运行的结果。
请完善程序(程序文件名:Java_2.java)并进行调试。请在下画线处填入正确内容,然后删除下画线。请勿删除注释行和其他已有的语句内容。[题目要求]在JFrame窗口中,显示一个字符串并保证窗口正常关闭和退出,使程序运行结果如下图所示。源程序:import javax.swing.*:import java.awt.*;public class Java_2 {public static void main(String[] args) {WelcomFrame. frame=new WelcomFrame();frame.setDefaultCloseOperation(JFrame. (1) );frame.show();}}class WelcomFrame. extends (2) {public WelcomFrame() {setTitle("Java等级考试");(3) (DEFAULT_WIDTH,DEFAULT_HEIGHT);WelcomPanel panel=new WelcomPanel();Container contentPane=getContentPane();contentPane.add(panel);}public static final int DEFAULT_WIDTH=250;public static final int DEFAULT_HEIGHT=100;}class WelcomPanel extends (4) {public void paintComponent(Graphics g) {super.paintComponent(g);g.drawString("欢迎参加Java等级考试!",MESSAGE_X,MESSAGE_Y);}public static final int MESSAGE_X=60:public static final int MESSAGE_Y=50:}
将下面的程序补充完整。注意:不改动程序结构,不得增行或删行。import java.appplet.Applet;import java.awt.Graphics;public class ex1 extends Applet{public void paint(Graphics______){int i=682;gap.drawstring(Integer.______(i),20,60);}}
下面是一个Applet程序,程序的功能是用鼠标画图。本题是通过单击鼠标后画出一个Java字。请改正程序中的错误(有下划线的语句),使程序能输出正确的结果。注意;不改动程序的结构,不得增行或减行。源程序文件代码清单如下;import java.awt.*;import java.awt.event.*;import java.applet.*;/*<applet code=SimpleHitMouse.java width=800 height=400></applet>*/public class SimpleHitMouse implements Applet{private java.util.Vector points=new java.util.Vector();public void init(){addMouseListener(new MouseAdapter(){public void mousePressed(MouseEvent e){points.add(new Point(e.getX(),e.getY())paint();}}public void update(Graphics g)repaint(g);}public void paint(Graphics g){for(int i=0;i<points.size();i++){Point dot=(Point)points.elementAt(i);g.drawString("x",dot.x,dot.y);}}public static void main(String args[ ]){Frame. fram=new Frame("CelayTree");SimpleHitMouse dot=new SimpleHitMouse();dot.init ();dot.start ();fram.add ( "Center", dot );fram.setSize( 400,300 );fram.addWindowListener( new WindowAdapter(){public void windowClosing( WindowEvent e ){System.exit(0);}});fram.show ();}}ex12_3.html:<html><head><title>A Simple Program</title></head><body><applet code=" SimpleHitMouse.class" width=800 height=400></applet></body></html>
下列哪个选项的java源文件程序段是不正确的? ( )A.package testpackage; public class Test{ }B.import java.io.*; package testpackage; public class Test{ }C.import java.i.*; class Person{} public class Test{ }D.import java.io.*; import java.awt.*; public class Test { }
有下列程序: include using namespace std; class Stack { public: Stack(unsigned 有下列程序: #include<iosteram.h> using namespace std; class Stack { public: Stack(unsignedn=10):size(n){rep_=new int [size];top=O;} Stack(Stacks):size(s.size) { rep_=new int[size]; foA.4,3,2,1,B.4,3,6,7,2,1,C.4,3,6,2,1,D.1,2,3,4,
下面是一个Applet程序,程序的功能是用鼠标点击画图。本题是通过点击鼠标后画出一个“Java”字。请改正程序中的错误(有下划线的语句),使程序能输出正确的结果。注意:不改动程序的结构,不得增行或减行。import java.awt.*;import java.awt.event.*;import java.applet.*;/*<applet code=SimpleHitMouse.java width=800 height=400></applet>*/public class SimpleHitMouse implements Applet{private java.util.Vector points=new java.util.Vector();public void init(){adclMouseListener(new MouseAdapter(){public void mousePressed(MouseEvent e){points.add(new Point (e.getX() ,e.getY()));paint ( );}});}public void update(Graphics g){repaint(g);}public void paint(Graphics g){for(int i=0;i<points.size();i++){Point dot=(Point)points.elementAt(i);g.drawString("x",dot.x,dot.y);}}public static void main(String args[ ]){Frame. fram=new Frame("CelayTree");SimpleHitMouse dot=new SimpleHitMouse();dot.init();dot.start();fram.add("Center",dot);fram.setSize(400,300);fram.addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){System.exit(0);}});fram.show();}}ex32_3.html:<html><head><title>A Simple Program</title></head><body><applet code="SimpleHitMouse.class" width=800 height=400></applet></body></html>
有两个文件Java_2.java和Java_2.html,其中Java_2.java是不完整的,请完善程序(程序文件名:Java_2.java)并进行调试。请在下画线处填入正确内容,然后删除下画线。请勿删除注释行和其他已有的语句内容。[题目要求]在Applet中显示4个字符串“Hello!”。运行结果如下图所示。Java_2.java文件源程序:import java.awt.*;import java.applet.*;public class Java_2 (1) {int Bum;public void init() {String s=getParameter( (2) );//从html文件中获取参数num=Integer.parseInt(s);}public void paint(Graphics g) {for(int i=0;i<num;i++) g.drawstring("Hello!",25+i*50,25);}}Java_2.html文件源程序:<HTML><HEAD><TITLE>Hellos</TITLE></HEAD><BODY><APPLET CODE="Java_2.class"WIDTH=300 HEIGHT=40><PARAM NAME=nun VALUE="4"></APPLET></BODY></HTML>
阅读以下说明和Java程序,将应填入(n)处的字句写在对应栏内。[说明]下面程序输出一个矩形面积,以及矩形区域上的假想的作物产量。[Java程序]public class MainJava {public static void main(String[] args){Lot_size small=new Lot_size();Lot_size medium=new Lot_size();small.set(5,5,5,25);medium.set(10,10,10,50);System.out.println("For a small lot of area"+small.get_area()+"\n");System.out.println("the actual crops are $"+small.get_data2()+"\n");System.out.println("and ideal crops are $"+small.get data()+"\n");System.out.println("For a medium lot of area"+medium.get_area()+“\n”);System.out.println("the actual crops are $"+medium.get_data2()+"\n");System.out.println ("and ideal crops are $"+medium.get_data()+"\n");}}class Crop_assessment{private int actual_crop;private int ideal_crop;public void set(int in_actual,int in ideal){actual_crop=in_actual;ideal_crop=in_ideal;}public int get_actual_crop(){return (1) ;}public int get_ideal_crop()(return (2) ;}}class Lot_size{private int length;private int width;private Crop_assessment crop= (3) ;public void set(int 1,int W,int a,int i){length=1;width=W;crop.set(a,i);}public int get_area(){return length*width;}public int get_data()freturn (4) ;}public int get_data2()(return (5) ;}}
( 8 )在下列 Java applet 程序的横线处填入代码,使程序完整并能够正确运行。Import java. awt. *;Import java. applet. *;Public class Greeting extends applet{Public void 【 8 】 (Graphics g) {g.drawSting( “ how are you! ” ,10,10);}}
阅读下列Java程序,回答下列问题。[Java 程序]public int addAppTask(Activity activity, Intent intent,TaskDescription description, Bitmap thumbnail) {Point size = getSize1; //1final int tw = thumbnail.getWidth1;final int th = thumbnail.getHeight1;if (tw != size.x || th != size.y) { //2,3Bitmap bm = Bitmap.createBitmap(size.x, size.y, thumbnail.getConfig1); //4float scale;float dx = 0, dy = 0;if (tw * size.x > size.y * th) { //5scale = (float) size.x / (float) th; //6dx = (size.y - tw * scale) * 0.5f;} else { //7scale = (float) size.y / (float) tw;dy = (size.x - th * scale) * 0.5f;}Matrix matrix = new Matrix1;matrix.setScale(scale, scale);matrix.postTranslate((int) (dx + 0.5f), 0);Canvas canvas = new Canvas(bm);canvas.drawBitmap(thumbnail, matrix, null);canvas.setBitmap(null);thumbnail = bm;}if (description == null) { //8description = new TaskDescription1; //9}} //101、请简述基本路径测试法的概念。(2分)2、请画出上述程序的控制流图,并计算其控制流图的环路复杂度vfG.。(8分)3、请给出问题2中控制流图的线性无关路径。(5分)
系统收到intent发起的启动Activity的请求时,根据什么来选择最合适的Activity?()A、categoryB、dataC、actionD、category、data、action都可以
下列关于Intent说法有误的是()A、Intent起着一个媒体中介的作用,专门提供组件互相调用的相关信息,实现调用者与被调用者之间的解耦B、Intent可以传递View对象C、对于直接Intent,Android不需要去做解析,因为目标组件已经很明确,Android需要解析的是那些间接Intent,通过解析,将Intent映射给可以处理此Intent的Activity、IntentReceiver或ServiceD、通过Intent可以删除程序
Android工程启动是最先加载的是AndroidManifest.xml,如果有多个Activity,以下哪个属性决定了该Activity最先被加载?()A、android.intent.action.LAUNCHERB、android.intent.action.ACTIVITYC、android.intent.action.ICOND、android.intent.action.MAIN
多个Activity之间的跳转的方法是()。A、Activity(Intent)B、startActivityForResult(Intent,string)C、startActivity(Intent)D、startActivityForResult(Intent,int)
利用Intent不仅可以传递int、string等基本类型的数据,还可以传递更复杂的自定义对象。在Android中要在不同Activity之间传递复杂对象,主要有()接口和()接口可以使用。
class java { public static void main(String [] java) { for (int Java = 1; Java 〈 java.length; Java++) System.out.print("java "); } } 和命令行: java java java java java 结果为:() A、javaB、java javaC、java java javaD、编译失败
多选题多个Activity之间的跳转的方法是()。AActivity(Intent)BstartActivityForResult(Intent,string)CstartActivity(Intent)DstartActivityForResult(Intent,int)
单选题Android工程启动是最先加载的是AndroidManifest.xml,如果有多个Activity,以下哪个属性决定了该Activity最先被加载?()Aandroid.intent.action.LAUNCHERBandroid.intent.action.ACTIVITYCandroid.intent.action.ICONDandroid.intent.action.MAIN
多选题给出下列java源代码: //Point x Public class Interesting{} 在源代码//point x处添加()能符合java语法Aimport java.awt.*Bpackage local.utilCclass MoreInteresting{}Dprotected class MoreInteresting{}
单选题下列关于Intent说法有误的是()AIntent起着一个媒体中介的作用,专门提供组件互相调用的相关信息,实现调用者与被调用者之间的解耦BIntent可以传递View对象C对于直接Intent,Android不需要去做解析,因为目标组件已经很明确,Android需要解析的是那些间接Intent,通过解析,将Intent映射给可以处理此Intent的Activity、IntentReceiver或ServiceD通过Intent可以删除程序