软件测试常见题

1.post和get的区别


此答案原文来自https://blog.csdn.net/qq_15158911/article/details/80966457
GET和POST是HTTP协议中的两种发送请求的方法。

HTTP是基于TCP/IP的关于数据如何在万维网中如何通信的协议。

所以GET和POST的底层都是TCP/IP,也就是说,GET/POST都是TCP链接

常用区别:

1. GET把参数包含在URL中,POST通过request body传递参数

2. GET请求在URL中传送的参数是有长度限制的,POST没有。

3. GET请求的参数只能是ASCII码,所以中文需要URL编码,而POST支持多种编码方式

最重要的区别:

GET产生一个TCP数据包;POST产生两个TCP数据包。(firefox浏览器除外)

对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);

而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。

其他的区别:

1. GET在浏览器回退时是无害的,而POST会再次提交请求。

2. GET产生的URL地址可以被Bookmark,而POST不可以。

3. GET请求会被浏览器主动cache,而POST不会,除非手动设置。

4. GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。

5. 对参数的数据类型,GET只接受ASCII字符,而POST没有限制。

6. GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。

2.TCP的三次握手与四次挥手

此答案来自https://blog.csdn.net/qq_38950316/article/details/81087809


三次握手过程理解


第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)。

第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;

第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。

四次挥手过程理解 


1)客户端进程发出连接释放报文,并且停止发送数据。释放数据报文首部,FIN=1,其序列号为seq=u(等于前面已经传送过来的数据的最后一个字节的序号加1),此时,客户端进入FIN-WAIT-1(终止等待1)状态。 TCP规定,FIN报文段即使不携带数据,也要消耗一个序号。

2)服务器收到连接释放报文,发出确认报文,ACK=1,ack=u+1,并且带上自己的序列号seq=v,此时,服务端就进入了CLOSE-WAIT(关闭等待)状态。TCP服务器通知高层的应用进程,客户端向服务器的方向就释放了,这时候处于半关闭状态,即客户端已经没有数据要发送了,但是服务器若发送数据,客户端依然要接受。这个状态还要持续一段时间,也就是整个CLOSE-WAIT状态持续的时间。

3)客户端收到服务器的确认请求后,此时,客户端就进入FIN-WAIT-2(终止等待2)状态,等待服务器发送连接释放报文(在这之前还需要接受服务器发送的最后的数据)。

4)服务器将最后的数据发送完毕后,就向客户端发送连接释放报文,FIN=1,ack=u+1,由于在半关闭状态,服务器很可能又发送了一些数据,假定此时的序列号为seq=w,此时,服务器就进入了LAST-ACK(最后确认)状态,等待客户端的确认。

5)客户端收到服务器的连接释放报文后,必须发出确认,ACK=1,ack=w+1,而自己的序列号是seq=u+1,此时,客户端就进入了TIME-WAIT(时间等待)状态。注意此时TCP连接还没有释放,必须经过2∗∗MSL(最长报文段寿命)的时间后,当客户端撤销相应的TCB后,才进入CLOSED状态。

6)服务器只要收到了客户端发出的确认,立即进入CLOSED状态。同样,撤销TCB后,就结束了这次的TCP连接。可以看到,服务器结束TCP连接的时间要比客户端早一些。

3.测试用例常见的设计方法

等价类划分法、边界值分析法、错误推测法、判定表法、正交实验法。

1.等价类划分

就是将测试的范围划分成几个互不相交的子集,他们的并集是全集,从每个子集选出若干个有代表性的值作为测试用例

究竟要划分到何种程度才合适呢?

你有多少资源和时间,还有,看是否值得。毕竟无论你怎么测试,总会有未发现的缺陷存在,所以,先解决容易被发现的问题再说。

2.正交实验法

当组合条件不多的时候,穷举暂时没问题,但是,一旦条件多了,组合个数就会以指数形式增长。这个时候,就要用到正交表了,通过选出有代表性的测试实例,达到以少数代替全面的效果。

4.软件测试的方法

答案来自https://zhidao.baidu.com/question/492182095.html的回答


1、按是否查看程序内部结构分为:

(1)黑盒测试(black-box testing):只关心输入和输出的结果。

(2)白盒测试(white-box testing):去研究里面的源代码和程序结构。

2、按是否运行程序分为:

(1)静态测试(static testing):是指不实际运行被测软件,而只是静态地检查程序代码、界面或文档可能存在的错误的过程。

(5)动态测试(dynamic testing),是指实际运行被测程序,输入相应的测试数据,检查输出结果和预期结果是否相符的过程。

3、按阶段划分:

(1)单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。

(2)集成测试(integration testing),是单元测试的下一阶段,是指将通过测试的单元模块组装成系统或子系统,再进行测试,重点测试不同模块的接口部门。

(3)系统测试(system testing),指的是将整个软件系统看做一个整体进行测试,包括对功能、性能,以及软件所运行的软硬件环境进行测试。

(4)验收测试(acceptance testing),指的是在系统测试的后期,以用户测试为主,或有测试人员等质量保障人员共同参与的测试,它也是软件正式交给用户使用的最后一道工序。

4、黑盒测试分为功能测试和性能测试:

(1)功能测试(function testing),是黑盒测试的一方面,它检查实际软件的功能是否符合用户的需求。

(2)性能测试(performance testing),软件性能测试分为:

一般性能测试:指的是让被测系统在正常的软硬件环境下运行,不向其施加任何压力的性能测试。

稳定性测试也叫可靠性测试(reliability testing):是指连续运行被测系统检查系统运行时的稳定程度。

负载测试(load testing):是指让被测系统在其能忍受的压力的极限范围之内连续运行,来测试系统的稳定性。

