2010Tecent实习笔试总结
一、关于UML类图 符号
1、 继承(泛化):一条闭合的单箭头(或空心三角形)
2、 关联:一条线连接两个类,关联的方向涌一个实心三角形箭头来指明;关联可以双向或者单向的,也可以是好几个类连接同一个类;
一个双向关联用两个类间的实线表示。在线的任一端,可放置一个角色名和多重值。
3、 聚合:在基本的聚合关系中,部分类的生命周期独立于整体类的生命周期。例如:车和车轮轮胎
为了表现一个聚合关系,可以画一条从父类到部分类的实线,并在父类的关联末端画一个未填充的菱形。
4、 组合:一种特殊的聚合关系,整体拥有各部分,部分与整体共存,整体不存在,部分也随之消失。
组合关系如聚合关系一样绘制,不过是实心菱形。
5、接口(实线):一条带有闭合的单向箭头的点线意味着实现(或实施)
二、软件测试-路径测试,设计测试用例
软件测试方法:黑盒测试、白盒测试;
白盒测试:已知程序内部工作流程,依据程序的内部逻辑结构,针对程序的逻辑路径设计测试用例。
黑盒测试:根据已知程序的功能和性能(而不是内部细节),通过测试检验每个功能和性能是否正常。
–单元测试:测试程序中每个模块是否有错误(白盒)
–集成测试:测试软件总体结构是否有错误(黑盒)
–确认测试:测试软件是否满足用户需求(黑盒)
白盒测试设计多少测试用例?覆盖准则
–语句覆盖:语句覆盖就是设计若干个测试用例,运行被测试程序,使得每一条可执行语句至少执行一次。最弱
–分支覆盖:或称判定覆盖,设计若干个测试用例,运行所测程序,使程序中每个判断的取真分支和取假分支至少执行一次。
- 条件覆盖:设计足够的测试用例,运行所测程序,使程序中每个判断的每个条件的每个可能取值至少执行一次。
- 判定-条件覆盖:设计足够的测试用例,运行所测程序,使程序中每个判断的每个条件的每个可能取值至少执行一次,并且每个可能的判断结果也至少执行一次。
- 条件组合测试:设计足够的测试用例,运行所测程序,使程序中每个判断的所有条件取值组合至少执行一次。
参见http://star.aust.edu.cn/~jjguan/guanjj/rjgc/chapter6/cha6_4_c1.htm
–路径覆盖:设计足够的测试用例,运行所测程序,要覆盖程序中所有可能的路径。
基本路径测试法:设计出的测试用例要保证每一个基本独立路径至少要执行一次。
按照基本路径测试方法设计测试用例:
1、画控制流图:
2、通过分析环形复杂性,计算圈复杂度(即区域数):导出程序基本路径集合中的独立路径条数,这是确定程序中每个可执行语句至少执行一次所必须的测试用例数目的上界。
3、导出测试用例(用例个数=圈复杂度)
. 基本路径测试方法举例
如下面的C函数:
void Sort(int iRecordNum,int iType)
1 {
2 int x=0;
3 int y=0;
4 while (iRecordNum-- > 0)
5 {
6 if(iType==0)
7 x=y+2;
8 else
9 if(iType==1)
10 x=y+10;
11 else
12 x=y+20;
13 }
14 }
第一步:画出控制流图
入口
4
14 6
9 7
10 12
13
第二步:计算圈复杂度
测度的软件度量,将该度量用于计算程序的基本的独立路径数目,为确保所有语句至少执行一次的测试数量的上界。
有以下三种方法计算圈复杂度:
1、流图中区域的数量对应于圈复杂度;
2、给定流图G的圈复杂度-V(G),定义为 V(G)=E-N+2,E是流图中边的数量,N是流图中结点的数量;
3、给定流图G的圈复杂度-V(G),定义为V(G)=P+1,P是流图G中判定结点的数量。
第三步:导出测试用例
根据上面的计算方法,可得出四个独立的路径:
路径1:4-6-7-13-4-14
路径2:4-6-9-12-13-4-14
路径3:4-6-9-10-13-4-14
路径4:4-14
根据上面的独立路径,去设计输入数据,使程序分别执行上面四条路径。
三、快速排序(Quick Sort)