一.集成测试和确认测试
第1关:集成测试
-
1、
集成测试的主要方法有CD
A、自顶向下集成方法
B、自底向上集成方法
C、渐增式测试方法
D、非渐增式测试方法
-
2、
目前在进行集成测试时普遍采用非渐增式测试方法。B
A、√
B、×
-
3、
自底向上集成策略是从主控制模块开始,沿着程序的控制层次向下移动,逐渐把各个模块结合起来。B
A、√
B、×
-
4、
下图是某正文加工系统的层次图,在模块3.0还没有实现的时候需要对3.1进行测试,需要编写( ),在3.1、3.2、…、3.6还没有实现的时候需要对3.0进行测试,需要编写(A )。
A、驱动程序;存根程序
B、存根程序;驱动程序
C、存根程序;存根程序
D、驱动程序;驱动程序
-
5、
应该把回归测试集设计成只包括可以检测程序每个主要功能中的一类或多类错误的那样一些测试用例。A
A、√
B、×
-
6、
确认测试就是用于保证由于调试或其他原因引起的变化,不会导致非预期的软件行为或额外错误的测试活动。B
A、√
B、×
第2关:确认测试
回归测试的目标是验证软件的有效性。B
A、
√
B、
×
2、
确认是保证软件正确地实现了某个特定要求的一系列活动。验证是为了保证软件确实满足了用户需求而进行的一系列活动。B
A、
√
B、
×
3、
概要设计说明书,准确地描述了用户对软件的合理期望,因此是软件有效性的标准,也是进行确认测试的基础。B
A、
√
B、
×
4、
确认测试通常使用什么测试方法A
A、
黑盒测试
B、
白盒测试
C、
单元测试
D、
集成测试
5、
为了制定解决确认测试过程中发现的软件缺陷或错误的策略,通常需要和开发者充分协商。B
A、
√
B、
×
6、
软件配置复查的目的有哪些?ABCD
A、
保证软件配置的所有成分都齐全
B、
质量符合要求
C、
文档与程序完全一致
D、
具有完成软件维护所必须的细节
7、
Beta测试由用户在开发者的场所进行,Alpha测试的开发者通常不在Beta测试的现场。B
A、
√
B、
×
8、
Beta测试是在受控的环境中进行的。B
A、
√
B、
×
二.黑盒测试
第1关:等价类划分法
-
1、
规定输入的考试成绩在0~100之间。以下正确的是 A
A、有效等价类是“0≤成绩≤100”,无效等价类是“成绩<0”和“成绩>100”
B、有效等价类是“成绩<0”和“0≤成绩≤100”,无效等价类是“成绩>100”
C、无效等价类是“0≤成绩≤100”,有效等价类是“成绩<0”和“成绩>100”
D、有效等价类是“0≤成绩≤100”和“成绩>100”,无效等价类是“成绩<0”
-
2、
规定输入构成三角形的3条边。以下正确的是B
A、无效等价类是“输入边数=3”,有效等价类是“输入边数<3”和“输入边数>3”
B、有效等价类是“输入边数=3”,无效等价类是“输入边数<3”和“输入边数>3”
C、有效等价类是“输入边数<3”和“输入边数=3”,无效等价类是“输入边数>3”
D、有效等价类是“输入边数=3”和“输入边数>3”,无效等价类是“输入边数<3”
-
3、
等价类划分案例1——针对一个字段 QQ账号需求:6-10位自然数。AC
以下哪些属于有效等价类。
A、长度在6-10位之间
B、长度小于6位
C、类型是0-9的自然数
D、负数
E、长度大于10位
F、特殊字符
-
4、
等价类划分案例2——针对一个页面 用户注册页面需求: -用户名:非空,6-10位字母或数字。 -密码:非空,必须是6位的字母或数字。 -手机号码:非空,必须是11位的数字,并且未注册过。 -验证码:非空,值和系统提供的相同。D
以下说法错误的是
A、用户名的输入中,特殊字符属于无效等价类
B、密码的输入中,6位属于有效等价类
C、手机号码的输入中,11位为有效等价类
D、验证码的输入中,非空为无效等价类
-
5、
等价类划分案例3——针对文字的需求说明 某企业招工,要求报名者的出生日期在1970年1月1990年12月之间,企业的人事管理系统需要输入报名者的出生日期,规定日期由6位数字字符组成,前4位表示年,后2位表示月。出生年月不在规定范围内的,系统将拒绝接受,并显示“年龄不合格”的出错信息。试用等价类划分法设计测试用例,来测试系统的“年龄检查功能”。 以下说法错误的是D
A、对于日期的类型及长度,6位数字字符是有效等价类
B、对于年份范围,大于1990是无效等价类
C、对于月份范围,在01~12之间是有效等价类
D、对于日期的类型及长度,有非数字字符是有效等价类
第2关:边界值分析法
-
1、
要求a<x<b,测试用例应当包含哪些值ABCD
A、略大于a的值
B、略小于b的值
C、a
D、b
-
2、
一个老师在指导毕业设计时,必须指导1~5个学生,则可选人数为多少个作为测试数据?ABDE
A、0个
B、5个
C、3个
D、6个
E、1个
-
3、
被测程序是一个求和的函数SUM(X, Y),规定其输出范围是10~20,则在选择测试用例时,X、Y可选取以下哪几个作为测试数据?ABCE
A、(5,4)
B、(10,11)
C、(6,4)
D、(7,8)
E、(10,10)
-
4、
以下关于采用的边界值的说法中错误的是D
A、数据库表(或报表)的第一行和最后一行。
B、数组元素的第一个和最后一个。
C、字符串中的第一个字符和最后一个字符。
D、对16-bit的整数而言,32757和-32778是它的边界。
-
5、
根据域测试方法可以把测试域划分为ABD
A、上点
B、离点
C、外点
D、内点
-
6、
用边界值分析法,假定1<X<10,那么X在测试中应该取的边界值是A
A、X=1,X=2,X=9,X=10
B、X=2,X=9
C、X=1,X=10
D、X=1,X=5,X=6,X=10
-
7、
三角形问题的边界值分析测试用例 在三角形问题描述中,除了要求边长是整数外,没有给出其它的限制条件。在此,我们将三角形每边边长的取范围值设值为[1,100],三条边的边长分别为a,b,c。 以下哪个测试用例没有采用边界值分析法?D
A、a=60,b=60,c=1
B、a=50,b=100,c=50
C、a=99,b=50,c=50
D、a=70,b=70,c=70
-
8、
NextDate函数的边界值分析测试用例 在NextDate函数中,隐含规定了变量month和变量day的取值范围为1≤month≤12和1≤day≤31,并设定变量year的取值范围为1912≤year≤2050。 以下哪个测试用例没有采用边界值分析法?D
A、month=6,day=15,year=1912
B、month=1,day=15,year=2000
C、month=6,day=31,year=2000
D、month=6,day=15,year=2000
三.白盒测试
第1关:逻辑覆盖-语句覆盖
-
1、
给定如下案例描述: 编写程序,要求输入读入某汽车销售人员的销售数(以台 计)和每台销售的基础提成数(元)、以及销售人员工种(正式工或临时工),计算并输出他的销售提成。若销售人员销售超过40台且基础提成超过400元,则超过部分按基础提成的1.5倍的来计算。超过50台,如果是正式员工,则超过50台的部分按基础提成的2倍的来计算,否则销售提成仍按照基础提成的1.5倍的来计算。 使用语句覆盖法设计测试用例,要求达到100%的语句覆盖。 以下哪几种测试用例的组合可以达到100%的语句覆盖?ABC
A、销售数量:45 基础提成:1000 工种:正式工
B、销售数量:100 基础提成:1000 工种:正式工
C、销售数量:10 基础提成:1000 工种:临时工
D、销售数量:30 基础提成:1000 工种:正式工
-
2、
针对下面的代码
public int getsum(int num){
int sum = 0;
for(int i = num;i<=100;i++){
sum = sum + i;
}
return sum;
}
为了达到100%的语句覆盖至少需要设计几个测试用例?A
A、1
B、2
C、3
D、4
-
3、
针对下面的代码:
public int fib(int n){
if(n == 0)
return 0;
if(n == 1)
return 1;
if(n >= 2)
return fib(n-1) + fib(n-2);
else
return -1;
}
为了达到100%的语句覆盖至少需要设计几个测试用例?A
A、2
B、3
C、4
D、5
-
4、
针对下面的代码:
public void test(int x,int y){
int z = 0;
if(x > 0 && y > 0){
z = z / x;
}
if(x > 1 && y > 1){
z = z + 1;
}
if(x == 2 || y < 1){
z = z + 2;
}
}
设计满足语句覆盖的最有效率测试用例。C
A、x = 1,y = 1
B、x = 2,y = 1
C、x = 2,y = 2
D、x = 1,y = 2
第2关:逻辑覆盖-判定覆盖
-
1、
给定如下案例描述: 编写程序,要求输入读入某汽车销售人员的销售数(以台 计)和每台销售的基础提成数(元)、以及销售人员工种(正式工或临时工),计算并输出他的销售提成。若销售人员销售超过40台且基础提成超过400元,则超过部分按基础提成的1.5倍的来计算。超过50台,如果是正式员工,则超过50台的部分按基础提成的2倍的来计算,否则销售提成仍按照基础提成的1.5倍的来计算。 使用判定覆盖法设计测试用例,要求达到100%的判定覆盖。 以下哪几种测试用例的组合可以达到100%的判定覆盖?ABC
A、销售数量:45 基础提成:1000 工种:正式工
B、销售数量:100 基础提成:1000 工种:正式工
C、销售数量:10 基础提成:1000 工种:临时工
D、销售数量:30 基础提成:1000 工种:正式工
-
2、
针对下面的代码:
public int Test(int a,int b,int c,int d){
int result;
if((a || b) && (c || d))
result = 1;
else
result = 0;
return result;
}
以下哪几种测试用例的设计满足判定覆盖?BCD
A、TestCase1: a = 1 , b = 1, c = 1,d = 1,result=1 TestCase2: a = 1 , b = 0, c = 1,d = 0,result=1
B、TestCase1: a = 0 , b = 1, c = 0,d = 1,result=1 TestCase2: a = 0 , b = 0, c = 0,d = 0,result=0
C、TestCase1: a = 0 , b = 1, c = 0,d = 1,result=1 TestCase2: a = 1 , b = 0, c = 0,d = 0,result=0
D、TestCase1: a = 1 , b = 1, c = 1,d = 1,result=1 TestCase2: a = 0 , b = 0, c = 0,d = 0,result=0
-
3、
针对下面的代码:
public int fib(int n){
if(n == 0)
return 0;
if(n == 1)
return 1;
if(n > 1)
return fib(n-1) + fib(n-2) + fib(n-3);
else
return -1;
}
为了达到100%的判定覆盖至少需要设计几个测试用例?A
A、1
B、2
C、3
D、4
-
4、
针对下面的代码:
public int func(int i){
int sum = 0;
while(i <= 25){
sum = sum + i;
i++;
}
return sum;
}
要达到100%判定覆盖,变量i取什么值效力最高?C
A、0
B、24
C、25
D、26
第3关:逻辑覆盖-条件覆盖
-
1、
给定如下案例描述: 编写程序,要求输入读入某汽车销售人员的销售数(以台 计)和每台销售的基础提成数(元)、以及销售人员工种(正式工或临时工),计算并输出他的销售提成。若销售人员销售超过40台且基础提成超过400元,则超过部分按基础提成的1.5倍的来计算。超过50台,如果是正式员工,则超过50台的部分按基础提成的2倍的来计算,否则销售提成仍按照基础提成的1.5倍的来计算。 使用条件覆盖法设计测试用例,要求达到100%的条件覆盖。 为了达到100%的条件覆盖至少需要设计几个测试用例?A
A、2
B、3
C、4
D、5
-
2、
假设一段程序中有m条判定语句,每条判定语句中有n个条件表达式(每个条件表达式涉及一个变量,例如if(a > 0 && b > 0)这条判定语句中有2个条件表达式,a > 0这个条件表达式涉及a这个变量,b > 0这个条件表达式涉及b这个变量),请问在最优情况下,至少需要设计几个测试用例可以满足条件覆盖?C
A、2n
B、2m
C、2
D、m * n
-
3、
针对下面的代码:
public int Test(int a,int b,int c,int d){
int result;
if((a || b) && (c || d))
result = 1;
else
result = 0;
return result;
}
以下哪种测试用例的选择不满足条件覆盖?D
A、TestCase1: a = 1 , b = 1, c = 1, d = 1,result=1
TestCase2: a = 0 , b = 0, c = 0, d = 0,result=0
B、TestCase1: a = 1 , b = 0, c = 1, d = 1,result=1 TestCase2: a = 0 , b = 1, c = 0, d = 0,result=0
C、TestCase1: a = 1 , b = 0, c = 1, d = 0,result=1 TestCase2: a = 0 , b = 1, c = 0, d = 1,result=1
D、TestCase1: a = 1 , b = 0, c = 1, d = 0,result=1 TestCase2: a = 0 , b = 1, c = 0, d = 0,result=0
-
4、
条件覆盖比判定覆盖强,因为条件覆盖细化到了判定覆盖中的每一个条件表达式,而判定覆盖只关注总的判定结果。B
A、正确
B、错误
第4关:逻辑覆盖-判定/条件覆盖
-
1、
给定如下案例描述: 编写程序,要求输入读入某汽车销售人员的销售数(以台 计)和每台销售的基础提成数(元)、以及销售人员工种(正式工或临时工),计算并输出他的销售提成。若销售人员销售超过40台且基础提成超过400元,则超过部分按基础提成的1.5倍的来计算。超过50台,如果是正式员工,则超过50台的部分按基础提成的2倍的来计算,否则销售提成仍按照基础提成的1.5倍的来计算。 使用判定/条件覆盖法设计测试用例,要求达到100%的覆盖率。 以下哪几种测试用例的组合可以达到100%的判定/条件覆盖率?ACD
A、销售数量:100 基础提成:1000 工种:正式工
B、销售数量:45 基础提成:1000 工种:正式工
C、销售数量:10 基础提成:100 工种:临时工
D、销售数量:100 基础提成:1000 工种:临时工
-
2、
针对下面的代码:
public int Test(int a,int b,int c,int d){
int result;
if((a || b) && (c || d))
result = 1;
else
result = 0;
return result;
}
以下哪种测试用例的设计满足判定/条件覆盖?A
A、TestCase1: a = 1 , b = 1, c = 1 , d = 1,result=1 TestCase2: a = 0 , b = 0, c = 0 , d = 0,result=0
B、TestCase1: a = 1 , b = 0, c = 1 , d = 0,result=1 TestCase2: a = 0 , b = 1, c = 0 , d = 1,result=1
C、TestCase1: a = 1 , b = 1, c = 1 , d = 0,result=1 TestCase2: a = 0 , b = 0, c = 0 , d = 1,result=1
D、TestCase1: a = 1 , b = 0, c = 1 , d = 0,result=1 TestCase2: a = 0 , b = 1, c = 0 , d = 0,result=0
第5关:逻辑覆盖-条件组合覆盖
-
1、
给定如下案例描述: 编写程序,要求输入读入某汽车销售人员的销售数(以台 计)和每台销售的基础提成数(元)、以及销售人员工种(正式工或临时工),计算并输出他的销售提成。若销售人员销售超过40台且基础提成超过400元,则超过部分按基础提成的1.5倍的来计算。超过50台,如果是正式员工,则超过50台的部分按基础提成的2倍的来计算,否则销售提成仍按照基础提成的1.5倍的来计算。 使用条件组合覆盖法设计测试用例,要求达到100%的覆盖率。 为达到100%的条件组合覆盖率至少需要几个测试用例?C
A、4
B、8
C、12
D、16
-
2、
现有8瓶一模一样的酒,其中一瓶有毒,需要人来测试出毒酒是哪一瓶。每次测试结果8小时后才会得出,而大家只有8个小时的时间。问最少需要几人才能测试出毒酒是哪一瓶?B
A、2
B、3
C、4
D、5
-
3、
针对下面的代码:
public int Test(int a,int b){
int result;
if(a || b)
result = 1;
else
result = 0;
return result;
}
以下哪种测试用例的设计满足条件组合覆盖?A
A、TestCase1: a = 1 , b = 1, result=1 TestCase2: a = 0 , b = 0, result=0 TestCase3: a = 1 , b = 0, result=1 TestCase4: a = 0 , b = 1, result=1
B、TestCase1: a = 1 , b = 1, result=1 TestCase2: a = 0 , b = 0, result=0
C、TestCase1: a = 1 , b = 0, result=1 TestCase2: a = 0 , b = 1, result=1
D、TestCase1: a = 1 , b = 1, result=1 TestCase2: a = 0 , b = 0, result=0 TestCase3: a = 1 , b = 0, result=1
第6关:逻辑覆盖-路径覆盖
-
1、
给定如下案例描述: 编写程序,要求输入读入某汽车销售人员的销售数(以台 计)和每台销售的基础提成数(元)、以及销售人员工种(正式工或临时工),计算并输出他的销售提成。若销售人员销售超过40台且基础提成超过400元,则超过部分按基础提成的1.5倍的来计算。超过50台,如果是正式员工,则超过50台的部分按基础提成的2倍的来计算,否则销售提成仍按照基础提成的1.5倍的来计算。 使用路径覆盖法设计测试用例,要求达到100%的路径覆盖。 为达到100%的路径覆盖,至少需要设计几个测试用例?B
A、2
B、3
C、4
D、5
-
2、
针对下面的代码:
//判断一个数是否为水仙花数,若是水仙花数则返回1,否则返回0
public int IsNarcissisticNumber(int number)
{
if(number <= 99 || number >= 1000)
{
return 0;
}
int a = number%10;
int b = number/10%10;
int c = number/100%10;
if(number == a*a*a+b*b*b+c*c*c)
return 1;
return 0;
}
以下哪种测试用例的设计满足路径覆盖?C
A、TeseCase1: num=99, result=0 TeseCase2: num=1000, result=0 TeseCase3: num=100, result=0
B、TeseCase1: num=99, result=0 TeseCase2: num=1000, result=0 TeseCase3: num=100, result=1
C、TeseCase1: num=99, result=0 TeseCase2: num=153, result=1 TeseCase3: num=100, result=0
D、TeseCase1: num=99, result=0 TeseCase2: num=153, result=1 TeseCase3: num=1000, result=0
第7关:基本路径测试
-
1、
该程序的流图的环形复杂度和独立路径条数分别是多少?B
A、3,3
B、4,4
C、5,5
D、6,6
-
2、
以下哪种测试用例的设计可以覆盖所有的独立路径?A
A、TestCase1: numA = 0, numB = 1 TestCase2: numA = 1, numB = 0 TestCase3: numA = 1, numB = 1 TestCase4: numA = 1, numB = 2
B、TestCase1: numA = 0, numB = 0 TestCase2: numA = 1, numB = 0 TestCase3: numA = 1, numB = 1
C、TestCase1: numA = 1, numB = 0 TestCase2: numA = 1, numB = 1 TestCase3: numA = 1, numB = 2
D、TestCase1: numA = 0, numB = 0 TestCase2: numA = 0, numB = 1 TestCase3: numA = 0, numB = 2 TestCase4: numA = 1, numB = 0
四.单元测试
第1关:使用Junit进行单元测试
//CalculatorTest.javapackage step1;import org.junit.Assert;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
import step1.Calculator;public class CalculatorTest {//引入Calculator对象Calculator calcu = new Calculator();/*请在下面的Begin/End内补全测试函数,来验证Calculator中的add、sub、multiply、divide函数编写是否正确*//***********************Begin**************************/@Testpublic void testAdd(){int result = calcu.add(2, 3);assertEquals(5, result); }@Testpublic void testSub(){int result = calcu.sub(5, 3);assertEquals(2, result); }@Testpublic void testMultiply(){int result = calcu.multiply(4, 5);assertEquals(20, result);}@Testpublic void testDivide(){int res = 0;try{res = calcu.divide(8,2);}catch (Exception e){e.printStackTrace();Assert.fail();}assertEquals(res,4);}@Testpublic void testDivideByZero(){Throwable th = null;try{calcu.divide(5, 0); Assert.fail();} catch (Exception e){th = e;}assertEquals("除数不能为0",th.getMessage());}/************************End***************************/
}
第2关:改进——Junit参数化测试
package step2;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;import java.util.Arrays;
import java.util.Collection;import static org.junit.Assert.assertEquals;//参数化测试类需用@RunWith注解修饰
@RunWith(Parameterized.class)
public class CalculatorTest2 {private int a;private int b;private int expect;@Parameterized.Parameters//prepareData方法会将多个测试用例作为一个Collection返回//Collection中的每个元素都会调用一遍CalculatorTest2类的构造方法//每调用一次构造方法,都会产生一个类对象,每个类对象都会去执行testAdd()方法//这样一来,便实现了使用不同的测试用例运行同一个测试方法的功能public static Collection prepareData(){//请仿照左侧的示例代码,在Begin/End区域内补全代码//要求:构造4组测试用例,对Calculator中的multiply方法进行测试/***********************Begin**************************/return Arrays.asList(new Object[][] {{3, 4, 12}, {-2, 5, -10}, {0, 5, 0}, {-3, -4, 12} });/************************End***************************/}public CalculatorTest2(int a,int b,int expect){this.a = a;this.b = b;this.expect = expect;}@Testpublic void testMultiply() {Calculator calcu = new Calculator();int res = calcu.multiply(a,b);assertEquals(expect,res);}
}
第3关:软件测试的目标和准则
-
1、
下面关于关于测试的说法正确的是:A
A、测试是为了发现程序中的错误而执行程序的过程
B、测试是为了表明程序是正确的
C、成功的测试是没有发现错误的测试
D、经过了严格的测试,程序中就不可能还有没被发现的错误。
-
2、
好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案。A
A、√
B、×
-
3、
应该远在测试开始之前就制定出测试计划。A
A、√
B、×
-
4、
“帕累托定律”指的是D
A、一个设计得好的典型系统的平均扇出通常是3或4。
B、一个人在任何时候都只能把注意力集中在(7±2)个知识块上。
C、C.一个模块的规模最好不超过60行语句。
D、80%的错误是由20%的原因造成的。
-
5、
为达到测试最佳效果,应由独立的第三方从事测试工作。A
A、√
B、×
第4关:软件测试的方法和步骤
-
1、
白盒测试是已经知道了产品应该具有的功能,通过测试检验是否每个功能都能正常使用。B
A、√
B、×
-
2、
黑盒测试是从____观点的测试,白盒测试是从____观点的测试。C
A、开发人员、管理人员
B、用户、管理人员
C、用户、开发人员
D、开发人员、用户
-
3、
白盒测试又称功能测试。B
A、√
B、×
-
4、
黑盒测试又称结构测试。B
A、√
B、×
-
5、
单元测试的目的是保证每个模块作为一个单元能正确运行。A
A、√
B、×
五.软件测试基础
第1关:软件测试的目标和准则
-
1、
下面关于关于测试的说法正确的是:A
A、测试是为了发现程序中的错误而执行程序的过程
B、测试是为了表明程序是正确的
C、成功的测试是没有发现错误的测试
D、经过了严格的测试,程序中就不可能还有没被发现的错误。
-
2、
好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案。A
A、√
B、×
-
3、
应该远在测试开始之前就制定出测试计划。A
A、√
B、×
-
4、
“帕累托定律”指的是D
A、一个设计得好的典型系统的平均扇出通常是3或4。
B、一个人在任何时候都只能把注意力集中在(7±2)个知识块上。
C、C.一个模块的规模最好不超过60行语句。
D、80%的错误是由20%的原因造成的。
-
5、
为达到测试最佳效果,应由独立的第三方从事测试工作。A
A、√
B、×
第2关:软件测试的方法和步骤
-
1、
白盒测试是已经知道了产品应该具有的功能,通过测试检验是否每个功能都能正常使用。B
A、√
B、×
-
2、
黑盒测试是从____观点的测试,白盒测试是从____观点的测试。C
A、开发人员、管理人员
B、用户、管理人员
C、用户、开发人员
D、开发人员、用户
-
3、
白盒测试又称功能测试。B
A、√
B、×
-
4、
黑盒测试又称结构测试。B
A、√
B、×
-
5、
单元测试的目的是保证每个模块作为一个单元能正确运行。A
A、√
B、×
六.软件维护的基本概念-2
第1关:维护的文档
-
1、
()是影响软件可维护性的决定因素。A
A、文档
B、开发人员
C、测试人员
D、运维人员
-
2、
关于用户文档和系统文档,以下说法错误的是()。C
A、用户文档主要描述系统功能和使用方法,并不关心这些功能是怎样实现的
B、系统文档描述系统设计、实现和测试等各方面的内容
C、系统文档是用户了解系统的第一步,它应该能使用户获得对系统的准确的初步印象。
D、用户文档至少应该包括5方面的内容:功能描述、安装文档、使用手册、参考手册。
第2关:可维护性复审
-
1、
()是所有软件都应该具备的基本特点。B
A、可测试性
B、可维护性
C、可修改性
D、可重用性
-
2、
在软件工程过程的每一个阶段都应该考虑并努力提高软件的可维护性,在()的技术审查和管理复审中,应该着重对可维护性进行复审。A
A、每个阶段结束前
B、每个阶段开始前
C、每个阶段结束后
D、每个阶段进行中
-
3、
关于不同阶段评审的陈述,以下说法错误的是(D)。
A、正式的和非正式的设计复审应该从容易修改、模块化和功能独立的目标出发,评价软件的结构和过程。
B、需求分析阶段的复审应该对将来要改进的部分和可能会修改的部分加以注意并指明。
C、代码复审应该 强调编码风格和内部说明文档这两个影响可维护性的因素。
D、配置复审在测试结束前进行最正式的可维护性复审。
第3关:预防性维护
-
1、
(D )是由Miller提出来的,他把这种方法定义为:“把今天的方法学应用到昨天的系统上,以支持明天的需求。”
A、改正性维护
B、适应性维护
C、完善性维护
D、预防性维护
第4关:软件再工程范型
-
1、
软件再工程范型的6类活动不包括以下哪项(D)。
A、库存目录分析
B、文档重构
C、代码重构
D、人员重构
-
2、
关于软件再工程范型的6类活动,以下说法错误的是(C )。
A、老程序固有的特点是缺乏文档。
B、软件的逆向工程是分析程序以便在比源代码更高的抽象层次上创建出程序的某种表示的过程。
C、数据重构是最常见的再工程活动。
D、正向工程也称为革新或改造。
第5关:软件维护的定义
-
1、
软件维护是软件生命周期的(D)阶段。
A、第一个
B、第二个
C、第三个
D、最后一个
-
2、
请问下面哪些行为造成了软件的变化,从而使得爬虫软件需要进行软件维护?ABCD
A、原有的爬虫不存在的功能
B、需要在原爬虫不支持的环境上部署
C、原有爬虫的错误
D、需要支持新的硬件设备
-
3、
当工程技术人员修改这个爬虫软件的内部代码,使得爬虫软件在原来不支持的环境也可以运行,我的这种行为算什么?B
A、软件集成
B、软件维护
C、软件实现
D、软件测试
-
4、
当技术人员发现爬虫里面的代码缺陷和错误,并且修复错误,这种行为属于:B
A、预防性维护
B、改正性维护
C、适应性维护
D、完善性维护
-
5、
软件维护中进行得最少的部分是(D)
A、改正性维护
B、适应性维护
C、完善性维护
D、预防性维护
第6关:软件维护的特点
-
1、
关于结构化维护与非结构化维护,以下说法错误的是(C)。
A、非结构化维护中软件配置的唯一成分是代码。
B、非结构化维护中不能进行回归测试,维护代价大。
C、结构化维护中,维护从详细设计文档开始
D、结构化维护可以进行回归测试
-
2、
软件生命周期中所花费用最多的阶段是(D )。
A、详细设计
B、软件编码
C、软件测试
D、软件维护
-
3、
Belady 和 Lehman 提出了一种维护工作量模型,以下公式正确的是(A)。
A、
B、M=P+K×expC−D
C、M=P+K×expD−C
D、M=P+K×ln(D−C)
M=P+K×ln(C−D)
-
4、
Linus torvalds 说过:never break user space,对开发者来说意味着:我们必须保证在引入新代码时,老代码仍然能正常工作,Linux 只会保留一个越来越小的核心内核,其他所有内核功能都由用户定义。Kubernetes 和 docker 是 go 语言开发、体现这种趋势的 2 个著名开源项目。 https://github.com/docker https://github.com/kubernetes/kubernetes k8s(Kubernetes)能处理的节点和群集大小非常灵活和自动化,很多互联网公司使用它。 但是 2021.1 月据统计,所有 K8s 集群的80%观察到的节点少于 10 个,低于 5 个节点的占60%。K8s 可以大规模扩展,大多数人没有那样使用它。
同时:虽然 Kubernetes 总体上极受欢迎,但规模最小的公司(1-5 名员工)更常 使用 Docker Swarm(41% 的公司使用 Swarm,31% 的公司使用 Kubernetes) 通过阅读上述材料,从软件维护活动的总工作量的公式中的P,K,C,D来解释这种现象,以下说法错误的是(D)
A、P 代表的是互联网公司的运维或者开发人员了解k8s/docker swarm的架构和功能,理解它们应用场景、安装、运行甚至进行fork和fix修改的工作量
B、D 代表的是是运维和开发人员对 k8s/docker swarm 的熟悉程度(个人开发者和小公司往往对 docker 更为熟悉,而大公司因为业务需要,有大规模集群需求,所以往往倾向于 k8s)
C、复杂性 C 在 docker 比 k8s 复杂性低很多
D、K 作为经验常数,普通开发者和运维人员的 docker 的 K 值要小于 k8s.
第7关:软件维护的过程
-
1、
根据软件问题报告(维护要求),作出的软件修改报告包含的信息主要有:(ABCD)。
A、满足维护要求表中提出的要求所需要的工作量;
B、维护要求的性质;
C、这项要求的优先次序;
D、与修改有关的事后数据(如测试数据等);
-
2、
以下不属于保存维护记录的是(D)。
A、程序标识;
B、软件工程师的名字;
C、使用的程序设计语言;
D、程序改动的日期的天气;
第8关:软件的可维护性
-
1、
决定软件可维护性的因素不包括(D)。
A、可理解性
B、可测试性
C、可移植性
D、可利用性
-
2、
伯克利科学家Steven Weber说:“软件或许就是推动当今技术革命的蒸汽机,而开源社区的想法比起所产生的代码更具有深远意义。开源已经改变,并将继续改变软件开发的方式” git 是开源社区标配软件,git工作流程中的fork工作流程如下:B
假设你公司发现k8s在95%时候满足要求,但是有需要公司开发-运维团队根据开源项目文档进行一些接口函数修改,以便于部署到一种新的硬件系统。这种行为属于以下哪种行为()。
A、Reverse Engineering
B、Re-engineering
C、Debug
D、Review
-
3、
以下有关影响维护工作量的因素的陈述中,错误的是(D)。
A、系统越大,功能越复杂,理解掌握起来就越困难,需要的维护工作量越大。
B、老系统比新系统需要更多的维护工作量。
C、使用数据库工具,可有效地管理和存储用户程序中的数据,可方便地修改、扩充报表。
D、语言的功能越强,生成程序所需的指令数就越多。
七.设计模式
-
1、
模式的关键是将一个对象定义为原型,并为其提供复制自己的方法。A
A、A.原型
B、创建者
C、工厂方法
D、迭代
-
2、
策略模式的意图是A
A、定义一系列的算法,把它们一个个的封装起来,并且使它们可相互替换。
B、为一个对象动态连接附加的职责。
C、你希望只拥有一个对象,但不用全局对象来控制对象的实例化。
D、在对象之间定义一种一对多的依赖关系,这样当一个对象的状态改变时,所有依赖于它的对象都将得到通知并自动更新。
-
3、
将一个类的接口转换成客户希望的另一个接口。这句话是对下列哪种模式的描述C
A、策略模式
B、桥接模式
C、适配器模式
D、单例模式
-
4、
()将抽象部分与它的实现部分分离,使它们都可以独立地变化B
A、组合
B、桥接
C、责任链
D、状态
-
5、
设计模式具有的优点A
A、适应需求变化
B、程序易于理解
C、减少开发过程中的代码开发工作量
D、简化软件系统的设计
-
6、
以下哪些问题通过应用设计模式不能够解决C
A、指定对象的接口
B、针对接口编程
C、确定软件的功能都正确实现
D、设计应支持变化
-
7、
对数据库的操作一般包括连接、打开、使用、关闭等步骤,对于不同类型的数据库,其操作步骤都一致,只是连接数据库方法有所区别,可以使用(C)对其进行设计
A、工厂方法模式
B、访问者模式
C、模板方法模式
D、责任链
-
8、
现在大多数软件都有撤销(Undo)的功能,快捷键一般都是Ctrl+Z。这些软件可能使用了( A)模式来进行。
A、备忘录
B、访问者
C、模板方法
D、责任链
-
9、
假设猫是老鼠和狗的观察目标,老鼠和狗是观察者,猫叫老鼠跑,狗也跟着叫,可以使用(B )描述该过程。
A、命令
B、观察者
C、责任链
D、单例
-
10、
工厂方法模式的核心是A
A、一个抽象工厂
B、一个具体工厂
C、一个接口
D、没有核心
-
11、
Strategy意图是定义一系列的算法,把它们一个个▁▁▁▁▁起来,并且使它们可相互替换。
填空1答案:封装
-
12、
▁▁▁▁▁模式使原本接口不兼容而不能一起工作的类可以一起工作。
填空1答案:适配器
-
13、
组合模式对单个对象▁▁▁▁▁和组合对象▁▁▁▁▁的使用具有一致性。
填空1答案:叶子对象
填空2答案:容器对象
-
14、
桥接模式包括抽象类、扩充抽象类、实现类接口和▁▁▁▁▁四个角色
填空1答案:具体实现类
-
15、
状态模式的关键是引入了一个▁▁▁▁▁来专门表示对象的状态,这个类我们叫做抽象状态类
填空1答案:抽象类