一,网络
(一)简单描述下TCP协议
TCP:传输控制协议,是传输层通信协议。它有面向连接、可靠、字节流传输等特点 TCP建立连接时,需要三次握手协议
CP/IP作用是什么?
TCP/IP协议是一套网络通信标准,让全世界的各种不同的设备之间可以进行通信
TCP与UDP的区别?
TCP传输控制协议 。UDP用户数据报协议 TCP对资源要求比较多,UDP对资源要求比较少 TCP可以保证数据的正确性,UDP有可能会丢包 TCP可以保证数据的顺序,UDP不会保证
(二)网络7层模型是那7层?列举一些具体的应用实例
从下到上,物理层、数据链路层、网络层、传输层、会话层、表示层、应用层 物理层:同轴电缆、接收器、发送器等 数据链路层:网卡、交换机、网桥 网络层:路由器、网关 传输层:TCP协议、UDP协议 会话层:SQL、ASP、 PHP等 表示层:ASCII、JPEG、PNG、MP3等 应用层:telnet、ssh、http、smtp等
怎么测试网络是否连通
使用ping命令
访问一个网址会经历哪些流程?
以下几个简单的流程
首先需要通过域名找到IP,如果本地缓存没有需要请求DNS服务器 得到IP后开始与目的主机进行三次握手来建立TCP连接 连接建立后进行HTTP访问,传输病获取网页内容 传输完成后与目的主机四次挥手断开TCP连接
二,Linux
Linux常用命令有哪些,并简述他们的作用
ls 查看当前目录
df-h 查看磁盘使用情况
kill 杀掉进程
top 查看当前主机状态
mv 移动文件
cp 复制文件
netstat-a 查看端口使用状态
rm 删除
cat 查看文件
vim怎么退出
q 不保存直接退出
wq 保存后退出
q! 强制退出
如何查找日志关键词上下文
grep 关键词 -C 10 文件名 catalina.out
grep 关键词 -A 10 文件名 catalina.out
grep 关键词 -B 10 文件名 catalina.out
怎样一页一页地查看一个大文件的内容呢?
cat filename.txt | more 通过管道命令和more实现
如何查看linux端口号被占用
netstat -a 查看端口状态
如何查看进程状态?
ps -ef | grep 进程名
chown是什么?grep是什么?
chown 改变文件的拥有者和组
gerp 查找文件里符合条件的字符串
如何查看日志
tail,cat,head 可以配合一些参数实现更多 grep 筛选关键字, more 加载全部文件,显示进度条 less 查看指定条数,和more类似
tail -f 日志文件名
tail -n 10 1.log #查看后十条数据 tail -fn 1000 test.log | grep ‘关键字’ #实时查看1000条和关键词有关的数据 cat 是由第一行到最后一行连续显示在屏幕上 head、跟tail是相反的head是看前多少行日志
5个客户端通过TCP连接到主机,如何查看这5个连接
netstat -nat|grep ESTABLISHED
数据库
哪些方法可以提高数据库查询效率?
建立索引,利用索引 只查询必要的字段 合理的处理NULL字段 慎用like等通配符
数据库更新语句?GROUP BY 如何使用?
UPDATE TABLENAME SET 字段名称 = 新值 WHERE 列名称 = 旧值
1
GROUP BY 一般常用于对查询结果进行分组
如果想要对结果进行分组统计,加上SUM函数即可
SELECT SUM(列名1) 列命2 FROM TABLENAME
WHERE 列名1 列名2
GROUP BY 列命1
Redis的优势是什么
读写快,Redis是将数据放在内存里,而内存的读取速度比硬盘要快,所以Redis性能优势比其他数据库要好 并发性能好
编程
HTTP协议中GET和POST的区别
- post更安全(不会作为url的一部分,不会被缓存、保存在服务器日志、以及浏览器浏览记录中)
post发送的数据更大(get有url长度限制) post能发送更多的数据类型(get只能发送ASCII字符) post比get慢 post用于修改和写入数据,get一般用于搜索排序和筛选之类的操作(淘宝,支付宝的搜索查询都是get提交),目的是资源的获取,读取数据
HTTP 和 HTTPS 的基本概念
HTTP:超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。 HTTPS:是以安全为目标的 HTTP 通道,是 HTTP 的安全版。HTTPS 的安全基础是 SSL。SSL 协议位于 TCP/IP 协议与各种应用层协议之间,为数据通讯提供安全支持。
HTTP 与 HTTPS 的区别
1、HTTPS 协议需要到 CA (Certificate Authority,证书颁发机构)申请证书,一般免费证书较少,因而需要一定费用。(以前的网易官网是http,而网易邮箱是 https 。)
2、HTTP 是超文本传输协议,信息是明文传输,HTTPS 则是具有安全性的 SSL 加密传输协议。
3、HTTP 和 HTTPS 使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
4、HTTP 的连接很简单,是无状态的。HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,比 HTTP 协议安全。(无状态的意思是其数据包的发送、传输和接收都是相互独立的。无连接的意思是指通信双方都不长久的维持对方的任何信息。)
测试面试题
一、按是否查看程序内部结构分为:
1、黑盒测试(Black Box Testing): 黑盒测试是根据软件的规格对软件进行的测试,这类测试不考虑软件内部的运作原理,因此软件对用户来说就像一个黑盒子。简单来说,这种测试只关心输入和输出的结果,并不考虑程序的源代码。黑盒测试分为功能测试和性能测试: 1)功能测试(function testing),是黑盒测试的一方面,它检查实际软件的功能是否符合用户的需求。包括逻辑功能测试、界面测试、易用性测试和兼容性测试。 2)性能测试(performance testing),软件的性能主要有时间性能和空间性能两种。其中,时间性能主要指软件的一个具体事务的响应时间,而空间性能主要指软件运行时所消耗的系统资源。 2、白盒测试(White Box Testing): 白盒测试是把测试对象看作一个打开的盒子。利用白盒测试法进行动态测试时,需要测试软件产品的内部结构和处理过程,不需测试软件产品的功能。与黑盒测试相反,这种测试就要研究程序里面的源代码和程序结构。
二、按是否运行程序分为
1、静态测试(static testing): 静态测试指测试不运行的部分,只是静态地检查程序代码、界面或文档可能存在的错误的过程。例如测试产品说明书,对此进行检查和审阅.。 2、动态测试(dynamic testing): 动态测试是指通过运行软件来检验软件的动态行为和运行结果的正确性。具体操作就是输入相应的测试数据,检查输出结果和预期结果是否相符的过程。
三、按阶段分为:
1、单元测试(Unit Testing): 单元测试是最微小规模的测试,测试的是某个功能或代码块。典型地由程序员而非测试员来做,因为它需要知道内部程序设计和编码的细节知识。 2、集成测试(Integration Testing): 集成测试是指一个应用系统的各个部件的联合测试,以决定他们能否在一起共同工作并没有冲突。部件可以是代码块、独立的应用、网络上的客户端或服务器端程序。这种类型的测试尤其与客户服务器和分布式系统有关。一般集成测试以前,单元测试需要完成。 3、系统测试(System Testing): 系统测试是将整个软件系统看做一个整体进行测试,包括对功能、性能,以及软件所运行的软硬件环境进行测试 4、验收测试(Accept Testing): 验收测试是基于客户或最终用户的规格书的最终测试,或基于用户一段时间的使用后,看软件是否满足客户要求。一般从功能、用户界面、性能、业务关联性进行测试。 5、回归测试(Regression testing): 回归测试是指在发生修改之后重新测试先前的测试以保证修改的正确性。理论上,软件产生新版本,都需要进行回归测试,验证以前发现和修复的错误是否在新软件版本上再次出现。
测试用例的几种常见设计方法
测试用例常见的设计方法有:等价类划分法、边界值分析法、错误推测法、判定表法、正交实验法。
一、等价类划分法
顾名思义,顾名思义,等价类划分,就是将测试的范围划分成几个互不相交的子集,他们的并集是全集,从每个子集选出若干个有代表性的值作为测试用例。 例如,我们要测试一个用户名是否合法,用户名的定义为:8位数字组成的字符。 我们可以先划分子集:空用户名,1-7位数字,8位数字,9位或以上数字,非数字。 然后从每个子集选出若干个有代表性的值: 空用户名:“” (无效等价类实例,指对于软件规格说明而言,没有意义的、不合理的输入) 1-7位数字:”234” (无效等价类实例) 8位数字:”00000000” (有效等价类实例,能检验程序是否实现了规格说明中所规定的功能和性能) 9位或以上数字:”1234567890” (无效等价类实例) 非数字:”abc&!!!” (无效等价类实例) 他们5个,就是用等价类划分选出的测试用例。实际上,对于1-7位数字的子集来说,选“234”和“11111”没有本质的区别。 等价类的划分,最关键的是子集的划分。实际上,非数字还可以继续划分子集:字母,特殊字符。
二、边界值分析法
长期的测试工作经验告诉我们,大量的错误是发生在输入或输出范围的边界上,而不是发生在输入输出范围的内部。因此针对各种边界情况设计测试用例,可以查出更多的错误。选出的测试用例,应选取正好等于、刚刚大于、刚刚小于边界的值,例如,对于在区间min,max的值,测试用例可以记为min,min+,max,max-。 例如,假定 X 为整数,10≤X≤100,那么 X 在测试中应该取的边界值为:10,11,99,100。 注:上面只是说边界值,如果是完整的测试,除了边界值外,还需要一个正常值,即12-98之间的任意值。 三.错误推测法 错误推测法是指:在测试程序时,人们可以根据经验或直觉推测程序中可能存在的各种错误,从而有针对性地编写检查这些错误的测试用例的方法。 这种方法没有固定的形式,依靠的是经验和直觉,很多时候,我们都会不知不觉的使用到。
三、错误推测
错误推测法是指:在测试程序时,人们可以根据经验或直觉推测程序中可能存在的各种错误,从而有针对性地编写检查这些错误的测试用例的方法。 这种方法没有固定的形式,依靠的是经验和直觉,很多时候,我们都会不知不觉的使用到。
四、判定表法
又称为策略表,基于策略表的测试,是功能测试中最严密的测试方法。该方法适合于逻辑判断复杂的场景,通过穷举条件获得结果,对结果再进行优化合并,会得到一个判断清晰的策略表。 例如,某公司对客户分类标准如下: 顾客每次订货额在1000元以上(含1000元),信誉好的,订单设“优先”标志; 信誉不好,但是老客户的,订单设“优先”标志; 信誉不好,但是新客户的,订单设“正常”标志; 每次订货额在 1000元以下,订单设“正常”标志。 这样,我们就可以得到更清晰的逻辑判断,也可以更好的协助我们编写测试用例。而决策表,对于开发人员来说一样有用。 从上面的表格,我们就可以写出更简洁的判断语句。
五,因果图法:
等价类划分法和边界值分析方法都是着重考虑输入条件,如果程序输入之间没有什么联系,采用等价类划分和边界值分析是一种比较有效的方法。如果输入之间有关系,例如,约束关系、组合关系,这种关系用等价类划分和边界值分析是很难描述的,测试效果难以保障,因此必须考虑使用一种适合于描述对于多种条件的组合,产生多个相应动作的测试方法,因果图正是在此背景下提出的。因果图法着重测试规格说明中的输入与输出间的依赖关系。
测试方案设计流程指南
一、测试方案设计基本理论
产品分析,产品测试需求分析,测试规格分解分配,特性测试需求分析,特性测试设计,测试设计维护,测试用例设计,测试用例设计维护。 测试特性方案设计任务书 测试特性方案设计任务书包含了测试特性、测试方案设计策略以及对测试规格的分配,这里提到的测试方案和测试特性的概念一一对应,每个测试特性对应一份测试方案。 分配的产品测试规格 产品测试规格已经在测试规格分解分配中根据测试特性进行了分配,这里需要找出对应的测试特性的产品测试规格 其他参考输入 开发的SRS、测试经验库、协议等其它相关资料 经过特性测试需求分析活动后,对产品测试规格大体有如下几种结果: 1)对产品测试规格不处理,直接进行特性测试设计等特性测试规格; 2)对产品测试规格进一步细化,明确参数、功能类似的多个产品测试规格有机组合等特性测试规格; 3)对于较复杂的一个或多个产品测试规格分解,形成多个特性测试规格。因此,产品测试规格与特性测试规格可能是一种细化关系、组合关系或者交叉组合关系。
二、测试方案设计工程方法概述
1)正交分析法
1.适用于功能测试 2.在设计过程中采用由外而内进行分层的思想,考虑对系统有影响的不同层次的因子,按照正交的方法进行测试设计 3.这种分层的正交设计思路充分保证了测试设计的完备性,减少测试设计遗漏 因子分析,从测试需求分析给出的产品测试规格中,提炼出设计对象,设计对象要能直观反映被设计的对象的基本功能,如果被设计对象非常复杂,可以在设计对象再采用正交的方法。 优缺点: 优点,减少测试设计遗漏,正交设计的因子都是通过分层面考虑分析得出的,从分析被测特性相关的最外围特性或设备的影响逐步到特性内部、本身的影响因素提高了测试设计的完备性; 缺点,用例数目较多,由于采用了层层正交的方式,因此在用例数目上,与常规的测试设计相比,数目相对较多,需要通过各阶段的review工作,尽量减少繁琐的部分,保证用例数目避免过于庞大。适用范围受限,正交设计方法适用于主机业务领域,解决了特性本身或特性间关系比较复杂,相互影响较大的情况的测试设计质量,但对于如配置、告警等特性不适用,建议不使用。
2)测试场景分析法
主要是针对各个测试场景进行分析,进而得出输入/输出/处理的设计工程方法。 特点一:将被测试特性细分为功能独立的场景,再针对各个场景进行设计,从而从整体上降低测试设计的复杂度 特点二:从系统内部处理过程着手进行分析,找出需要测试和观察的内容,选出不需要测试和观察的内容,减少用例数量。 基本思路:分配到特性的测试规格是从多个不同角度对被测试特性的描述,它们是一些分散而缺少逻辑联系的点,如果基于这些独立的点进行测试设计结果会是无序的; 测试场景划分是从这些特点中抽象出业务模型,使后续的分析更清晰、更有条理,同时也保证设计的完备性; 在测试场景划分中考虑组网环境、数据配置、用户属性等外部环境下的被测试对象的功能行为; IBO分析:针对每个功能流程,逐一分析被测试实体在每一状态的的输入、处理和输出,根据分析结果找出哪些应该是输入
三)边界值分析法
长期的测试工作经验告诉我们,大量的错误是发生在输入或输出范围的边界上,而不是发生在输入输出范围的内部。边界值分析法
对输入或输出的边界值进行测试的一种黑盒测试方法。
是作为对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界。
边界值和等价类的相关
等价类划分法:将测试过程中的输入、输出、操作等相似内容分组,从每组中挑选具有代表性的内容作为测试用例,划分为有效等价类和无效等价类;
边界值分析法:确认输入、输出的边界,然后取刚好等于、大于、小于边界的参数作为测试用例测试;
他俩的定义就是不同,一个属于确认有有效区间,一个属于确认边界,联系就是等价类划分和边界值要一起考虑,边界值分析法属于等价类划分法的补充,任何等价区间都有边界,有边界就有等价区间。
例子: 程序的需求为: 1、姓名:1——20个字符,不能包含数字,不能为空 2、年龄:18——60之间的整数,不能为空 3、如果填写信息正确,给出提示信息,并在“注册信息”文本框中输入相应注册信息 “xxx,年龄”
书上总结
一、软件测试的目的
1)软件测试是为了发现错误而执行程序的过程。
2)测试是为了证明程序有错,而不是证明程序无错。(发现错误不是唯一目的)
3)一个好的测试用例在于它发现至今未发现的错误。
4)一个成功的测试是发现了至今未发现的错误的测试。
注意: 1、测试并不仅仅是为了要找出错误。通过分析错误产生的原因和错误的分布特征。可以帮助项目管理者发现当前所采用的软件过程的缺陷,以便改进。同时,通过分析也能帮助我们设计出有针对性的检测方法,改善测试的有效性。 2、没有发现错误的测试也是有价值的,完整的测试是评定测试质量的一种方法。详细而严谨的可靠性增长模型可以证明这一点。例如Bev Littlewood发现一个经过测试而正常运行了n个小时的系统有继续正常运行n个小时的概率。
二、软件测试的原则
1)应当把“尽早地不断地进行软件测试“作为软件开发者的座右铭。
2)测试用例应由测试数据和与之对应的预期输出结果这两部分组成。
3)程序员应避免检查自己的程序。
4)在设计测试用例时,应当包括合理的输入条件和不合理的输入条件。
5)充分注意测试中的群集现象。
6)严格执行测试计划,排除测试的随意性。
7)应当对每一个测试结果做全面的检查。
8)妥善保存测试计划、测试用例、出错统计和最终分析报告,为维护提供方便。
三、软件测试的流程
立项阶段-需求阶段----设计阶段----编码和单元测试阶段----集成测试阶段----系统测试阶段-----验收测试阶段-----结项总结阶段
软件测试的流程的补充
需求分析阶段:阅读需求,理解需求,分析需求点,参与需求评审会议。
补充一,
测试计划阶段:主要任务就是编写测试计划,参考软件需求规格说明书,项目总体计划,内容包括测试范围,进度安排,人力物力分配,整体测试策略的制定。
编写测试用例:适当的了解设计,搭建测试用例框架,根据需求和设计编写测试用例。
测试执行阶段:搭建环境准备数据,执行冒烟测试(预测试)然后进入正式测试(系统测试、回归测试、交叉测试、自由测试),bug管理直到测试结束。
输出测试报告:输出测试报告,确认是否可以上线。
补充二,
根据不同的测试阶段,测试可以分为单元测试、集成测试、系统测试和验收测试。 体现了测试由小到大、又内至外、循序渐进的测试过程和分而治之的思想。
单元测试的粒度最小,一般由开发小组采用白盒方式来测试,主要测试单元是否符合“设计”。 集成测试界于单元测试和系统测试之间,起到“桥梁作用”,一般由开发小组采用白盒加黑盒的方式来测试,既验证“设计”,又验证“需求”。 系统测试的粒度最大,一般由独立测试小组采用黑盒方式来测试,主要测试系统是否符合“需求规格说明书”。 验收测试与系统测试相似,主要区别是测试人员不同,验收测试由用户执行。 黑盒测试不考虑程序内部结构和逻辑结构,主要是用来测试系统的功能是否满足需求规格说明书。一般会有一个输入值,一个输入值,和期望值做比较。 白盒测试主要应用在单元测试阶段,主要是对代码级的测试,针对程序内部逻辑结构,测试手段有:语句覆盖、判定覆盖、条件覆盖、路径覆盖、条件组合覆盖 集成测试主要用来测试模块与模块之间的接口,同时还要测试一些主要业务功能。 系统测试是在经过以上各阶段测试确认之后,把系统完整地模拟客户环境来进行的测试
|