面试相关内容

重点复习内容

  1. 通讯相关

HTTP(HyperText Transfer Protocol)是超文本传输协议

HTTP协议用于定义客户端与web服务器通迅的格式

TCP/IP是“transmission Control Protocol/Internet Protocol”的简写,中文译名为“传输控制协议/互联网络协议”,是一种网络通信协议,它规范了网络上的所有通信设备,主机之间的数据往来格式以及传送方式,TCP/IP是INTERNET的基础协议

TCP/IP协议按照层次分为以下四层。应用层、传输层、网络层、数据链路层

交换机工作在OSI的第二层(数据链路层)

路由器工作在OSI的第三层(网络层) ---分配局域网内的IP

OSI体系结构、  TCP/IP体系结构

TCP协议: 传输控制协议,面向连接的协议,将大块的数据分割成小的数据包进行可靠的传输

IP协议:互联网协议,作用就是把数据从源地址传送到目的地。

UDP协议:User Datagram Protocol,用户数据报协议,UDP是面向无连接的通讯协议,由于通讯不需要连接,不可靠,可能出现丢包现象,主要用户实现广播发送功能.

一个TCP/IP 三次握手建立连接,四次挥手关闭连接

DNSDNS(Domain names System)  DNS服务器 提供域名到IP地址之间的解析服务。

ARP: 地址解析协议,将主机IP地址翻译成MAC物理地址

工作在哪一层?

TCP, UDP:工作在传输层,

路由器:工作在IP层(分配IP功能)

交换机:工作在数据链路层

HTTP协议的版本

HTTP/1.0、HTTP/1.1

HTTP中的GET,POST,PUT,DELETE请求资源方法就对应着对这个资源的 查,改,增,删4个

GET 请求资源。 
POST:提交表单

PUT 更新资源。 
DELETE:删除资源

HTTP协议中的getpost方法区别?

  1. GET 一般用于获取/查询资源信息

POST 一般用于提交表单信息的。

  1. 提交数据的长度方面:

GET:提交的数据长度是有限制的

在URL地址后附带的参数是有限制的,其数据容量通常有限制(URL长度)。

Post:提交的数据长度是无限制的

传送的数据量无限制(请求方式为POST方式,则可以在请求的实体内容中向服务器发送数据)。

  1. 传输速度方面:get传输数据速度快,post速度慢
  2. 安全性方面:POST的安全性要比GET的安全性高

POST请求数据放在body中,URL地址栏中不显示目标地址,

get请求数据放在URL地址中,直接显示目标地址了

HTTP响应状态码 200 ,302, 404,500表示什么意思?

400:表示数据格式有错误

404:请求的地址有错误

302重定向,发二次请求

HTTP500 错误有哪些可能情况:

答 1:服务停止了  2:数据库有问题   3:程序内部处理错误   4:服务器上程序的文件夹权限不够

 端口

 

 

什么是cookiesession( 或者他们之间的共同之处是什么?)

答:

cookiesession都是用来识别用户身份。

cookie存储用户访问网站的用户名和密码,下次访问该网址时能够简化登录手续。

Session里面存储的是session ID, 是一个字符串,后续访问时,要提交给服务器验证,通过了才有正确响应,否则,服务器拒绝响应。

(http是一个无状态的连接协议,使用浏览器访问网站完毕后,连接断开,服务器无法识别用户身份,不知道是谁连接自己,为了保存连接信息,获得客户身份,就采用cookie机制 session来保存客户身份信息)

cookiesession的区别是?

答:

  1. cookie数据保存在客户端,session数据保存在服务器端,
  2. Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份。
  3. Sessioncookie更安全。

TCPUDP的区别?

TCP:传输控制协议,是面向链接的协议,传输数据比较可靠

UPD:用户数据报协议,是面向无链接的协议,传输数据不可能

http1.0 http1.1区别?

http1.0 是短链接,建立一个TCP链接后,只能发起一个http请求,获得一个web资源

http1.1 是长链接,建立一个TCP链接后,能发起多个http请求,可以获得多个web资源

HTML(笔试):

-----------------请列出15个HTML标签----------------

<title>  标题标签

<p>      段落标签

<h1>     字体大小标签

<table>   表

<td>      单元格

<tr>      行(table row)

<br>      换行

<head>    头部

<img>     图片

<em>      斜体

<strong>  加粗

<ul>      无序列表

<li>      列表项

<div>     块标签(块级元素:显示在一块内,会自动换行)

<form>     表单

<script>   js脚本

<hr>       水平线

HTTP格式是什么?(或者你描述一下http的内容是什么?)

答:HTTP的格式是 一个请求行URL地址+协议版本号)、消息头、消息实体 构成的

(响应的格式: 状态行-状态码、消息头、消息实体)

HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer

安全版超文本传输协议):

简单讲是HTTP的安全版,就是在http和TCP之间有一层SSL层,多了一个加密传输数据的协议。即HTTP下加入SSL层。

HTTPSHTTP的区别主要为以下3

  1. https协议需要到ca申请证书,一般免费证书很少,需要交费。
  2. http是明文传输,https 则是加密传输协议。
  3. http和https使用的端口也不一样,前者是80,后者是443。

什么是软件测试 ?或者你对软件测试的理解 (笔试)

 软件测试是指软件产品生存周期内所有的检查、测试执行、评估等一系列活动。

 如:需求、设计文档的评审、各种手册的检视、系统测试等。

(测试对象着重产品生存周期内所形成的一系列文档、手册、程序)

  1. linux

常用目录:/etc 配置、 /home 家目录 、/opt 用户安装程序、/usr用户安装程序、/bin 二进制可执行文件  /dev 设备文件

说出几个liunx命令?

常用命令:

mkdir、rm、rmdir、mv、cp、more、grep、find、tar、du(查看文件大小)、df(查看磁盘使用情况空间)、free (查看内存使用情况)、top (查看系统资源使用情况)、 kill、 ps (查看进程状态)、chmod (修改文件权限)、iostat(查看磁盘读写)、vmstat(查看虚拟内存)、netstat(查看网络使用情况),sed (文档编辑工具),awk (文本分析工具),vi(文本编辑工具)

Vi工具:q、:wq、:q!、:wq!  

dd: 删除光标所在的一整行(常用)

ndd:n为数字。删除光标所在的向下n行,例如20dd则是删除光标所在的向下20行

Vi里面如何寻找字符

答:使用反斜杠  /加查找的字符 

Vi里面如何替换字符串?

答:使用s命令来替换

vi/vim 中可以使用 :s 命令来替换字符串

下面是列子

:s/u/2018u/ 替换当前行第一个 u 2018u

如何在不打开文件的方式下,直接修改该文件内容?

答:使用sed命令

sed ‘2s/原字符串/替换字符串/g’  filename  //替换第2行    

(s替换,i删除 )

怎么查看Tomcat日志?(优先回答这个)

答:在linux系统下查看tomcat日志,先进入logs目录下,

使用 tail –fn 命令查看实时监控tomcat运行日志

怎么看服务器日志?

答:进入/var/logs目录,使用tail –f 就可以动态的查看日志了

(一般看下面的messages日志,它是记录系统启动后的信息和错误日志,最常用的)

怎么修改tomcat端口号?

答:首先我们进入tomcat的配置文件目录(conf目录),打开server.xml文件,修改tomcat

端口号 (修改的端口号在当前操作系统的进程里面是不存在的端口号,不能重复)

怎么修改tomcat端口号步骤

答:

  1. 先停止tomcat服务 (shutdown.sh)
  2. 进入tomcat的配置文件目录修改Server.xml文件 (tomcat目录的conf文件下),找到第一个包含8080的地方
  3. 再将8080修改自己想要的端口号 (使用netstat命令查看系统端口号)
  4. 再启动tomcat服务 (使用./startup.sh),即可使用新端口访问 (修改防火墙可说也可以不说)

简单来说,linux网站搭建步骤如下 (全新安装)

1:上传安装包 (jdk包,tomcat包,web网站程序包,数据库脚本)

2:解压JDK,配置JDK环境变量

3:解压tomcat包

4:在数据库中导入数据库脚本

5:将网站程序war包放到tomcat的webapps目录下,

6:启动tomcat服务

6:  在防火墙中开放tomcat端口号

7:打开浏览器,测试网站,如果网站能正常使用,大致能使用,环境搭建好了

----如果网址搭建好,也进入不网址,或者首页打不开?一般什么情况怎么处理---

