美文网首页工作生活
软件测试常见题

软件测试常见题

作者: 红了白 | 来源:发表于2019-07-08 15:00 被阅读0次

    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%的记录

    相关文章

      网友评论

        本文标题:软件测试常见题

        本文链接:https://www.haomeiwen.com/subject/gvarhctx.html