测试岗刷题记录1

1.针对手机应用软件的系统测试,我们通常从如下几个角度开展:功能模块测试,交叉事件测试,压力测试,容量测试,兼容性测试,易用性/用户体验测试等.
对手机可以施加的压力测试类型主要有:存储压力、边界压力、 响应能力压力、网络流量压力
2.软件验收测试的合格通过准则是:
1、软件需求分析说明书中定义的所有功能已全部实现,性能指标全部达到要求。
2、所有测试项没有残余的一级二级三级的错误。
3、立项审批表、需求分析文档、设计文档和编码实现一致。
4、验收测试工件齐全(测试计划,测试用例,测试日志,测试通知单,测试分析报告)
3.黑盒测试:黑盒测试也称功能测试或数据驱动测试,它是在已知产品所应具有的功能,通过测试来检测每个功能是否都能正常使用,在测试时,把程序看作一个不能打开的黑盆子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数锯而产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。黑盒测试方法主要有等价类划分、边值分析、因—果图、错误推测等,主要用于软件确认测试。黑盒测试指不涉及运行代码的测试,一般情况下均是手动点点点。
白盒测试:白盒测试也称结构测试或逻辑驱动测试,它是知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确工作,而不顾它的功能,白盒测试的主要方法有逻辑驱动、基路测试等,主要用于软件验证。