1:JDK环境变量没设好(重装jdk或者重新设置)

2:JDK版本不匹配(下载相匹配的jdk,JDK版本也要和tomcat版本相匹配,Tomcat8只支持jdk1.71.7以上的jdk

3:tomcat没启动 (没解压war包,启动war包,如果tomcat启动了,但是war没解压,这种情况就是JDK没配好)

4:数据库访问密码和程序连接的密码不一致

5:没有导入数据库脚本

5:程序本身错误

6:防火墙没开放端口号

Tomcat 服务器是一个免费的开放源代码的Web 应用服务器

著名的web服务器有这么几种IIS, apachehtdoc),tomcatwebapps),nginx服务器(负载均衡---有一个配置文件)

IIS: 微软的重型web服务器,只能运行在windows平台,闭源.

Apachetomcat 是跨平台的,可以运行windowsLinux平台上,开源

Tomcatapache它们是同一家公司Apache基金会开发的,区别如下:

Tomcat 是轻型服务器,中小型并发,能处理动态网页和静态网页 (后出来的)

Apache是重型服务器,只能处理静态网页,如果处理动态网页,需要搭配tomcat服务器一起使用或者是安装一个处理动态页面的插件 (早期开发的服务器)

目前流行使用的

JDK版本是1.7 1.8tomcat版本是8 Mysql版本是5.1 centos 6.5 64bit

禅道版本 8 16年初就有了,最新是10, JIRA 6.3

启动tomcat

进入tomcat的bin目录,输入./ startup.sh 启动tomcat服务

(可以设置自启动,在一个配置文件修改rc.local文件里面添加tomcat运行路径就可以自启动了)

如何设置固定的虚拟机ip地址?

答:修改网卡配置文件,修改动态IP地址为静态的 ,加入IP地址,子网掩码,网关,DNS就可以了

  1. 数据库

学习数据库的目的:目的是检查界面显示的数据是否正确,和数据库一致

常用增删改查命令、order by排序(倒叙desc、顺序asc)、

聚合函数sum(值相加)、count(行数)、avg、max、min、

group by 分组(通常是跟聚合函数一起使用,单独使用是没有意义)、

having(和group by在一起,在分组结果的基础上进一步过滤)、

多表查询 join  on  ( A  join  B  on 条件)

建表

加主键:

alter  table 表名 add primary key (字段名);

插入记录:

insert into 表名称 (字段1,字段2,..)  values (值1,值2,..)    //值数量需要和当前插入的字段个数一致

                                                                                                            

已知旧表建新表(复制表)

create  table  new_table  select  *  from  old_table

Update 更新

怎么插入大量数据?

答:  写一个存储过程,然后使用 一个while 循环 + insert into 插入记录语句 就可以了

Delete truncate区别:(川刻特)

1:delete和truncate都是删除表记录的语句

2:delete可以带条件where,truncate不支持带where语句

3:delete在事务中支持回滚(数据回撤),truncate在事务中不支持回滚(真删)

4:delete删除速度慢,truncate删除速度快

Distinct  去重复记录  (迪斯厅)

Limit 查前几行,定制查询,分页查询 (limit 厘米脱)

Order by 排序 Asc 升序、desc 降序

Group by 分组查询 (分组的目的就是要使用聚合函数,一般和聚合函数同时出现,同时还应该加上一个分组的字段,用于显示那个字段分组)

Having分组后,并且使用聚合函数计算出来的结果,再一次过滤

最全的SQL语句组合

 

Join方式 3个表的形式join

select 表A.字段, 表B.字段, 表C.字段 from 表A  join 表B on 表A.主键(相同意思的字段)= 表B.外键(相同意思的字段)  join 表C  on 表C.字段 = 表A.字段 +  and  or 条件

SELECT 表1.字段, 表2.字段, 表3.字段 FROM 表1 JOIN 表2 ON 表1.UID= 表2.UID JOIN 表3 ON 表1.UID=表3.UID 

左连接、右连接、内联接

left join (左联接) 以左表记录条数为基准合并列出,右表少记录,则补NULL

right join(右联接) 以右表记录条数为基准合并列出,左表少记录,则补NULL

inner join(内联结) 只返回两个表中想5联结的记录

多表查询,先join 2个表+连接条件,再join 第三个单个表+连接条件 ,再join 第n个单个表+连接条件,再后 加过滤条件(包括and or group having  order by  limit等)

视图:

视图只存在视图的定义, 它就是一组SQL命令,是虚表,基于基本表,不是真的表

新建View

Create view view_name   As  select 字段 from 基本表

数据库备份命令:mysqldump

备份mytest1数据库下的customer表

备份数据库,加一个 databases参数

Source: 恢复数据,还原数据库

什么是存储过程?(成批的执行SQL语句)---SQL shell

存储在数据库中一组为了完成特定功能的SQL语句集

什么是触发器?

触发器是一种特殊的存储过程,主要是对表进行级联操作的约束。

太灵活了,现在基本上使用比较少

  1. 测试理论

什么是软件测试?

软件测试是指软件产品生存周期内所有的检查、测试执行、评估等一系列活动

软件测试目的?

  1. 验证软件是否满足软件需求规格说明、软件设计说明等规定的内容
  2. 通过测试,发现软件缺陷
  3. 为软件产品的质量和评价提供依据

测试流程

开发流程(粒度比较粗一些):

敏捷测试:

敏捷开发的核心思想是:以人为本,适应变化

敏捷测试的特点:高度迭代,研发周期性短,并且能够及时、持续地响应客户的频繁反馈,以人为本,注重灵活。

软件测试的版本怎么拿到的?

答:从项目经理那里获得测试版本

项目经理从开发项目组获得测试版本后放到一个服务器上(或者是工具软件如SVN,也可以是文件夹),然后邮件方式通知测试负责人或者测试经理,新的测试版本的位置,测试负责人那么从服务器上下载测试版本到测试机器上,指定项目组成员开始搭建测试环境

什么时候结束测试?

答:所测版本经过几轮测试后,软件需求说明书定义的功能都已实现,所有测试用例执行完毕,问题非常少,剩余问题不影响重要功能的使用,而且测试时间已经达到了测试计划的时间节点,由项目经理,测试经理,开发经理等领导会议决定停止测试,就可以结束测试了

什么时候开始测试?

被测软件已开发联调完毕,打好包了,项目经理通知测试小组可以进行测试了

关于100%覆盖率:

100%的覆盖率表示我们的测试覆盖到了所有语句,分支,条件,100%的覆盖率表示我们测试考虑的很完全,但是总有需求没考虑到,或被客户遗漏,开发也没发现,测试也不知道,实际上100%覆盖率是有水分的,如果把测试开发时间放到无限大,足够的时间来讨论需求,设计,测试,那么是有可能达到100%的。

单元测试覆盖率是不可能达到100%的,因为条件组合判断太多了。即使最简单的int a ,这个a取值就非常巨大。

最后总结一下::

1、测试覆盖率100%是一个理想的情况,是很难达到的;

2、测试覆盖率100%不能说明我们做了完全的测试;

3、较低的测试覆盖率能说明我们的测试还不够;

4、同一模块高覆盖率相对于低覆盖率,能说明我们做了更多的测试工作;

5、测试覆盖率达到多少要考虑到软件整体的覆盖率情况,以及项目成本,包括人力,时间等等,测试覆盖率还是具体要看投入产出是否合理。

如何保证测试的覆盖率?

1)将不同的需求来源(包括隐式需求)划分成一个个需求点,针对每一点需求进行测试点分析

2)要保证测试用例能够全面覆盖测试需求,测试场景覆盖需求中的业务逻辑

3)当测试用例设计完成后,要组织测试用例的评审,这样可以吸取别人的意见,减少遗漏,补全测试用例

5)测试用例编写完成后,就是测试执行要100%

6)在测试执行过程中,要继续对测试用例补充完善,确保提高测试覆盖率

7)在整个测试过程中,需求都是不可能不变的,所以要及时的更新测试需求、测试用例

其实,提高测试覆盖率最基本,甚至是唯一的办法就是增加测试用例

最后如果问到,具体测试覆盖率是多少?

答:

性能测试需求覆盖率达到100%

功能需求测试覆盖率达到100%

自动化测试覆盖率达到80%左右

白盒测试:又称结构测试,把程序看作是一个透明的盒子,关心软件内部设计和程序实现,对所有逻辑路径进行测试(for  if  while),主要测试依据是模块设计文档

白盒测试的测试方法:有代码检查法、路径测试法等

