一,软件测试和软件开发有什么关系?
1.没有软件开发就没有测试,,软件开发提供软件测试的对象。
2.软件开发和软件测试都是软件生命周期中重要组成部分
3.软件开发和软件测试都是软件过程中的重要活动
4.软件测试是软件开发产物质量的重要手段
区别:
1.从难易程度:研发的广度小,专业度高;测试的广度大,专业度小
2.发展前景:测试和研发发展前景差不多一致
3.繁忙程度:测试一般比研发请轻松,单但是敏捷模式下差别不大,产品发布前压力较大
4.技能要求:测试要求更广泛,业务能力 设计和架构分析能力 测试手段和工具使用 用户模型分析和理解 编程能力
二,测试覆盖的方法:
1.语句覆盖
2.判定覆盖(分支覆盖)
3.条件覆盖
4.判定—条件覆盖
5.条件组合覆盖(查错能力最强)
6.路径覆盖
三.存储媒体
存储媒体(Storage Medium)指用于储存表示媒体的物理介质,也称为储存媒体。如硬盘、软盘、光盘和胶卷、闪存、U盘、CF卡、SD卡、MMC卡、SM卡、记忆棒(Memory Stick)、xD卡等 ,也称为储存媒体。
四.下列程序段的时间复杂度是
count=0;
for(k=1;k<=n;k*=2)
for(j=1;j<=n;j++)
count++;
A.O(log2n)
B.O(n)
C.O(nlog2n)
D.O(n2)
[解析] 题目中给出了一个2层的嵌套循环,循环“for(j=1;j<=n;j++)”的时间复杂度是O(n),循环“for(k=1;k<=n;k*=2)”:k从1开始,每次增加一倍,也就是以2t的速度增长,当k达到n时t=log2n,因此这一循环的时间复杂度是O(log2n),对于嵌套循环的整体复杂度是两层循环的复杂度的乘积,因此总体的时间复杂度是O(nlog2n)。
五.软件生存周期过程中,修改错误代价最大的阶段是__D____。
A.需求阶段
B.设计阶段
C.编程阶段
D.发布运行阶段
[解析] 在软件测试原则中强调测试人员要在软件开发的早期进行测试,如需求分析阶段就应该介入,问题发现的越早越好。发现缺陷后要尽快修复缺陷,因为随着产品开发工作的进行,一个小错误会扩散成大错误,为了修改后期的错误所作的工作要大得多,即越到后来往前返工也越远,缺陷发现或解决得越迟,成本就会越高。Boehm在书中明确指出,修正错误的代价不是随时间线性增长,而几乎是呈指数增长的。
六.当一个主机从一台网络移到另一台网络时,必须改变IP地址,不需要改动MAC地址
MAC地址也称硬件地址,是固定不变的,而IP地址是计算机连接互联网的唯一身份标识,从一个网络移到另一个网络时,需改变。
七.ISO 9126质量模型
1.软件质量模型的六大特性:功能性,可靠性,易用性,维护性,可移植性,效率。
八.黑盒测试
1.采用黑盒测试技术设计测试用例的方法有:等价类划分,边界值分析,错误推测,因果图和综合策略。
2.黑盒测试的方法:
基于用户序求的测试,等价类 边界值 错误分析法 因果图
判定表驱动分析方法 正交实验设计方法 功能图分析方法
3.白盒测试针对程序内部逻辑结构,测试手段有:
语句覆盖 判断覆盖 条件覆盖 路径覆盖 条件组合覆盖
九.软件测试的原则:
1.测试显示缺陷的存在
2.穷尽测试时不可能的
3.测试应该尽早的介入
4.缺陷的集群性(80%的错误集中在20%的程序模块中)
5.杀虫剂驳论(测试用例需要不断的修改,有探索性思维和逆向思维)
6.测试活动依赖于测试内容
7.没有失效不代表系统是可用的
8.测试的标准是用户的需求
9.尽早定义产品的质量标准
10.测试贯穿于整个生命周期
11.第三方或者独立的测试团队
十.集成测试对的工作开展更多站在测试人员的角度上
系统测试站在用户的角度上
十一.集成测试划分为五个阶段:
制定集成测试的计划 设计集成测试
实施集成测试 执行集成测试 评估集成测试
软件开发的基本过程:需求分析 设计 实现 测试 维护
测试报告的组成:首页 引言部分 测试概要 测试结果及缺陷分析
测试结论及建议
十二.简述软件测试生命周期及各阶段内容
1.需求阶段:测试人员了解需求对需求进行分解,得出测试需求
2.计划阶段:根据需求编写测试计划或测试方案
3.设计阶段:测试人员搭建测试用例框架,根据需求和设计编写一部分测试用例
4.编码阶段:测试人员一般不需要编写代码,但是已经编码的模块,白盒测试人员可以执行单元测试,完善测试用例和调整测试计划及方案
5.测试阶段:根据测试用例和测试计划执行测试,在执行的过程中记录管理缺陷,测试完成后编写测试报告
6.运行维护:测试人员需要参与项目的实施工作,测试人员对项目的业务和操作非常了解,所以测试人员可以参与用户使用软件的培训,在运行项目的时候收集问题并及时反馈给相关负责人。
十三.数据不一致性(指数据的矛盾,不相容性)产生对的原因是:
1.由于数据冗余造成(根本原因)
2.由于并发控制不当造成
3.由于各种故障,错误造成的
十四.进程的同步与互斥使用程序的()引起????
十五.堆排序,归并排序 时间复杂度不会超过nlogn十六.在操作系统中,进程是一个资源分配和调度的基本单位,也是一个独立运行
的实体。
十七.字符串strcpy函数 C语言面试题分析
strcpy(字符数组1,字符串2)
1.strcpy该函数是通过第二个参数的字符串的结束符来判断是否拷贝结束的;
2.strlen函数得到字符串的长度,是不包含字符串结束符的;
3.使用strcpy函数的时候,一定要注意第一个字符数组的大小至少不小于字符串2的大小,否则便是访问越界;
4.字符串2后面的`\0`也一同被复制到字符数组1中;
程序片段一:
void test1()
{
char string[10];
char* str1="0123456789";
strcpy(string, str1);
}
这里string数组越界,因为str1字符的长度是10,还有一个结束符‘/0’。所以总共有11个字符长度。而string数组大小为10,所以就越界了。
PS:使用strcpy函数的时候一定要注意前面目的数组的大小一定要大于后面字符串的大小,否则便是访问越界。
程序片段二:
void test2()
{
char string[10], str1[10];
int i;
for(i=0; i<10;i++)
{
str1[i] ='a';
}
strcpy(string, str1);
}
这里最大的问题还是str1没有结束符,因为strcpy的第二个参数应该是一个字符串常量。该函数就是通过判断第二个参数的结束符来判断是否拷贝结束的。所以在for循环后面应加上str1p[9] = '/0';
PS:字符数组和字符串的最明显的区别就是字符串会被默认的加上结束符‘/0’。
程序片段三
void test3(char* str1)
{
char string[10];
if(strlen(str1)<=10)
{
strcpy(string, str1);
}
}
这里的问题仍是越界问题。strlen函数得到字符串的长度,是除结束符之外的。如果str字符串的长度正好等于10的话,就很明显越界了。
int &reiv;//错误,引用不能为空
int *pi;
int iv3=999;
*pi=5;//整数指针没能指向一个确切的地址
pi=&iv3;//正确
const double di;//错误,const常量赋值时,必须同时初始化。
十八.一个局域网中某台主机的IP地址为176.68.160.12,使用22位作为网络地址,那么该局域网的子网掩码为
255.255.252.0
【解析】子网掩码和IP地址一样都是32比特位,该局域网使用22位作为网络地址,则子网掩码为
11111111.11111111.11111100.00000000 ,转化为十进制为255.255.252.0
十九.写一个标准宏MIN,这个宏输入两个参数并返回较小的一个
#define MIN(x,y) ((x) < (y) ? (x) : (y))