具体的黑盒测试用例设计方法包括等价类划分法、边界值分析法、错误推测法、因果图法、判定表驱动法、正交试验设计法、功能图法、场景法等。
白盒测试的测试方法有代码检查法、静态结构分析法、静态质量度量法、逻辑覆盖法、基本路径测试法、域测试、符号测试、路径覆盖和程序变异。
4.测试驱动开发是敏捷开发中的一项核心实践和技术,也是一种设计方法论。TDD得原理是在开发功能代码之前,先编写单元测试用例代码,测试代码确定需要编写什么产品代码。TDD虽是敏捷方法的核心实践,但不只适用于XP(Extreme Programming),同样可以适用于敏感词开发方法和过程。TDD得基本思路就是通过测试来推动整个开发得进行,但测试驱动开发并不只是单纯的测试工作,而是把需求分析,设计,质量控制量化的过程。TDD的重要目的不仅仅是测试软件,测试工作保证代码质量仅仅是其中一部分,而且是在开发过程中帮助客户和程序员去除模棱两可的需求。TDD首先考虑使用需求(对象、功能、过程、接口等),主要是编写测试用例框架对功能的过程和接口进行设计,而测试框架可以持续进行验证。
优点:在任意一个开发节点都可以拿出一个可以使用,含少量bug并具一定功能的产品。
缺点:增加代码量。测试代码是系统代码的两倍或更多。软件验收测试分为三类:
5.软件验收测试包括:正式验收测试;
非正式验收测试其中包括α测试(由用户、测试人员、开发人员共同参与的内部测试。)
β测试(内测后的公测,即完全交给最终用户测试。)
6.系统测试的16个策略:功能测试,性能测试,压力测试,容量测试,安全性测试,GUI测试,可用性测试,安装测试,配置测试,异常测试,备份测试,健壮性测试,文档测试,在线帮助测试,网络测试,稳定性测试
题目中:负载测试属性性能测试,易用性测试属于GUI测试,强度测试属于性能测试,安全测试属于安全性测试,所以以上所有都是系统测试的策略。
7.【软件需求】是软件开发之前做好的,软件开发是根据这个做的,那么软件测试自然也需要参考该文件 【迭代计划】是软件的某个周期的计划,自然也需要参考 【可行性】是软件开发前做好,用于证明该计划可行的,没有必要参考
8.软件测试是使用人工操作或者软件自动运行的方式来检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别的过程。
软件测试的测试目标是发现一些可以通过测试避免的开发风险。
软件测试的原则之一是测试应该尽早进行,最好在需求阶段就开始介入。
软件测试主要工作内容是验证(verification)和确认(validation)
9.系统集成测试主要包括以下过程:
系统集成测试主要包括以下过程:1. 构建的确认过程。 2. 补丁的确认过程。 3. 系统集成测试测试组提交过程。 4. 测试用例设计过程。 5. 测试代码编写过程。 6. Bug的报告过程。 7. 每周/每两周的构建过程。 8. 点对点的测试过程。 9. 组内培训过程。
10. 白盒测试的测试方法有代码检查法、静态结构分析法、静态质量度量法、逻辑覆盖法、基本路径测试法、域测试、符号测试、路径覆盖和程序变异
白盒测试法的覆盖标准有 逻辑覆盖 、循环覆盖和基本 路径测试 。其中逻辑覆盖包括 语句覆盖 、 判定覆盖 、 条件覆盖 、判定/条件覆盖、 条件组合覆盖 和 路径覆盖 。
11.负载测试:在一定的工作负荷下,系统的负荷及响应时间。
强度测试:在一定的负荷条件下,在较长时间跨度内的系统连续运行给系统性能所造成的影响。
容量测试:容量测试目的是通过测试预先分析出反映软件系统应用特征的某项指标的极限值(如最大并发用户数、数据库记录数等),系统在其极限值状态下没有出现任何软件故障或还能保持主要功能正常运行。容量测试还将确定测试对象在给定时间内能够持续处理的最大负载或工作量。容量测试的目的是使系统承受超额的数据容量来发现它是否能够正确处理。
容量测试是面向数据的,并且它的目的是显示系统可以处理目标内确定的数据容量。
12.LoadRunner-负载压力测试:预测系统性能。
JMeter+Badboy:基于JAVA的压力测试工具,Badboy用来进行脚本的录制
功能测试:通过自动录制、检测和回放用户的应用操作。将输出记录同预先给定的记录比较。
Junit:白盒测试工具:针对代码测试
测试管理工具:对测试需求、计划、用例、实施进行管理
测试辅助工具:本身不执行,可以生成测试数据,为测试提供数据准备
负载压力测试:LoadRunner:预测系统行为和性能的工业标准级负载测试工具。模拟上千万用户同时实施并发操作,来实时监控可能发生的问题。
功能测试: QTP(quicktest professional):自动测试工具
白盒测试:C++ TEST(做C和C++的白盒测试)、JUnit(Java白盒测试)
缺陷管理工具:Mantis、BugFree、QC、TD
用例管理工具:TestLink、QC
测试辅助工具:SVN
13.a) 性能
i. 客户端性能
ii.服务器端性能
1.服务器
2.数据库
iii.网络
b)功能
i.从运行完 game.exe 打开游戏界面后可进行的各种操作、玩法
ii.界面
iii.音乐
c)自动化
i.测试工作组织实施中需要的工具、软件、平台的开发
ii.自动化的回归测试作用:游戏中基础的、变动不大的、出错率高的、可进行 checklist 重复测试的功能、性能等自动化是一个好方法
iii.任何时候自动化都取代不了人脑,它只是将一些重复性的劳动从我们测试人员身上去掉,让我们有更多的时间做更有意义的事情,如果你觉得你做一件事情是重复的,且有规律可行的,不防考虑自动化。
14.人工测试:个人复查、抽查和会审,机器测试:黑盒测试和白盒测试
15.1. 基本功能测试: 文件的***粘贴功能,首先关键字“文件”,文件有不同的分类(图片、视频、音频、文档等),每个分类又有不同的类型(文档类型:txt doc execl pdf等),每个文件又有不同的大小,而且文件还有很多权限,是不是隐藏,是不是只是管理员可执行。选择不同分类的不同类型,不同大小的文件做测试资源。比如:文档类型里面txt文件可以分为 1.KB的txt文件、1MB的txt文件、1GB的txt文件。。。。下一个关键字 ***粘贴 ***有多种方式 右击选择、Ctrl+C、 拖动***,对应粘贴也有各种方式。然后从哪***,粘贴到哪,比如 可以有本机硬盘、移动硬盘、优盘、内存卡、软盘、光盘、连接手机存储,***到网络地址等等。***粘贴后文件是不是可用,文件权限是不是有变化。***过去容量不够怎么处理?***过后有重名文件怎么处理?***过程中取消、关机、拔优盘怎么处理?***过程能不能执行文件?

2.性能测试:***粘贴功能性能怎么样?***文件的速度可不可以接受?同时***多个文件是不是可以完成?***文件过程中占用CPU资源大不大,耗电量大不大?

3.兼容性测试 Windows XP, Windows 7, Windows 8 , Windows 8.1, Windows 10等各种windos版本是不是都支持这个功能。