黑盒测试:也称功能测试后数据驱动测试,把程序看作一个不能打开的黑盒子,不关心软件内部,只关心输入输出,在已知产品应具有的功能的条件下,主要针对软件界面和软件功能进行测试。主要测试依据是需求文档

黑盒测试方法有: 等价类划分法、边界值分析法、错误推测法、场景法、因果图法、判定表法等等

负载测试在一定的负荷下,观察给系统造成的影响及系统响应的时间。目标是测试当负载逐渐增加时,观察系统各项性能指标的变化情况

压力测试在峰值负荷条件下,长时间连续运行给系统性能造成的影响

性能测试:  是通过自动化的测试工具模拟多种正常、峰值、异常等情况下的负载条件来对系统的各项性能指标进行测试,性能测试包括负载测试和压力测试。 

(性能一般测,观察在正常范围,峰值范围,超过临界值范围时候,系统的表现)

容量测试(Volume Testing):确定系统可处理同时在线的最大用户数,使系统承受超额的数据容量来发现它是否能够正确处理。容量测试目的是应用程序的某项指标的极限值(如最大并发用户数、数据库记录数等)

强度测试:测试对象性能行为在异常或极端条件(如资源减少或用户数过多)之下的可接受性。

兼容性测试: 是指测试软件在特定的硬件平台上、不同的应用软件之间、不同的操作系统平台上、不同的网络等环境中是否能够很好的运行的测试。

安全性测试:是验证应用程序的安全方面和识别潜在安全隐患的测试。普通测试以发现BUG为目标,安全测试以发现安全隐患为目标。

系统测试:  是将测试的软件,作为整个计算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其它系统元素结合在一起,在实际运行环境下,对计算机系统进行整体的测试。 。

验收测试:是按照项目合同、供需双方约定 的验收依据需求文档进行的对整个系统的测试与评审,决定是否接收或拒收系统

集成测试: 也叫组装测试或系统联调。在单元测试的基础上,将所有模块按照设计要求组装成为子系统或系统,进行集成测试,是介于 黑盒测试和白盒测试之间的测试。关注输出对于输入的正确性,同时也关注内部表现,主要测试模块之间的接口

冒烟测试: 是在集成测试之后转测试之前进行的测试,属于黑盒测试,一般由开发人员执行,耗时较短,主要测试软件的重要功能,检测能否正常使用,避免正式提交到测试部进行系统测试时发生严重缺陷。(减少测试阻塞情况)

回归测试:对产品进行一轮测试之后,开发人员会对发现的bug进行修改,修改后会提交一个新的程序版本到测试部,测试人员再次对新版本进行测试验证,验证之前发现的bug是否在本版本得到修改的活动的测试。

可靠性测试:

程序运行多长时间不会出故障。可靠性的,量化指标是周期内系统平均无故障运行时间

单元测试关注代码的逻辑路径,如 if  for 循环的实现;

集成测试/接口测试关注的是一个函数或者类所提供的接口是否可靠,是否正确

后台(服务端)怎么测试? (后台就是对数据库数据 或者前端输入进行加工处理

答: 后台程序一般是没有界面的,后台主要是进行一些逻辑判断以及运算的(有的需求文档中是有公式的),我们一般通过修改前端输入的数据,或者直接修改数据库的数据,再观察前端界面的输出结果,是否正确,是否和需求功能说明一致?通过这样的测试就可判断后台的算法、逻辑处理或者通信协议处理是否正确,我们一般就是通过这种方式来测试后台的。

那后台出错了,怎么分析查找定位?

答:我们一般通过后台运行日志来查看分析,通过多次构造测试数据,确定后台是因为某个操作步骤引起的错误,那么就有个出错时间,通过这个时间在日志中查找线索,通过日志中会记录基本的错误信息,那么也就能大概的定位到哪里错误了。(比较复杂的定位,通常会叫上开发人员一起协助定位)

有一个bug,让你深入定位,你如何定位?(怎么区分是界面问题还是后台问题?) 从后面往前面定位数据库数据->通信协议->算法

答:我们测试的依据是以数据库中的数据为基础的。首先依据数据库说明书,查询数据库表结构,如果表结构无问题,那就再看通信协议是否有问题(传输的数据结构无问题),用Fidder抓包,看抓到的请求格式、返回格式,如果格式和通信协议说明书一致,则表示通信也无问题,那么剩下的可能就是后端程序算法问题,要么是界面显示问题,我们可以查看fidder抓包的返回数据,如果返回数据错误,那就是后台算法或者逻辑判断错误,属于后台错误了,否则就是前端显示错误。就这么一步步分析定位,可以最终定位到究竟是哪个地方出错了

当客户端发送一个请求后,出现无响应,你分析一下,可能是什么原因引起的?

答:

1:服务器停机

2:网络故障

3:请求错误(地址或参数错误)

4:服务端程序内部处理出错

5:数据库服务停止

6:程序没有设置超时机制

测试计划格式 是什么?内容是什么?怎么写的?

1:概述      ( 测试目的、参考文档、缩略语)

2:测试范围 (测试范围,要测试哪些模块)

3:测试组网图 (系统架构图、组网图)

4:资源需求  (硬件资源需求、软件资源需求、人员需求)

5:测试条件 测试版本启动、测试版本停止、测试版本挂起的准则)

6:测试进度  (测试所有活动的时间安排,是测试需求分析、测试用例、测试轮次的时间安排)

7:测试准则    测试用例通过、测试用例失败、回归的准则、培训计划)

8:测试风险分析 (可能存在哪些风险,如何解决)

9:测试策略 (使用测试哪种测试方法、如何测试、测试的优先级,用例的设计选择)

10:测试功能点(具体的测试功能点,它相当于测试用例标题)

11:工作交付件 (什么时候完成测试计划的编写?提交测试计划)

测试报告格式内容:

  1. 简介(产品名称、版本号、参考文档),
  2. 测试资源描述(地点、人物,软件测试环境、硬件测试环境,测试组网图,测试仪器)
  3. 测试时间统计(具体的测试任务的时间, 这里面的时间是详细的每个版本的细分时间统计)
  4. 测试用例分析(测试用例执行情况分析,哪些用例通过了,哪些发现问题了),
  5. 缺陷情况分析(分布情况、严重程度、遗留问题),
  6. 版本质量分析 (测试版本的质量怎么样,描述一下)
  7. 测试活动评估  (测试活动及写测试用例,脚本方面的质量方面描述一下)
  8. 测试过程改进  (改进的建议)

测试用例格式内容(测试用例有哪些要素,或者有哪些东西构成的?)

所属产品         所属模块         用例编号         用例名称         前置条件         操作步骤         预期结果         实际结果         测试人员 

bug组成部分 (缺陷报告),问题单:

所属产品、所属模块、影响版本、bug类型、bug标题、严重程度、bug状态、优先级、重现步骤、附件

Bug生命周期:(和bug要素或者格式不同,是2个东西)

发现bug、提交bug、分配bug(项目经理 或 研发负责人)、修改bug、回归验证bug当回归不通过时则将bug重新分配给相关的研发人员)、关闭bug

提交给项目经理的优点:

1: 项目经理可以很好的掌握产品的质量,合理及时的安排项目进度。

2: 防止打扰研发人员

禅道的bug状态:有3种: 激活状态、已解决状态、关闭状态。

JIRA的bug状态有:开始、进行中(正在修改)、重新打开、已解决、关闭、

为什么要对bug跟踪?

1: 缺陷跟踪系统是帮助开发、测试、项目经理搜集和控制软件中发现的缺陷

2: 跟踪bug,可以实时了解自己所提bug的状态,是被接受了,还是已经处理了,处理成什么样的? 是修改,还是挂起,还是非问题,实时了解,可以让自己对bug的状态有了掌握,以决定下一步工作或者沟通。如非问题,就需要和开发进一步沟通处理

3:有些bug如果分配到研发人员哪里了,但是一直未修改,比如会影响到自己下一个版本测试,则可以提醒研发人员

4:bug是测试人员提的,也只能由测试人员关闭,那么它中间处于什么状态,也需要关心

5:通过bug跟踪可以理解产品整体质量,还可以通过其他测试人员所提的问题单学习其他测试人员的测试思维

6: bug跟踪还可以观察这个bug的修改历史,修改信息,是自己充分了解出错原因,受影响的部分是哪些,然后有针对性的测试。

测试过程遇到什么困难?

答:有,我们一般会遇到这些问题,比如

