篇一:北大青鸟软件测试基础知识
1、什么是软件的特点:
1>
2>
3>
4>
5>
6>
7> 软件是一种逻辑实体 软件的生产和硬件的生产不同 软件运行和使用没有机械磨损和老化 软件的开发和运行对计算机系统有一定的依赖性 软件是复杂的 软件成本相当昂贵 相当多的软件工作涉及社会因素
2、软件的分类:
按功能:系统软件、支撑软件、应用软件 按规模:小型、中型、大型 按技术特点:业务软件(ERP)、科技软件、嵌入式软件、实时软件(监控)、个人计算机软件、人工智能软件 按技术架构:单机版软件、C/S结构软件(C是指客户端, S指服务器端)、B/S结构软件(B是指浏览器)
3、驱动模块:用以模拟被测模块的上级模块,在单元测试中启动被测模块,接受测试数据, 传送数据给被测模块并打印出相应结果。 桩模块:由被测模块调用,用以模拟被测模块工作过程中所调用的模块
4、软件生命周期的瀑布模型:计划?需求分析?设计?编码?测试?运行维护
软件测试生命周期:制定测试计划?测试设计和开发?实施软件测试?评审?版本发布 5、配置测试环境原则:
1>
2>
3>
4> 符合软件运行的最低要求 选用比较普及的操作系统和软件平台 营造相对简单、独立的测试环境 无毒的环境
6、软件测试按阶段分为:单元测试?集成测试?确认测试?系统测试?验收测试
单元测试:又称为模块测试,是最小单位的测试,在系统开发过程中进行的测试活动。
集成测试:也称综合测试,是在单元测试基础上将已通过的单元模块按设计要求组装成
系统或子系统再进行的测试
系统测试:将通过确认测试的软件作为整个计算机系统的一个元素在实际运行环境中对
计算机系统进行全面的功能覆盖。
验收测试:软件交给用户前的最后一道工序目的是向客户和承包人证明产品是可靠的。
必须有用户或用户代表参加,并在实际运行环境下进行。
软件测试按策略分为:静态测试和动态测试
静态测试:不运行程序本身而寻找代码中可能存在的错误或评估程序代码的过程 动态测试:实际运行被测试程序,输入相应测试实例,检查运行结果和预期结果的差异
等,动态测试有两种主要的方法:白盒测试和黑盒测试。
动态测试由三部分组成:构造测试用例、根据测试实例运行程序、分析程序的输出结果。
7、软件设计和编码阶段的工作流程:
8、静态测试特点:
1> 不必运行程序、设计用例、判断结果
2> 可以由人工进行,充分发挥伯逻辑思维优势
3> 不需要特别的条件,容易开展
动态测试特点:
1> 实际运行程序取得程序真实情况并分析结果
2> 必须生成测试数据来运行程序,测试质量依赖于测试数据
3> 工作量大,费时、费力、费人
4> 涉及多方面工作,需要有较好的管理和工作规程
9、 黑盒测试:又称功能测试、数据驱动测试或基于规格说明书的测试。着重于测试软件
的功能性需要。
白盒测试:又称结构测试、逻辑驱动测试或基于程序本身的测试。
压力测试:获取系统正确运行的极限,检查系统在瞬间峰值负荷下正确执行的能力。如:
一个人不吃饭不喝水不7-8天后就会死(极限值)。
负载测试:用于检查系统在使用大量数据时的正确工作能力。如:一个人只喝水可以支
撑10-15天(在高负荷条件下所能支撑的最长时间)。
功能测试:又称正确性测试,它检查软件的功能是否符合规格说明。
性能测试:检查系统是否满足在需要说明书中规定的性能,主要是测试软件处理事务的速度,通常使用自动化测试工具运行测试。
10、软件测试的原则:
1> 尽早地进行测试,并把软件测试贯穿于整个软件生命周期
2> 软件测试应追溯需要
3> 测试应由第三方来构造
4> 穷举测试是不可能的,要遵循Good-Enough原则
5> 必须确定预期输出结果
6> 必须彻底检查每个测试结果
7> 充分注意测试中的群集现象
8> 缺陷的二八原则
9> 要严格执行测试计划,排除测试的随意性
10> 测试时既要注意合法的输入也要注意非法的非预期的输入
11> 检查程序是否做了应该做的同时也做了不该做的
12> 测试应由小规模到大规模进行
13> 必须不断编写不同的新测试用例
14> 要关注缺陷的修复
11、软件测试的V模型:
12、软件风险分析的目标:确定测试对象、测试的优先级及测试的深度、有时可能还包括确定不予测试的对象。
风险分析小组包括:开发人员、测试人员、用户、销售人员。
风险分析也应该在软件生命周期内迟早进行且在项目进行过程中时时进行。 13、如何进行风险分析:
1>
2>
3>
4> 成立头脑风暴小组 编制特征列表 确定可能性 确定影响
5> 赋值
6> 确定风险优先级
7> 评审/修改值
8> 排定特征的优先级
9> 确定“分割线”
10> 考虑缓解风险
头脑风暴小组规则:
1、 不准批评或争论
2、 充分发挥成员的想像力
3、 征求到的意见越多越好
4、 及时整理、汇总意见
14、软件测试概念:使用人工或自动手段来运行或测试某个系统的过程,其目的在于检验它是否满足规定的需要或弄清预期结果与实际结果之间的差别。
软件测试活动:制定测试计划、设计测试用例、实施测试、提交缺陷报告、测试总结。 15、测试的根本目的:确保最终交给用户的产品符合用户的需求,在产品交给用户之前尽可能多地发现并改正问题。
16、测试工作要达到的目标:
1> 确保产品完成了所承诺或公布的功能且用户可以访问的功能都有明确的书面说明 2> 确保产品满足性能和效率的要求
3> 确保产品是健壮和适应用户环境的
17、测试与调试的区别:
18、软件测试员必备的素质:
1>
2>
3>
4>
5>
6> 责任心 沟通能力 团队合作精神 耐心、细心、信心 时时保持怀疑态度,并且有缺陷预防意识 具备一定的编程经验
19、软件缺陷产生的原因:
1>
2>
3>
4>
5> 人员之间的沟通交流不够、产生误解或根本不交流 程序设计本身有错误 软件复杂性 需要的不断变化 工期短、任务重、时间压力大
6> 参与人员的过度自信
7> 文档不完善
8> 软件开发工具和系统软硬件的支持不完备
20、书定缺陷报告的准则:
1> 保证重现缺陷
2> 分析故障,使用最少步骤重现缺陷 3> 包含所有重现缺陷的必要步骤 4> 方便阅读
5> 一个缺陷一个报告
6> 注意自己的语气
值得注意的经验:
1、 永远报告不可重现的错误
2、 不要夸大程序缺陷
3、 报告小缺陷
4、 报告缺陷要及时
5、 可以引用别人的报告,但要记得署名
6、 不要修改别人的缺陷
篇二:北大青鸟S1内部测试试卷
针对以下题目请选择正确答案(每道题目有一个或多个正确的答案)。每一道题目,所有答案都选对,则该题得分,所选答案错误或不能选出所有正确答案,则该题不得分。
1)在Java中,下面对数组的声明语句不合法的是()。(选择一项)
a) short x[];
b) short []y=new short[2];
c) short []x2;
d)short z2[5]={0,1,2,3,4,};
2)在SQLServer2000中,删除表sample中的所有数据,可以使用如下()语句。 (选择一项) a) Drop table sample
b) Delete from sample
c) Delete * from sample
d) Drop * from sample
3) 在C语言中,下面()正确声明了一个指针变量,并为指针变量赋值。(选择一项) a) int age=10;int ptr;ptr=*age;
b) int age=10;int ptr;ptr=&age;
c) int age=10;int* ptr;ptr=&age;
d) int age=10;int* ptr;ptr=age;
4) 在软件开发过程中,设计阶段的主要目的是设计一下如何把已经确定的需求转换成实际的软件,以下()不是此阶段的内容。(选择一项)
a)构建原型
b)设计数据库
c)设计过程模板
d)编写代码
5)在HTML中,创建一个样式表,可以设置当前页面中ID为compact元素的内容的字体为斜体。下列能实现该功能的代码是()。 (选择一项)
a)<STYLE TYPE=”text/css”>compact{font-style:italic;}</STYLE>
b) <STYLE TYPE=”text/css”>@compact{font-style:italic;}</STYLE>
c) <STYLE TYPE=”text/css”>.compact{text-style:italic;}</STYLE>
d) <STYLE TYPE=”text/css”>#compact{font-style:italic;}</STYLE>
6) 在Java中,访问修饰符限制性最高的是(),被其修饰的成员只能被该类的成员访问。 (选择一项)
a)private
b)protected
c)public
d)friendly
7) 在C语言中,下列选项不能用作变量标识符的是()。(选择一项)
a)1_ABC
b)_2av
c)wec
d)int_3_
8) 在HTML中,下列()HTML代码可以实现如图所示的效果。(选择一项)
水果
1.苹果
2.桔子
3.香蕉
a)<OL>
水果
<Li>苹果
< Li >桔子
< Li >香蕉
</OL>
b) <UL>
水果
<Li>苹果
< Li >桔子
< Li >香蕉
</UL>
c) <OL>
<Li>水果<Li>
<Li>苹果
< Li >桔子
< Li >香蕉
</OL>
d) <UL>
<Li>水果<Li>
<Li>苹果
< Li >桔子
< Li >香蕉
</UL>
9) 在C语言中,为了输出1 3 5 7 9,请问在空白处应该填写的代码是()。 (选择一项)
void main()
{
int i;
for(i=0;i<5;i++)
{
printf(“%d\t”,空白处);
}
}
a)i+1
b)(i+1)/2+1
c) (i+1)*2-1
d) i*2-1
10)给定某Java程序的main方法如下所示,该程序的运行结果是()。 (选择一项) public static void main(String[]args){
int i=0;
system.out.println(i++);
}
a)0
b)1
c)编译错误
d)运行时出现异常
11) 在十六进制数制系统中,使用()表示十进制数制系统中的13。(选择一项) a)A
b)B
c)C
d)D
12) 在HTML中,下面()语句可以将标题1的颜色设置成绿色。(选择一项) a) <H1 color; green>
b)<H1 STYLE:”color=green”>
c) <H1 STYLE=”color:green”>
d) <H1 STYLE: green>
13) 分析如下的HTML代码,以下图中,()是网页中显示的样式。(选择一项) <TABLE BORDER=1>
<TH COLSPAN=2>考核清单</TH>
<TR>
<TD>考核工资</TD>
<TD COLSPAN=2>2500</TD>
</TR>
<TR>
<TD>考核项</TD>
<TD>分值</TD>
<TD>得分</TD>
</TR>
</TABLE>
14) 要在SQL Server2000数据库中创建一个网站用户信息表,其中用户的Email地址用一个字段来存储,规定Email地址中需要含有“@”和“.”字符,这一规定可以采用()来实现。(选择一项)
a)主键约束
b)外键约束
c)检查约束
d)默认约束
15) 在Java中,以下()类的对象以键-值得方式存储对象。(选择一项)
a) java.util.ArrayList
b) java.util.Vector
c) java.util.HashMap
d) java.util.LinkedList
16) 在用户安装Windows2000操作系统时,出于对计算机的安全与性能考虑,用户应该选用()文件系统。(选择一项)
a) FAT
b)FAT32
c)NTFS
d)FAT16
17) 分析下列C语言程序,运行后输出的正确结果是()。(选择一项)
int i;
for(i=0;i<4;i++){
printf(“%d”,i);
}
a)123
b)1234
c)0123
d)01234
18) 在Java中,下面关于构造方法的说法错误的是()。(选择一项)
a)当一个类未定义构造方法时,Java虚拟机便提供一个默认构造方法。
b)构造方法不能够被重载
c)构造方法可以接受参数
d)当类的父类只有一个带参数的构造方法时,这个类必须提供自定义的构造方法
19) JavaScript中的switch语句的语法如下:
switch(表达式){
case常量1;
语句;
break;
case常量2;
语句;
break;
……
default:
语句;
}
下面对switch语句的描述正确的是()。(选择一项)
a) switch语句用于重复执行一个语句块的操作
b) switch语句根据表达式的值执行若干语句块之一,如果没有匹配项,则执行默认块中的语句
c) switch语句表达式中值不能与后面的case语句中的常量相匹配时将出现运行错误 d) switch语句又叫循环语句
20) 在C语言中,关系运算符就是用于测试两个操作数之间关系的符号,以下运算符中不是关系运算符的是()。(选择一项)
a)>
b)<
c)==
d)!
21)Java Swing中,JPanel的默认布局管理器是(),此布局根据组件的首选大小,在一行中对组件进行排列,组件从左上角到右下角依序排列。 (选择一项)
a)FlowLayout
b)BorderLayout
c)GridLayout
d)null
22)分析下面的Java代码片断,正确的输出结果是()。 (选择一项)
int i=0;
for(;i<4;i+=2)
{
System.out.print(i+”,”);
}
System.out.println(i);
a) 0,2
b) 0,2,4
c) 0,2,4,6
d) 0,1,2,3
23) 在C语言有如下for循环代码,为了输出124578的几个数字,在空白处应该填写的代码是()。(选择一项)
int i,a=10;
for(i=0;i<a;i++)
{
//空白处
printf(“%d,i”);
}
a) if(i%3!=0)
{
continue;
}
b) if(i%3==0)
{
continue;
篇三:北大青鸟S1综合测试练习题
《使用Java理解程序逻辑》内部测试-笔试试卷
1) 给定某Java程序的main方法如下所示,该程序的运行结果是( )。
public static void main(String[] args) {
boolean boo = true;
if (boo == false) {
System.out.println("a");
} else {
System.out.println("b");
}
}
2) A. B. C. D. 输出a 输出b 输出ab 运行时出错 在Java中,下列代码的运行结果是( )。
public static void main(String[] args) {
int a=1,b=2,c=3;
if(a<0)
if(b<0)
c=10;
else
c=20;
System.out.println(c);
}
3) A. B. C. D. 输出:10 输出:20 输出:3 编译报错 分析下面的Java程序段,编译运行后的输出结果是( )。
public class Test {
public void changeString(StringBuffer sb) {
sb.append("stringbuffer2");
}
public static void main(String[] args) {
Test a = new Test();
StringBuffer sb = new StringBuffer("stringbuffer1");
a.changeString(sb);
System.out.println("sb = " + sb);
}
}
A. B. C. D. sb = stringbuffer2stringbuffer1 sb = stringbuffer1 sb = stringbuffer2 sb = stringbuffer1stringbuffer2
4) 在Java中,包有多种用途,但不包含( )。
A. 将类组合成较小的单元,便于使用 B. 有助于避免命名冲突
C. 有助于提高运行效率
D. 允许在更广的范围内保护类、数据和方法
5) 在Java中,包com中定义了类TestUtil,在com的子包util中定义了同名类TestUtil,给定如下Java代码,编译运行时,将发生( )。
package net;
import com.util.TestUtil;
import com.TestUtil;
public class Test {
public static void main(String[] args) {
TestUtil testutil = new TestUtil();
}
}
6) A. B. C. D. 创建了一个com.TestUtil对象 创建了一个com.util.TestUtil对象 创建了一个com.TestUtil对象和一个com.util.TestUtil对象 编译无法通过 编译并运行下面的Java代码,( )会出现在输出结果中。
public class Test{
public static void main(String args[]) {
for(int i = 0; i < 3; i++) {
for(int j = 3; j >= 0; j--) {
if(i == j)
continue;
System.out.println("i="+ i + " j="+j); }
}
}
}
A. i=0 j=3 B. i=0 j=0
C. i=2 j=2
D. i=0 j=2
E. i=1 j=1
7) 在Java中,( )关键字用来退出循环,将控制权转给程序的其他部分。 A. return
B. continue
C. break
D. exit
8) 在Java语言的控制结构中,break语句是经常用到的语句。下面一段代码中break语句起到( )的作用。
int pointer = 0;
while (pointer <= 10) {
switch (pointer % 3) {
case 1:
pointer += 1;
break;
case 2:
pointer += 2;
break;
default:
pointer += 3;
break;
}
}
9)
10) A. B. C. D. 结束当次循环,使控制权直接转移到控制循环的条件表达式 从嵌套循环内部跳出最里面的循环 终止switch语句的语句序列,提高switch-case语句性能 退出循环 在Java中,以下( )不属于Java基本数据类型。A. int B. boolean C. String D. double 分析下面的Java代码片段,编译运行后的输出结果是( )。
for (int i = 0; i < 6; i++) {
int k = ++i;
while(k <5) {
System.out.print(i);
break;
}
}
11) A. B. C. D. 024 02 123 13 给定如下Java程序的代码片段,编译运行后的输出结果是( )。
for (int i = 0; i < 6; i++) {
System.out.print(i+",");
while(++i <5) {
continue;
}
System.out.print(i);
}
A. 0,4,5 B. 0,4
C. 0,5
D. 0,6
12) 给定如下Java代码,编译运行后,输出的结果将是( )。
public class Test {
public static void main(String args[]) {
String s1 = new String("Test");
String s2 = new String("Test");
if (s1 == s2)
System.out.println("Same");
if (s1.equals(s2))
System.out.println("Equals");
}
}
13) 给定如下Java程序的方法结构,则方法体实现语句正确的是( )。
public String change(int i){
//方法体
} A. Same B. Equals C. Same Equals D. 什么都不输出
14) A. B. C. D. return 100; return 'a'; return i+""; return i; 给定Java代码如下所示,则编译运行后,输出结果是( )。
public class test{
static int i;
public int aMethod() {
i++;
return i;
}
public static void main(String args[]) {
Test test = new Test();
test.aMethod();
System.out.println(test.aMethod());
}
}
15) A. B. C. D. 0 1 2 3 给定一个Java程序的代码如下所示,则编译运行后,输出结果是( )。
public class Test {
int count = 9;
public void count1() {
int count = 10;
System.out.println("count1=" + count);
}
public void count2() {
System.out.println("count2=" + count);
}
public static void main(String args[]) {
Test t = new Test();
t.count1();
t.count2();
}
}
A. count1=9 count2=9 B. count1=10 count2=9 C. count1=10 count2=10 D. count1=9
count2=10
16) 在Java中,如果要在字符串类型对象s="java"中,得到字母 'v' 出现的位置,可使用以下( )语句。
A. s.matches('v');
B. s.charAt('v');
C. s.indexOf('v');
D. s.substring('v');
17) 给定某Java程序的main方法如下,该程序编译运行后的结果是( )。
public static void main(String[] args) {
String str=null;
str.concat("abc");
str.concat("def");
System.out.println(str);
}
18) A. B. C. D. 输出:null 输出:abcdef 编译错误 运行时出现异常 给定一个Java程序的代码如下所示,则编译运行后,输出结果是( )。
public class Test {
int count = 9;
public void count1() {
count = 10;