4.交互测试; ***粘贴文件时,使用windows存储的其他功能是否有影响?比如播放本地的音频、视频、等同时***文件是不是有影响。一边***,一边粘贴是不是有影响。
16.【基本功能测试】
功能:
输入正确的网址,进行转码,检查内容是否正确;
边界:
输入信息量非常大的网址
输入没有信息的网址
负值:
输入错误的网址,进行转码,系统是否有相应的提示;
输入的 web 的 page 为空,是否抛出异常;
【兼容测试】
使用不同操作系统的移动设备查看转换后的页面,检查内容是否正确;
使用不同分辨率的移动设备查看转换后的页面,检查内容是否正确;
使用不同浏览器查看转换后的页面,检查内容是否正确;
【性能测试】
测试转码的速度,或者系统的响应时间;
【易用性 / 用户体验测试】
测试转码后,页面显示是否美观;
17.1G=2^10M 1M=2^10KB 1KB=2^10B 32位=2^32B
18.数据链路层:差错控制
网络层:网络互连、路由选择、拥塞控制,通过寻址建立节点间连接
(网络层协议能补偿数据发送、传输以及接收的设备能力的不平衡性。分段和重组是指当数据从一个能处理较大数据单元的网络段传送到仅能处理较小数据单元的网络段时,网络层对数据包进行分段和重组,减小数据单元的大小)
传输层:流量控制
19. CPU 和主存之间增加一级速度快、但容量较小且每位价格较高的高速缓冲存储Cache)。借助于辅助软硬件,它与主存构成一个有机的整体,以弥补主存速度的不足。这个层次的工作主要由硬件实现。CPU处理速度快,但是容量少,内存容量大,但是转交给CPU处理的速度慢,为此需要Cache缓存做一个折中
20.宏定义不检查参数正确性,这样会有安全隐患
21.局域网中目前广泛采用的两种介质访问控制方法,分别是:
1 争用型介质访问控制,又称随机型的介质访问控制协议,如CSMA/CD方式。
2 确定型介质访问控制,又称有序的访问控制协议,如Token(令牌)方式
CSMA/CD可以发现冲突,但是没有先知的冲突检测和阻止功能。
CSMA/CD并不能完全避免冲突,只是发生冲突之后,会检测到冲突的存在,于是在一定时间之后再继续冲突检测,再次发送。
22.0 == '\0'
23.每一个fork()出来的新进程,和父进程使用相同的代码段,***父进程的数据段和堆栈段,不过有“逻辑”***和“物理”***之分,在本题没有影响。也就是说每一个fork()出的新进程和父进程有相同大小的i,并且执行位置也是一样的。
24. 发送 确认
第一次:SYN=1 SEQ=X ACK=0(客)
第二次:SYN=1 SEQ=Y ACK=X+1(服)
第三次: SEQ=X+1 ACK=Y+1(客)
SYN 同步位
25.一个n个顶点的连通无向图,其边的个数至少为n-1
26.1) malloc 函数: void *malloc(unsigned int size)
在内存的动态分配区域中分配一个长度为size的连续空间,如果分配成功,则返回所分配内存空间的首地址,否则返回NULL,申请的内存不会进行初始化。
2)calloc 函数: void *calloc(unsigned int num, unsigned int size)
按照所给的数据个数和数据类型所占字节数,分配一个 num * size 连续的空间。

calloc申请内存空间后,会自动初始化内存空间为 0,但是malloc不会进行初始化,其内存空间存储的是一些随机数据。
3)realloc 函数: void *realloc(void *ptr, unsigned int size)
动态分配一个长度为size的内存空间,并把内存空间的首地址赋值给ptr,把ptr内存空间调整为size。

申请的内存空间不会进行初始化。