在测试过程中,有没有印象比较深刻的bug (经典bug)

答:有,我就举一个例子吧

  1. 当时我在测试一个系统的一个模块,出现这个模块的一个窗口突然自动退出了,然后重复刚才步骤,也无法重现这个bug, 版本测试完毕之后,我又花了一段时间去重现它,也无法重现,后来在后续的升级版本测试中,再测试这个模块的时候,这个窗口突然又一次自动退出了,然后操作同样的步骤,仍然不能重现,就觉得很奇怪,这个时候无意中(刚好起身打水)看到身边的同事同样也在测试这个模块,心里在想,是不是因为同时操作同样的模块引起的,于是联合这个同事一起按之前的操作步骤重演一次,终于该问题出现了,窗口又一次自动退出了,于是找到了这个bug的重现步骤,开发也终于能够定位到出错原因,修改了这个bug,我们再一起验证回归它,这bug消失了,当时还获得了项目组老大的表扬,还让我针对这个bug写了一个分析总结。

  1. 测试一个网站系统的查询功能,突发奇想,选择一段查询时间,然后快速不断的点击查询按钮,我当时点的频率很高,点了一段时间,然后就出现了客户端界面不响应,无法操作的现象。后来查找分析,发现服务器崩溃了,(服务器认为是攻击现象,因此停止了服务)后来启动tomcat服务,页面又正常了,那么再次做同样查询操作,问题重现了,当时还写了一个经验总结,放到我们的共享经验库里面(因为前次请求的响应尚未返回,后续请求又来了,导致服务器认为攻击,停止服务了)

  1. 在一个版本测试的时候,在一个输入框里面,有一次输入的小数位数非常多,发现输入的精度下降了(也就是小数点后面的位数少了),后来深入定位,发现是开发在版本升级时,误将这个输入框接受的数据类型从双精度(double)下降单为精度float型了

当你提交的问题被开发人员定义为非问题时,你如何处理?

答:首先找一个合适的时间,跟开发人员单独沟通,把自己的想法告诉他,从客户角度分析要有理有据,或者重新演示给他看,明确这确实是一个问题,如果流入到线上成为网上问题,那么都不太好,跟他讲明利害关系,进行进行充分沟通,如果开发人员能接受则更好,如果仍然拒绝,就找上级领导,如项目经理(或者测试经理)解决。

(最终谁决定这是不是一个问题,产品经理或项目经理,最好是产品经理)

给你一个系统(APP / WEB怎么测?),你怎么测试?或者你这个项目你是怎么测试的?

答:说出测试流程 (如果是APP,就要加上专项测试)

你这个模块怎么测试的?(功能模块)

答:(测试流程的简化版本)

  1. 首先需要熟悉这个模块的功能需求,列出详细完整的测试点,覆盖完整的需求
  2. 针对测试点写测试用例(1个测试点可能会写多条测试用例,因为有不同的输入)
  3. 严格执行测试用例,当输出结果与预期不符时,提问题单,并协助开发定位问题
  4. 最后可以根据所测模块写个经验分享或经验总结

上面这个问题,有可能会继续问,你跟我说具体的,说具体一点,怎么测?

答:意思是要说具体的测试点 (这个必须要熟悉功能)

(按设计用例的思路来说: 界面、功能、性能、兼容性、安全性、异常、网络—存在弱网、断网2种情况)

现场写或者说测试用例

答:要从以下方面各写几条

界面、功能、性能、安全、兼容性、网络、异常(设计服务器端方面的)

如果是要求口头描述,说的测试点越多越好。

评审参与人员方式1:产品经理+项目经理+研发负责人+研发小组成员+测试负责人+测试小组成员 (开会、邮件评审)

 你觉得软件测试通过的标准是什么?(笔试题)

1、软件需求分析说明书中定义的所有功能已全部实现,性能指标全部达到要求。   

2、所有测试项没有残余的一级二级三级的错误。  

3、立项文档、需求分析文档、设计文档和编码实现一致。

你认为做好软件测试用例设计工作的关键是什么?

1: 充分理解测试需求

2: 测试覆盖率要完全

3: 减少冗余测试用例

4: 要有评审机制

5: 要及时更新维护测试用例

6:  掌握适当的测试粒度(不能太粗,也不能太细致)

7、验收测试资料齐全(测试计划,测试用例,测试日志,测试报告)

测试用了多少时间?

APP测试:  2周 ~ 1个月 (项目时间2~3个月)

(包括需求分析,写测试计划,写测试用例,搭建测试环境,执行测试,写测试报告)

  2个月  44天工作日    

测试需求分析 5天 (熟悉它,用xmind列测试点)

                         写测试计划 5天+评审2天

写测试用例:8天写 + 4天评审 =12 天 (700条)

搭建环境1天

执行: 3~5轮(10 + 5 + 3 ) 18天 

                         写测试报告1天

                         测试报告评审1天

                            

Web网站测试:1~ 2个月(项目时间3~4个月)

自动化测试、性能测试、功能测试的工作量(测试用例数)比例

答:自动化、性能测试、接口测试一般低于30% ,功能测试高于70%

(只有那些处于维护状态或者偶尔才变更的成熟产品和模块才会采用自动化测试, (非性能测试), 不然维护成本太高了,功能界面变化太大,接口都重构,用例没写完可能功能就推倒重来了, 大部分还是靠手工进行测试验证, 自动化和手工比例3:7开比例左右,比例是按投入人头来算,基本上自动化、修改代码的测试不会超过30%)

接口测试30%的比例

开发用了多长时间?(指的是项目整体的研发时间)

开发完毕时间则再加上一半的时间(总共时间 <= 半年 )

开发  APP:  1~3个月

      Web:2~5个月

研发部多少人?

研发中心:测试部 + 开发部 + 产品部 + (可能硬件?)

大约:10多个 ~ 40个左右 (说具体的数字)

工作年限低于3年的的,说30以下; 工作年限高于3年的,要说40多人

测试人员在研发人员的比例?

测试和开发人员比例为 1:4

测试部有多少人:3 ~ 10 个测试人员 (4 ~6个)

你这个项目多少人? 我们就说项目组89个人

3 -9 个人 (测试1~ 2到3个,项目经理1个,研发5~7人)

前端和后端多少人?

前端:JAVA  =  1:3

有没有上线? 回答第2条--------------------------

1:web网站:说上线了,开发完毕后就交给第三方公司了(www.项目的拼音.com),之前是上线了,后期的运营就不清楚了

2:APP就这么说,上线了

3:企业内部网,外网不能访问(web网站,APP),没有发布到应用商店里面去

下线的原因:

上线了,曾经上线过,因为可能捆绑推广了与本应用无关的内容等问题等原因遭到平台管理员下架,涉及违规收集使用用户个人信息、恶意吸费、强行捆绑推广其他无关应用

关于产品帮助里面的开发单位和简历上的工作单位实际不符

答:开发公司是主承包单位,和我们公司有业务合作,我们公司老大和他们公司很熟,是朋友关系,接了这个项目过来开发,他们直接派了两个人过来,一个项目管理的,一个技术管理的,和我们一起开发,在我们公司(或者让我们去它公司,那就是我们整个项目组出差到他们那里工作几个月)

你在这个项目写了多少测试用例?

答:大概说700~800条 (一个人测试人员)

你一年写了多少条测试用例?

答:大概写了3000条左右

这个项目发现了多少bug

答:全部总共发现了200个左右bug?(第一轮会发现问题比较多,1个人大概发现30~40个bug,第二轮测试20多个,第N轮…)

无法重现的缺陷如何处理?应当采取的适当处理方法。

答:

1)首先,应当对这样的缺陷进行详细的记录,并通知开发人员来定位。

2)对于寻找难以再现的缺陷要合理地安排时间,要考虑到测试项目的整体进度,对一时难以再现的缺陷可以暂时搁置,以保证项目的正常进度。

3)在后续的测试过程中对未重现缺陷予以关注,再次测试它检查它是否能够重现。

如何避免提交重复问题单?

答:

1:尽量避免两个人同时测试同一模块

2:如果两个人同时测试同一模块,提交缺陷时一定在提单系统查一下是否有相同的缺陷已经被提交

在测试的间隙时间里你做什么工作?(一个版本已经测试结束,新版本还没来的等待时间)

1: 更新测试用例

2:  准备下一轮的测试环境

3:熟悉系统

产品上线后,客户发现了问题,你怎么处理?

答:

先在实验室重新测试一下,检查该问题能不能重现,如果能重现,我们就提单到缺陷系统,监督开发人员修改,修改后,对该问题进行回归测试;

并对这个问题写一个漏测分析总结,避免后续版本中出现类似现象。

什么时候做自动化测试?

答:

  1. 我们一般在回归测试中做自动化测试,(主要是测试重复功能 或者 之前的旧功能)
  2. 产品的后期做自动化测试(后期功能稳定了,元素功能基本不会改动了)

写过测试方案吗? 和测试计划有什么区别?

答:

以前写过,后来我们将测试方案合并到测试计划里面去了,也就是需求分析后,就直接写测试计划了

区别是:测试计划表达是做什么,基于管理角度来规划测试活动,而测试方案更具体,描述怎么做,从技术角度规划测试活动的。

(测试方案内容:测试类型的选择、环境的选择、工具的选择、用例及代码的设计)

(测试策略就是本次测试的测试重点的描述--比如修改点、重点模块、之前未详细测试的模块)

如何保证研发修改的问题彻底修改好了?(如何保证不会引起新问题?)

答:

首先我们在新版本中回归该问题,然后结合开发针对问题的修改意见,以及自己的测试经验,验证所有跟该问题有关联的地方或者周边模块,保证问题彻底修改好了
 

你这个系统的架构是什么?(或者框架)

答:我们后台使用的是JAVA的spring架构,服务端操作系统是centos,数据库采用的是mysql

(spirng是一个开源的框架,采用分层的思想,主要用户开发企业应用, Spring MVC 是基于Spring的一个 MVC 框架)

描述一下测试的各个阶段,你所做的测试工作是什么?

  1. 需求分析阶段:进行需求评审,提取测试点
  2. 写测试计划:产出测试计划文档
  3. 写测试用例阶段:产生测试用例
  4. 测试设计阶段:编写测试代码(接口、性能、自动化测试)
  5. 搭建测试环境:安装测试包
  6. 执行测试:产出问题单
  7. 测试结束后:产出测试报告文档和测试总结文档

  1. APP monkey

ADB(Android Debug Bridge) 是安卓调试桥,实质是安卓的一个调试工具。

简述adb几个重要命令

adb devices、 adb shell、adb start-server、adb kill-server、 adb install、adb uninstall, adb push 扑时、adb pull、adb logcat、adb shell free、adb shell top、adb version

查看设备(手机)的cpu和内存的使用情况 adb shell top

停止运行中的monkey进程:ps | grep monkey     kill PID

- p指定包名(如何防止事件数发送到其他APP上)

-s: 随机数种子,如果运行2次monkey,2次monkey的seed值相同,则两次Monkey测试所产生的事件操作也完全相同的。

--ignore-crashes  添加一个忽略崩溃的参数,发生崩溃继续发送未完事件

--ignore-timeouts 添加一个忽略超时的参数,发生超时时继续执行未完事件

命令格式:

兼容性测试: 是指测试软件在特定的硬件平台上、不同的应用软件之间(比如浏览器)、不同的操作系统平台上、不同的网络等环境中是否能够很好的运行的测试。

兼容性测试不同的分辨率、不同的版本、不同的厂商、不同的网络

兼容性要测试哪些方面?

主要包括:

  1. 不同操作系统版本的兼容 (android的版本有 5,6,7,8 IOS  8910,11)
  2. 不同手机品牌厂商的兼容(如华为,小米,OPPO, vivo
  3. 不同机型方面的兼容(如华为的荣耀系列、mate系列,畅玩)
  4. 不同的手机屏幕分辨率的兼容 (64072076880010802k)
  5. 不同的硬件设备的兼容(手机、平板、智能设备)
  6. 安装卸载(在不同的手机上,不同的系统版本上是否安装卸载正常?)

兼容性机型怎么选择的?

答:我们一般选择市面上使用的主流机型,各大厂商也会有销售数据,这个大致可以从网上或新闻查到,主要挑选销售量比较广的、属于厂商主力的机型、还有不同屏幕分辨率的、新近推出的机型。

如何进行日志分析:  Crash 崩溃  exception 异常  error 错误  ANR 应用程序无响应

问,会看日志吗,会日志分析吗,如何进行日志分析?

答:会分析日志,monkey测试就是要分析日志才知道测试的情况。

看Monkey的运行日志,如果显示monkey finished,表示本次测试是ok的,没有问题。

否则,就查看日志信息 ,在日志文件中搜索  ANR /exception/ crashed /error/fail (无响应/异常/崩溃/错误/失败)关键字。如果出现这些关键字,则表明程序运行有错误。那么我们就导出日志,并提问题单。

(5秒内无法对输入事件(按键及触摸)做出响应,就出现ANR,一般是应用程序发送崩溃了)

如果问道你知道是哪个模块出错吗?

一般出错会抛出异常信息,出错的异常信息中一般会有出错的方法名称或者类名或者一些关键字,大概可以看出是哪个类,哪个方法出错,结合详细设计文档,查看这个类或者方法属于哪个模块的,大致可以定位出问题是哪个模块了

如何进行monkey测试?

1:  安装JDK,并配置JDK环境变量

2:下载adb,并配置adb环境变量

3:安装模拟器或者使用一个手机链接电脑 (真机的时候就要安装驱动程序,并启用USB)

4:在模拟器中或者手机中安装app程序

5:利用adb工具调用monkey对app程序进行压力测试

6:monkey正常运行结束,表示本次测试没问题, 如果运行异常终止,则提问题单。

简述一下APP测试和web测试的区别?

(它们的主要区别在体现在客户端)

它们体现在以下几个方面,就是系统架构方面、性能方面、兼容性方面。

系统架构方面

web项目,是B/S架构,基于浏览器的。软件测试只需更新了服务器端就可以。

app项目,是C/S架构,必须要有客户端,用户需要安装客户端。App项目测试则需要分别更新客户端和服务器。

性能方面:

web页面主要会关注响应时间。

而app则除了关心响应时间外,还需要关心流量、电量、CPU、内存这些。

兼容性方面:(关注界面能否显示完整友好,关注界面的东西)

Web兼容性测试主要考虑浏览器不同版本,系统的不同版本,不需要考虑安装卸载(浏览器网上专门的有工具)。

App兼容性测试则要看不同的分辨率,屏幕尺寸,还要看不同手机品牌、不同系统版本,

app还需要考虑安装、卸载、更新。

APP除此之外还要考虑到一些异常场景的测试,比如包括安装时的中断、弱网,电量低等

它们服务端的性能没区别,都是一台服务器。

APP测试有哪些特点

(除了功能性测试之外,也就是还有那些专项测试?)

答:

(除了按需求说明书外的 功能测试 之外还需要进行如下测试,下面这些测试叫专项测试

1: 适配性测试(也叫兼容性测试,不同的安卓版本,不同厂商,不同手机品牌)

2: 不同网络测试 (2G网络/3G网络/4G网络/WIFI网络 ,重点切换网络时会不会出错)

3:  在线升级测试

4: 中断测试(电话、短中消息打扰)

5: 耗电量测试 (耗电量高的app生存率低)

6: 弱网测试(信号差,用软件 或者 信号屏蔽实验室来模拟 )

7: 安装卸载 (APP是C/S架构)

8:   流量测试 (手机的流量管理里查看待测APP消耗的流量)

9: 启动时间  (logcat将启动信息输出到一个文件中,看display启动页后面带一个时间)

web网站方面的专项测试有哪些?

1:兼容性测试 (操作系统、不同的浏览器,不同的浏览器版本)

2:本地化语言方面的测试(产品出口到国外,不同的国家要翻译成本地语言,检查窗口上面的文字能不能显示完整?不用国家的语言字符长度不一样)

IOS与安卓的区别?(这是笔试)

1、Android是google公司做的手机系统,ios是苹果公司做的手机系统;Android 开源,IOS闭源

2、两者运行机制不同:IOS采用的是沙盒运行机制(沙盒就是可以彻底删除运行结果,恢复到运行前状态),安卓采用的是虚拟机运行机制。

3、两者后台制度不同:IOS是假后台,IOS中任何第三方程序都不能在后台运行;安卓是真后台,任何程序都能在后台运行,直到没有内存才会关闭。

问:怎么看APP的启动耗时?

答:利用adb logcat 输出app的启动信息到一个文件中,然后在这个文件中查找displayed关键字,会看到APP启动主界面信息,后面跟一个时间,就是启动时间(实质是自点击APP启动到进入APP主窗口这一段时间之和)

问:app的耗电量如何测试?

答:我们通常用2种方式

  1. 使用系统自带的电量测试工具,得出app耗电量
  2. 使用安卓系统dumpsys battery调试工具的测量电池的命令, 先开机执行battery测出系统电量, 然后再运行待测app一段时间,在执行battery命令,2次相减,即可得出app软件的耗电量

一般的应用几十毫安~100mA内 ,正常的应低于40毫安时为好

adb shell dumpsys battery  //使用这个命令,耗电量测试,显示电量百分比

(android移动系统自带的一个命令)

问:流量怎么测试?

答:

1:使用系统自带的流量测试工具,手机管家之类的,得出app流量

2:抓包工具

APP闪退是什么原因?

1:手机版本不兼容 (os或者app版本)

2:手机分辨率不兼容

3:运行内存不足

4:需要其它的依赖包没有被安装

5:感染病毒被安全卫士拦截

6:  没及时更新

如何避免monkey测试中播放音乐事件?

答:在monkey命令中去掉系统事件即可pct-syskeys,音乐是sys key事件,忽略此事件,避免播放音乐

问:APP性能测试怎么测?

答: APP客户端性能测试,即APP自身的性能情况

主要测试以下指标

  1. 内存利用率 (adb shell free/Emmage,指的是APP运行后,它占用的系统内存的百分比)
  2. CPU利用率 (adb shell top/ Emmage)
  3. 流量使用情况 (手机自带的监测流量的工具/ Emmage)
  4. 电量使用情况(系统自带的电量工具 或者 使用Android的dumpsys battery 命令/ Emmage)
  5. APP启动速度 (adb logcat命令输入启动信息到一个文本,查看displayed关键字处显示的时间)
  6. APP界面操作流畅度 (靠个人感觉卡不卡,响应时间低于2秒/ Emmage FPS)
  7. 与服务器交互的响应时间 (响应时间抓包工具)
  8. APP极限测试,比如低电量、储存满了、弱网等情况的响应能力

(各种极限测试:各种边界情况下验证app的响应能力(2,5,8秒))

如: App安装、卸载,或者操作的时间)

  1. APP的压力测试,频繁的重复操作某个功能下的资源使用情况。

反复长期操作下,系统资源的使用情况(CPU/内存占用率)

App反复进行安装卸载,查看系统资源是否正常

其他功能反复进行操作,查看系统资源是否正常

流畅度:如果是测试游戏,还有FPS (每秒传输帧数,通俗来讲就是指动画或视频的画面数, 每秒钟帧数愈多,所显示的动作就会愈流畅)

怎么对APP进行批量的测试?(兼容性)

答:

1)我们会买一些手机进行真机测试