压力测试(stress testing):是指持续不断的给被测系统增加压力,直到将被测系统压垮为止,用来测试系统所能承受的最大压力。

5、其他测试类型:

回归测试(regression testing)是指对软件的新的版本测试时,重复执行上一个版本测试时的用例。

冒烟测试(smoke testing),是指在对一个新版本进行大规模的测试之前,先验证一下软件的基本功能是否实现,是否具备可测性。

随机测试(random testing),是指测试中所有的输入数据都是随机生成的,其目的是模拟用户的真实操作,并发现一些边缘性的错误。


开发流程

软件测试的基本流程:

1、单元测试、集成测试、系统测试和验收测试(确认测试)。

2、测试需求分析,测试计划编写,测试用例编写,测试,缺陷记录,回归测试,判断测试结束,测试报告提交。

3、测试流程依次如下:

a.需求:阅读需求,理解需求,与客户、开发、架构多方交流,深入了解需求。

b.测试计划: 根据需求估算测试所需资源(人力、设备等)、所需时间、功能点划分、如何合理分配安排资源等。

c.用例设计:根据测试计划、任务分配、功能点划分,设计合理的测试用例。

d.执行测试:根据测试用例的详细步骤,执行测试用例。

e.执行结果记录和bug记录:对每个case记录测试的结果,有bug的在测试管理工具中编写bug记录。

f.defect tracking:追踪leader分配给你追踪的bug.直到 bug fixed。

g.测试报告:通过不断测试、追踪,直到被测软件达到测试需求要求,并没有重大bug。

h.用户体验、软件发布等……

常用的linux 命令

1.ps查看进程

ps -A  显示所有进程信息

ps -ef|grep ssh  ps与grep 常用组合用法,查找特定进程

最常用的方法是ps aux,然后再通过管道使用grep命令过滤查找特定的进程,然后再对特定的进程进行操作。

 ps aux | grep program_filter_word

ps -ef |grep tomcat 查看Tomcat是否启动

如果有一大长长长串的东西出现,说明tomcat是启动了,第一个是启动该进程的用户,第二个是该进程的id,第三个 是占用CPU的百分比,第四个是占用内存的百分比.

2.Kill

-9 sigkill can't be caught or ignored

-15 sigterm

Kill -15  大部分程序接收到SIGTERM信号后,会先释放自己的资源,然后在停止。但是也有程序可以在接受到信号量后,做一些其他的事情,并且这些事情是可以 配置的。如果程序正在等待IO,可能就不会立马做出相应。这相当于正常停止进程,停止进程的时候会释放进程所占用的资源

也就是说,SIGTERM多半是会被阻塞的、忽略。SIGTERM多半是会被阻塞的、忽略

Kill -9 admin的必杀令 不过,也不是所有的程序都会乖乖听话,总有那些状态下的程序无法立刻相应。

他们的区别就好比电脑关机中的软关机(通过“开始”菜单选择“关机”)与硬关机(直接切断电源),虽然都能关机,但是程序所作的处理是不一样的。

3.访问tomcat

访问tomcat的bin 目录:

cd /usr/local/tomcat/bin

使用Tomcat关闭命令 ./shutdown.sh

查看是否关闭 ps -ef|grep java

若还没有关闭,可用kill -97010(pid的端口号)

再次查看是否关闭 ps -ef|grep java

启动tomcat ./startup.sh

查看tomcat日志

切换到日志文件夹cdusr/local/tomcat5/logs


ls查看目录中的文件 ls -F查看目录中的文件 ls -l显示文件和目录的详细资料 

ls -a 显示指定目录下所有目录与文件,包括隐藏文件

常用的sql 语句

1. 查询

SELECT * FROM 表名称

DISTINCT 用于返回不同的值,去掉重复的值

SELECT DISTINCT 字段名 FROM 表名

SELECT COUNT(DISTINCT column_name) FROM table_name 指定列的不同值的数目

SELECT * FROM table_name WHERE column_name LIKE pattern

%”表示任意字符都符合条件

SELECT * FROM member WHERE name like ‘%price%’;

“price”字前后都含有百分号“%”,这就表示“price”字前面和“price”字后面不管是任何字符都满足查询条件,即使“price”字前后没有字符也符合条件

多个字段排序时,用逗号,隔开

SELECT * FROM 表名 ORDER BY 字段1,字段2

2. 更新

UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值

3. 插入

 插入所有字段:

INSERT INTO 表名称 VALUES (值1, 值2,....)

插入指定字段:

INSERT INTO 表名(字段1,字段2...) VALUES (字段1值,字段2值...)

4. 排序

SELECT Company, OrderNumber FROM Orders ORDER BY Company [desc] 升序或降序

5. 关联查询

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons, Orders WHERE Persons.Id_P = Orders.Id_P

6.删除

DELETE FROM 表名 WHERE 字段名=值(条件)

7.英文版的数据库,数据库中的字段值是unicode编码的

首先看看字段类型是不是 : char ->nchar varchar ->nvarchar text ->ntext

然后在查询时加入N:select * form table where city=N'上海'

或者

在连接数据库的url后面添加?useUnicode=true&characterEncoding=utf8

8限制查询结果集

SELECT TOP 10 * FROM MY_TABLE  --查询前10条记录

SELECT TOP 10 PERCENT * FROM MY_TABLE --查询所有记录的前10%的记录

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,542评论 6 504
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,822评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,912评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,449评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,500评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,370评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,193评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,074评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,505评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,722评论 3 335
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,841评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,569评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,168评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,783评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,918评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,962评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,781评论 2 354

推荐阅读更多精彩内容