4)new是动态分配内存的运算符,自动计算需要分配的空间,在分配类类型的内存空间时,同时调用类的构造函数,对内存空间进行初始化,即完成类的初始化工作。动态分配内置类型是否自动初始化取决于变量定义的位置,在函数体外定义的变量都初始化为0,在函数体内定义的内置类型变量都不进行初始化。
27.线程有自己的栈,但没有堆】。普通整数的一般赋值、增量和减量语句会产生多条机器指令,操作均不具有原子性,需要同步。虚拟存储器具有请求调入和置换功能,所以虚拟内存的大小不受物理内存大小的限制。
28.静态局部变量在函数调用结束后仍然存在,及它的内存空间不会被释放,但其他函数是不能引用它的
29.静态局部变量虽然和全局变量都存放在全局数据区,延长了生命周期,但是作用域不同!作用域不同!作用域不同!重要的事情说三遍,静态局部变量仍然是个局部变量,只对函数内可见。
30.const出现在左边,如const char p,表示p所指向的变量内容不可变,指针指向可以改变;
const出现在右边,如char const p,表示p是个常量指针,即不能指向其他变量,而指向的变量内容可变;
const出现在左边和右边,如const char const p,表示p的指向不能改变,指向的变量内容也不能改变。
31.栈的常见应用:浏览器历史纪录,Android中的最近任务,Activity的启动模式,CPU中栈的实现,Word自动保存,解析计算式,解析xml/json
32.将一棵有100个结点的完全二叉树从根这一层开始,开始进行层次遍历编号,那么编号最小的叶节点的编号为(根节点为1):完全二叉树中,对于编号为i的父结点,左孩子编号为2i',右孩子编号为2i+1;
编号为100的节点对应的父节点编号为50,故最小叶子节点编号为51
33.深拷贝是指源对象与拷贝对象互相独立,其中任何一个对象的改动都不会对另外一个对象造成影响。
浅拷贝是指源对象与拷贝对象共用一份实体,仅仅是引用的变量不同(名称不同)。对其中任何一个对象的改动都会影响另外一个对象。类的静态成员是所有类的实例共有的,存储在全局(静态)区,只此一份,不管继承、实例化还是拷贝都是一份。
34.1xx(临时响应)
2xx(成功)
3xx(已重定向)
301 永久重定向
302 临时重定向
4xx(请求错误)
404 找不到网页
403 已禁止
401 未授权
400 请求失败;服务器不理解请求语法
35.BSS(Block Started by Symbol)通常是指用来存放程序中未初始化的全局变量和静态变量的一块内存区域。特点是:可读写的,在程序执行之前BSS段会自动清0。所以,未初始的全局变量在程序执行之前已经成0了。

数据段:数据段(data segment)通常是指用来存放程序中已初始化的全局变量的一块内存区域。数据段属于静态内存分配。

代码段:代码段(code segment/text segment)通常是指用来存放程序执行代码的一块内存区域。这部分区域的大小在程序运行前就已经确定,并且内存区域通常属于只读, 某些架构也允许代码段为可写,即允许修改程序。在代码段中,也有可能包含一些只读的常数变量,例如字符串常量等。

堆(heap):堆是用于存放进程运行中被动态分配的内存段,它的大小并不固定,可动态扩张或缩减。当进程调用malloc等函数分配内存时,新分配的内存就被动态添加到堆上(堆被扩张);当利用free等函数释放内存时,被释放的内存从堆中被剔除(堆被缩减)

栈(stack):栈又称堆栈, 是用户存放程序临时创建的局部变量,也就是说我们函数括弧“{}”中定义的变量(但不包括static声明的变量,static意味着在数据段中存放变量)。除此以外,在函数被调用时,其参数也会被压入发起调用的进程栈中,并且待到调用结束后,函数的返回值也会被存放回栈中。由于栈的先进后出特点,所以栈特别方便用来保存/恢复调用现场。从这个意义上讲,我们可以把堆栈看成一个寄存、交换临时数据的内存区
36.线程共享的内容包括:

进程 代码段
进程 数据段
进程打开的文件描述符、
信号的处理器、
进程的当前目录和
进程用户 ID 与进程组 ID
线程独有的内容包括:

线程 ID
寄存器组的值
线程的堆栈
错误返回码
线程的信号屏蔽码
37.Ping程序的实现
1 实现方法是主机向远程计算机发出ICMP回显请求以后,远程计算机会拦截这个请求,然后生成一条一条回显应答信息,再通过网络传回给主机。
2 假如某些原因,不能抵达目标主机,就会生成对应的ICMP错误消息("比如 目标主机访问不可达"),由原先打算建立通信的那个路径上某处的一个路由器返回。
3 假定与主机的物理性连接并不存在问题,但远程主机已经关机或没有设置对网路事件作出相应,便需由自己的程序来执行超时检测,侦测出这样的情况。
38.x86是小端存储,即高位存储在高地址,低位存储在低地址。
39.位图表示法,指明该无符号整数是否存在,只需1位(bit)即可表示。
对于65536个不重复的整数,最少需要65536位来表示,65536 bit = (216 / 23)byte = 213 byte = 8k byte.
40.int (pt)[3],首先看括号内,pt说明pt是一个指针,其指向的内容是int[3],具有3个int元素的数组。pt 是一个数组指针指向一个有三个元素的整型数组
41.在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。
第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
服务器发送完SYN-ACK包,如果未收到客户确认包,服务器进行首次重传,等待一段时间仍未收到客户确认包,进行第二次重传,如果重传次数超过系统规定的最大重传次数,系统将该连接信息从半连接队列中删除。注意,每次重传等待的时间不一定相同。
42.free指的是释放该指针所指向的内存资源,指针值没有变化,为了防止指针成为野指针,需要在free后将指针置为NULL。free之后的指针仍然指向原来的堆地址,即仍然可以继续使用,但很危险。因为操作系统已经认为这块内存可以使用,它会毫不考虑的将他分配给其他程序,于是你下次不小心使用到该指针(野指针)时,如果操作系统及时制止了这种行为,报错(非法操作),然后将你的程序杀掉,给你很容易改正错误的机会,这还算比较好的结果!如果操作系统没有制止这种行为,那么产生的后果可就说不准了,说不定整个操作系统会崩溃,那么你再来改正这个错误,就不容易发现咯!所以,最好free了以后再置空,即令指针 = NULL;,表示 本程序已经放弃再使用该指针。
43.1,申请空白PCB(进程控制块);
2,为新进程分派资源;
3,初始化PCB;
4,将新进程插入就绪队列;
44.对算法 无影响的有 堆 直接选择 归并 基数 即最好 和最坏的时间复杂度都是一样的
45.Cache的设计思想是在合理成本下提高命中率,系统开机或复位时,Cache 中无任何内容。当CPU送出一组地址去访问内存储器时,访问的存储器的内容才被同时“拷贝”到Cache中。此后,每当CPU访问存储器时,Cache 控制器要检查CPU送出的地址,判断CPU要访问的地址单元是否在Cache 中。若在,称为Cache 命中,CPU可用极快的速度对它进行读/写操作;若不在,则称为Cache未命中,这时就需要从内存中访问,并把与本次访问相邻近的存储区内容***到Cache 中。
46.spinlock在多处理器多线程环境的场景中有很广泛的使用,一般要求使用spinlock的临界区尽量简短,这样获取的锁可以尽快释放,以满足其他忙等的线程。Spinlock和mutex不同,spinlock不会导致线程的状态切换(用户态->内核态),但是spinlock使用不当(如临界区执行时间过长)会导致cpu busy飙高。
47.1)backlog 用于在TCP层接收链接的缓冲池的最大个数,这个个数可在应用层中的listen函数里设置,当客户链接请求大于这个个数(缓冲池满),其它的未进入链接缓冲池的客户端在tcp层上tcp模块会自动重新链接,直到超时(大约57秒后)
2)我们的应用层的链接完成是要从tcp层的链接缓冲池中移出一个(accept函数实现)
backlog是连接请求队列的最大长度。
48.Linux进程间通信:管道、信号、消息队列、共享内存、信号量、套接字(socket)
Linux线程间通信:互斥量(mutex),信号量,条件变量
Windows进程间通信:管道、消息队列、共享内存、信号量 (semaphore) 、套接字(socket)
Windows线程间通信:互斥量(mutex),信号量(semaphore)、临界区(critical section)、事件(event)
49.线程和进程的区别联系:
1,进程:子进程是父进程的***品。子进程获得父进程数据空间、堆和栈的***品。
2,线程:相对与进程而言,线程是一个更加接近与执行体的概念,它可以与同进程的其他线程共享数据,但拥有自己的栈空间,拥有独立的执行序列。
两者都可以提高程序的并发度,提高程序运行效率和响应时间。
线程和进程在使用上各有优缺点:线程执行开销小,但不利于资源管理和保护;而进程正相反。同时,线程适合于在SMP机器上运行,而进程则可以跨机器迁移。
根本区别就一点:用多进程每个进程有自己的地址空间(address space),线程则共享地址空间。所有其它区别都是由此而来的:
1、速度:线程产生的速度快,线程间的通讯快、切换快等,因为他们在同一个地址空间内。
2、资源利用率:线程的资源利用率比较好也是因为他们在同一个地址空间内。
3、同步问题:线程使用公共变量/内存时需要使用同步机制还是因为他们在同一个地址空间内

全部评论
你好请问你测试岗找到了吗
点赞 回复 分享
发布于 2021-03-17 00:57

相关推荐

昨天 13:29
已编辑
湖南铁道职业技术学院 后端
小红书 后端选手 n*16*1.18+签字费期权
点赞 评论 收藏
分享
听说改名字就能收到offer哈:Radis写错了兄弟
点赞 评论 收藏
分享
6 26 评论
分享
牛客网
牛客企业服务