2)使用云平台(有Testin平台,腾讯优测,阿里云测,testbird云测,百度云测),即可,简单省事 (每天有几次免费的机会测试)
云平台会免费提供市场占有率Top100的android、iOS真机供你测试。

三种APP:

Web APP (公众号)--现在原生态的功能如获取系统一些功能,照相机,通知,H5都能做

Web App 指采用HTML5语言写出的App,不需要下载安装。类似于现在所说的轻应用。生存在浏览器中的应用,基本上可以说是触屏版的网页应用。(开发成本最低)

混合APP (新闻类、视频类)

Hybrid APP指的是半原生半Web的混合类App。需要下载安装,看上去类似真正的 App,但只有很少的用户界面 Web View,访问的内容是 Web网页 。(开发成本低)

原生态Native App QQ、游戏类、小蓝单车这种APP

Native APP 指的是原生程序,需要下载,一般依托于安卓操作系统,有很强的交互,是一个完整的App,用户体验性比较好,用户留存率比较高,缺点是开发成本高。

  1. SVN

什么是SVN,做什么用,有哪些功能?

SVN是一个版本控制工具,作为项目管理用的,一般开发人员使用较多,常用于管理源代码和研发文档,对文档代码进行权限控制,具有上传,下载,增删改功能,能够保持本地文件和服务器文件同步。

import : 从本地PC机导入文件到SVN服务器(本地文件不受服务器控制)

export从SVN服务器导出文件到本地PC机(本地文件不受服务器控制,发布或者脱机使用)

check out(一次性的)检出,从服务器导出文件到本地PC机(本地文件受服务器控制,操作会同步),第一次从服务器导出文件是check out,之后都是commit。

commit提交更新,从本地PC中提交修改过的文件到SVN服务器 (受控同步),相当于check in

update: 从服务器上下载文件,且覆盖本地文件(受控同步)

add本地拖入一个文件到checkout文件夹里面,右键点add菜单,commit后同步到服务器(服务器会同步新增)

delete:在checkout文件夹里面,右键delete一个文件,commit将同步到服务器(服务器会同步删除)

命令总结:上传、下载、增删改、提交、更新

红色感叹号已更新但未提交(当你开始编辑一个文件,这个文件的状态就会变成modified,图标也会变成红色圆圈带一个感叹号。这样你就可以轻易的知道自从上次更新以来都有修改过哪些文件,需要提交哪些文件)。 

黄色感叹号版本有冲突 (三角符号带感叹号,表示在一次commit中产生了一个冲突,即别人先提交了,冲突就是说你对某个文件进行了修改,别人也对这个文件进行了修改,别人抢在你提交之前先提交了,这时你再提交就会被提示发生冲突,而不允许你提交,防止你的提交覆盖了别人的修改)。 
 

绿色的勾:图标表示这是一个最新取出的工作副本(受控的)

蓝色加号:意味着这个文件或文件夹已经被计划加入到版本控制之下(新增了一个文件到受控目录下)。

  1. Fiddler

什么是Fiddler?

答:

Fiddler是一个抓包工具, 是一个HTTP协议代理工具,位于客户端和服务器端中间,它能够记录客户端和服务器之间的所有 HTTP请求和响应。

Fiddler在测试中做什么用?(请求、返回数据、限制网速、看响应时间、请求前断点)

可以先对程序做的一个初步的简单的测试

1:分析请求的数据是否正确,有没有重复请求,有没有错误的请求?

有错误的请求和不合理的请求就提单

2:分析返回的数据的内容是否正确? 包括返回状态码 + 返回的具体内容

3:限制网速,模拟不同的网络环境来模拟测试我们的系统

4:查看服务器响应时间是否合理?能够看到每个HTTP请求消耗的时间

( 时间单位是毫秒,1=1000ms )  2 5 8

2秒理想时间,5秒是可接受时间,8秒是超出忍受区间(提单)

5:还可设置断点,修改请求,欺骗服务器,测试它的返回内容是否合理?

如果问到,如何分析要说详细

那么就补充下面的语言:

当访问一个网站后,要在fiddler的会话列表中检查HTTP状态码,要看发送的请求地址,请求的方式是否正确,还要查看返回的内容是否正确,因为状态码返回 200仅仅是表示服务器对客户端的请求处理了,但是返回的内容是否正确,这个要自己去看,分析,是否和需求说明书一致,一致则ok,否则错误。还要看响应时间,Fiddler有个页面细分的统计时间功能,可以看出具体是哪个页面的时间较长

Fiddler怎么抓包?Fiddle怎么用的?

1: 安装fiddler抓包工具

2: 设置fiddler抓包参数 (如设置可以抓https包、允许远程主机连接)

(https简单讲是HTTP的安全版,端口是443)

3:设置一下网站过滤

4:如果是抓APP包,则还需要设置手机无线代理

(手机发送的数据会经过fiddler所在机器的无线网卡,手机的ipfiddler无线网卡处于同一无线局域网中)

5:运行被测网站或者app软件

6:在fiddler里面查看发送的请求和服务器返回的数据情况(查看有没有错,或者重发,响应时间)

Fiddler 如何限速?

答:在fiddler的有个脚本代码文件,在该脚本文件里面可以自定义网速 ,主要是调它的延迟时间,通过延迟时间达到限制网速的目的。

Fiddler怎么抓APP手机数据包?

1: 安装fiddler抓包工具

2:在本机上安装一个wifi软件

3:设置手机无线代理参数,连接上本机wifi (代理服务器IP地址是fiddler所在机器的wifi使用的无线网卡地址、代理端口号是fiddler的端口号)

4:运行手机上的APP程序

5:  在Fiddler里面就看到手机app数据包了

  1. LoadRunner

参看LR重点

7selenium

参看selenium webdriver问答文档

8jmeter

参考jmeter总结文档

9:接口测试

参考文档

10接口测试流程?怎么做接口测试?给一个系统怎么做接口测试?

1:  熟悉接口定义文档,获得接口功能描述、接口请求方式、请求URL、请求参数、返回参数等    从接口说明文档中整理出接口测试点,接口测试一般是.do格式的地址)

2:  写接口测试计划

3写接口测试用例   (功能测试一样,等价类,边界值,异常输入都要考虑)

4编写接口脚本   就是使用jmeter编写,然后再保存为

5执行接口测试用例(Jmeter  or LR or pastman

6分析接口测试结果  主要看响应状态码、返回结果

7写接口测试报告   截图,一个场景(就是一个用例)截几幅图,贴入测试报告中

会不会编写测试脚本?

答:会 (LR/python的request模块 /jmeter

用到哪些工具:

商用接口测试工具:Loadrunner,Postman

免费的开源工具:Jmeter

主要是做web服务器接口测试是测试浏览器与服务器的接口。

做少量的第三方API接口 SDK接口)

主要测试哪些接口:一般测试主要业务模块的最外层接口

何时进行接口测试

前端的实现,依赖于后端的接口,测试人员需要在开发人员输出接口文档后,就立即开始设计接口测试用例,

在开发人员将接口开发完成后,就可以进行接口测试了。

接口测试大体分为两类:   模块接口测试和web接口测试

web接口测试又可分为两类:服务器接口测试外部接口测试(第三方验证,调用第三方接口)

接口协议 : 常用的是基于 http / https /SOAP(http+XML) 协议的接口,还有getpost方法。

问:使用shell干嘛?(有用过shell语言吗?

答:有简单使用过,shell是一个脚本语言,面向过程编程的,可以写函数,定义变量等等,我们使用shell编程,可以将一些linux命令集中执行,用于执行一些任务,并且执行结果输出到一个文件中(定向输出),并检查任务执行情况

Linux 系统也提供了使用者控制计划任务的命令 :crontab 服务,将脚本加入到它的配置文件中启动服务就可以定时执行)

10:安全测试。

安全测试概念、安全测试要哪些内容?

安全性测试(security testing)是什么?:

答:是验证应用程序的安全方面和识别潜在安全隐患的测试。普通测试以发现BUG为目标,安全测试以发现安全隐患为目标。

如果问道了解安全测试吗?或者做过安全测试吗?

答:做过

怎么做安全性测试?(安全测试步骤)

  1. 熟悉需求,将安全性测试写入测试计划中
  2. 设计安全性相关的用例,例如:(将下面的13个说出8个)
  1. 用户权限控制方面 (用户拥有的权限方面)
  2. 页面权限控制方面 (不能对某些页面越级访问)
  3. 登录框或URL地址要防止SQL注入

 

http://localhost:3452/ExcelUsingXSLT/Default.aspx?jobid=1'or 1

怎么防止?代码中过滤'or 1

  1. URL地址要防止JS脚本攻击

(在地址中加入脚本正常的url 比如http://localhost:1796/home/index?genre=abc ,那么页面就会显示abc

但是javascript攻击的话,比如url是http://localhost:1796/home/index?genre =<script>window.location='http://baidu.com/'</script>) 如果出现跳转到百度,那么就是该页面没有做JS攻击防备

  1. 页面应该能够防止session互串(每个用户只能操作自己的页面)

Session 的作用就是用户会话期间负责存储用户个人信息,用于识别用户身份的机制

  1. 一段时间未操作页面,页面应该有session会话超时功能

  1. 敏感数据传输的安全性,数据有没有加密传输,md5加密,还应该加一个特定的字符串上去,这个从接口测试传入的参数就可以看出来有没加密

  1. 带表单的网页提交方式?(不能使用get方法提交)

  1. 重要的配置文件是否存放在服务器上?

  1. 操作日志是否记录的太详细?

  1. 异常信息是否记录的太详细?

  1. 输入边界值异常值?等等

  1. get中是否带有敏感参数

  1. 检查是否防范缓冲区溢出(url地址中输入超长字符,输入值输入超值)

  1. 执行测试用例
  2. 在测试报告中加入安全性测试分析

不懂的,或者没遇到过的,要避重就轻,巧妙略过

就是自己了解过,但是在项目中没有使用,或者用的不多,如果给我时间,我学习能力强,能很快掌握它

基本都是上面这些,主要是现场要灵活应变,心态要平和、思维要保持清晰,不要被对方气势压倒,屡败屡战,直到收到offer为止。

13:如何提高软件缺陷(bug)记录,或者提交高质量的bug?
1、唯一性。 2、可重现 3.一致性 4、完整性 5、简洁性 6、跟踪性 7、客观性

ba中间没有符号,直接相邻,那直接复制赋值,后自增

a+=2  相当于 a=a+2;

没有a =+2这种方式

关于持续集成测试:

问:什么是持续集成?

答:通俗的说:就是对开发人员每一次提交的代码进行接口测试,一直持续这个过程,直到所有功能开发完毕,持续集成的测试方案就是接口测试,进行接口自动化测试,接口自动化的持续集成

如果再问,怎做到自动化执行用例,你就说我们是开发写的一个python脚本,python里面有个函数可以自动对比测试用例里面的返回值,循环对比,实际返回值是否是预期返回一致,是的话就测试通过,否则就失败,我们拿来用就可以了。

持续集成,最简单的形式是包括一个监控版本控制(SVN等等)变化的工具(工具里面有个检查器,定时检查代码是否有变化)。当变化被发觉时,这个工具可以自动的编译并调用python脚本测试对接口进行测试。

Jenkins是最著名的集成测试工具,java语言开发的,是一个网站

问:了解(使用过)jenkins吗?

答:有简单的使用过,搭建过jenkins的环境,我们是放到tomcat的webapps里面,启动服务运行的,jenkins一个开源的持续集成测试工具,可以新建并配置任务,设定构建触发器,以及构建的命令,定时执行测试用例,可以持续的一天多次的执行测试任务。

如果是问到具体的细节:

那就回答,我很久一段时间没有使用它了,具体的细节有些忘记了,我有搭建使用文档,查看一下就可以了。

订单怎么测试?

答:

订单一般包括订单编号,订单时间,收货人、收货地址,商品信息(商品名称或其他属性)、商品总价、支付信息(哪种支付方式)、订单状态等,我们主要测试上面的这些字段的内容进行测试

  1. 比如检查订单号是否唯一,是否重复?
  2. 分别构造不同的订单状态,对不同的订单状态进行测试,如未付款,已付款,已取消、已发货,已签收,退货申请,退货中,已退货,取消交易等等场景分别进行设计用例
  3. 对单个商品、多商品、以及它们的数量
  4. 对单个订单(同商户)、多笔订单(不同商户会拆分多个订单)
  5. 不同的支付渠道等等设计用例
  6. 以及经性能方面的并发测试,还有一些异常方面的测试,比如网络中断啊,服务器停止,页面是否能给出合理的提示啊等等

等待付款(您刚拍下宝贝,尚未付款)、已付款(您已经付款到支付宝,但卖家还未发货)、已发货(等待买家确认:卖家已经发货,等待您进行"确认收货"操作)、交易成功(交易已经成功,货款已经打给卖家)、退款( 申请退款退货了)等等。

电商怎么测?
答:先说电商的业务模块构成:主要分为前台购物和后台管理
前台购物包括:商品浏览、查询商品、订购商品、购物车、个人用户信息维护等功能
后台管理包括: 商品管理(上架、定价等等)、订单管理 和 会员管理、卡卷中心(折扣)、配送物流管理、评论管理、运营管理(运营概况-新增注册,访问流量等、领取优惠卷、报表类
整个的业务流程:客户浏览商品 -> 加入购物车 –>下单 -> 编辑订单属性 -> 支付 -> 订单生成(付款)–> 物流 –> 收货 完成
测试的重点:主要是关注订单正确性、支付正确性(人工和数据库数据进行对比,测试支付的算法),单个产品单个订单、单个订单多个产品、以及不同场景的支付(金额足够、金额不足、重复支付、无网支付(断网)、弱网支付、同账号多平台一起支付、余额宝微信信用卡等多种支付方式、不同支付方式的组合)的处理情况,还有各种报表的正确性,主要构造各种场景的数据(修改数据库数据的值,日期),我们根据这些内容分别设计对应的测试用例,保证电商功能的覆盖率。
还要做性能测试,性能测试一般放在功能测试完毕后,系统比较稳定后进行。
(内容比较大,说个大概就行了)

支付怎么测试?WEB/APP

问:支付怎么测试?

答:我们测试支付是使用真实支付场景测试的(也就是实际付款了,公司会报销)

主要是针对各种支付渠道、支付场景、合并支付、统计、安全性方面设计对应的支付测试用例

1支付渠道:包括银联、微信、支付宝等,

2每种支付渠道设计支付场景:包括正常场景、异常场景、弱网无网场景:

金额足够、金额不足、重复支付、错误金额支付、无网支付(断网)、弱网支付等

3合并支付:除了测试单笔订单支付外,还要考虑单个渠道多个订单一起支付、不同支付方式的组合等

4统计功能:还要测试后台的支付报表,要测试月收入报表、季度收入报表、年收入报表、

5各种支付渠道,平台的分成 (支付渠道分成大概在总交易金额的0.6%~1%之间,平台分成稍高,一般在10%以下)

6)支付安全性:支付是否需要签名认证(支付提交中附带支付秘钥就是签名)、

是否加密传输(这个接口定义能看出来),支付密码是否为掩码,是否可复制,输入错误次数等

关于对账:(统计)

目前支付宝对外的常用对账方式有两种:(真实对账)

  1. 通过在支付宝后台下载账单的方式来对账(月账单,日账单)
  2. 通过调用接口的方式来实现对账

电商平台基础知识:

电商结算周期一般在15天~ 1个月左右(指商家和平台、支付供应商之间的结算)

电商的收入除了会员年费、还有店铺的销售分成(扣点费)、广告等方式

目前比较大的电商,天猫、京东、易购、国美在线、1号店等,每个电商的每个类目的扣点是不一样,扣点也叫平台技术服务费,就是抽佣,也就是分成费,利润高商品的扣点就高点,利润低的扣点就低点:

举个例子:电器 5%,母婴2%~6%、珠宝 8%、礼品10%、服饰6%、粮油食品2%

购物车怎测?

答:首先我们要熟悉一下购物车的需求功能,按照顺序来说,先检查商品能否添加到购物车里面,添加多条购物信息到购物车,

然后,检查购物车界面是否友好,内容项目是否和需求说明书一致,就是显示的字段信息。

检查是否有全选、复选按钮,复选是否正常,对比购物车记录的内容是否正确,包括店铺名称、商品信息、单价、购买数量、金额,操作(清空购物车、删除),主要是检查单价、单种商品的小计、多个商品的总计的正确性,我们可以通过修改数据库的方式,来检查这个功能,还包括可以继续购物,去结算界面的功能测试,包括一些异常的测试,比如空购物车,超多记录条数的购物,数量编辑框输入各种字符串的测试,包括并发、界面的兼容性、网络的异常等等的测试

当支付完成后,但是数据库中并没有相应的支付记录?请问你知道大概是什么原因引起的?

答:出现这种情况一般是用户在支付完成后,没有在支付完成页面点击跳转到相应的商家,而是直接关闭了窗口,这种情况下,虽然支付完成了,但是支付服务商(比如支付宝、微信),并没有将支付结果通知到商户,因此商户无法更新订单支付情况,所以出现没有相应的支付记录的情况。

还有一种情况是,是支付完成后,将通知支付的地址写错了,导致商家无法收到支付情况,也就无法更新自己的支付记录。

要解决这个问题,就是按照支付完整的操作页面跳转到商家,起到通知商家作用。

另外,一般的支付服务商隔一段时间也会发起支付回调请求,将支付结果告诉商家,这就要等待一会儿刷新数据,才会显示支付记录。

支付服务商(支付宝、微信、PayPal)处理完支付数据后。会将处理的结果数据通过服务器主动通知的方式通知给商户网站,简单来说,就是支付成功后,支付服务商告诉你,钱已经到账了,你可以更新的支付状态了,就是是否完成

支付流程图

 

支付流程详解:

  1. 消费者选择商品,商品参数传递给send发送请求页面。
  2. web网址的send请求页面将请求提交后台,后台再转到支付供应商。
  3. Send提交后,跳转到支付供应商的银行或者第三方支付列表页面。
  4. 支付完毕后,支付供应商会将支付结果反馈给web服务器的接受receive页面(该商户地址在提交参数设置的,该地址要求是外网能访问到的地址,也就是让支付结果按原路返回给电商网址) 
  5. web服务器receive页面接收到支付供应商支付结果后,网址里面的商户先做业务逻辑处理(也就是卖了什么商品),更新数据库的订单状态。
  6. 之后购物平台再通知支付供应商已经接收到支付结果。

高并发可能引起:用户已经支付成功,但订单还处于未支付状态,由于用户第一次支付成功,但订单处于未支付,导致用户以为未支付成功,又支付了一次。(原因出现在第上述第6步,第三方支付接口回调网站接口阻塞,解决这个问题要开发或者购买消息处理中间件---第三方专用处理消息收发的模块

UNIX操作系统: 是一个强大的多用户、多任务操作系统,支持多种处理器架构

Linux 操作系统:是一套免费使用和自由传播的类Unix操作系统,也就是仿制Unix

iOS 操作系统: 是由苹果公司开发的移动操作系统,iOS 与苹果的Mac OS X操作系统一样,属于类Unix的商业操作系统

Android操作系统:是一种基于Linux的自由 及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。

MAC OSX 操作系统 : 这是一个基于UNIX核心的系统 苹果系统,主要用户PC机

其中:unix,liunx主要用在服务器上,ios,android主要是移动设备上

问:使用shell干嘛?

答:使用shell编程,可以将一些linux命令集中一起执行,用于执行一些任务,将执行结果输出到一个文件中,检查任务执行情况。

Shell是什么?

答:shell是一门脚本编程语言,面向过程的,就是对一些linux命令记住写在一起执行

如何快速的熟悉一个系统?

答:如果存在老系统,首先操作老系统,通过使用老系统的方式,可以迅速了解这个系统的大致功能,如果不存在老系统,是一个全新的系统,就阅读分析需求说明书,掌握主要的功能模块来快速熟悉。

什么时候锁定库存,库存什么时候减少 ?

答:

促销的商品数量有限,用户加入购物车后,实际库存就会减少(有常见拍下减库存、付款减库存 2种)。有购物车锁库存,订单锁库存,付款锁库存,任何一个实现方式都可以,库存锁,就是锁表,防止超卖

软件版本 (应该都是64位的)

答:如果他觉得你的版本比较新,你就说我们一般喜欢下载比较新的版本,如果确实记不住或者不知道,你就说我们老大下载给我们用的,我没注意版本号

----------------这些是面试中常问的版本号,需要重点记住--------------

  1. 禅道:8
  2. JDK:1.8(或者1.7)
  3. Tomcat:8
  4. Apache:2.4
  5. Mysql: 5.1 (或者5.6)
  6. CentOS: 6.5 (或者6.7)
  7. LoadRunner: 11 (最新是12,无人能破解,用的少)
  8. Selenium:3.0 (最新是3.6了)
  9. Android版本:4.4、5.0、6.0、7.0、8.0、9.0 (注意:对应有不同的API级别)
  10. ISO版本:7、8、9、10、11、12
  11. Python:3.0 (说大概的可以了,最新是3.6,python有知名的2.7的旧版,语法方面有些和3.0的不兼容,注意这个区别,改动大,比如3.0的是print(a),2.0的不需要加括号,直接print a就可以了)

-------------------------以下是不常问的版本号-----------------

  1. Jmeter:4.0 (最新是5.0,注意4.0也是2018年出的,之前的版本是3.2,3.3等)
  2. Postman:6.1 (之前也有5.几的,比如5.5)
  3. Appium:1.4

  1. JIRA:6.3
  2. Fiddler:5.0 (之前的版本有4.0的)
  3. Jenkis:2.121 (记不住,就说2.多)
  4. Eclipse: 4.6 (代号neon 里昂),注意使用的是标准版SE, java有3个版本,分别对应J2SE 标准版,J2EE 企业版, J2ME 手机版
  5. Pycharm:2017年的社区版(专业版就说用过,但是后来破解失效了)
  6. 硬件服务器:DELL T130系列
  7. 还需要记住一些测试APP的机型,版本

SVN

简介:

SVN是一个版本控制工具,作为项目管理用的,一般开发人员使用较多,常用于管理源代码研发文档,版本发布等,对文档代码进行权限控制,具有上传,下载,增删改功能,能够保持本地文件和服务器文件同步。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值