简述你在以前的工作中做过哪些事情,比较熟悉什么。参考答案如下。
我过去的主要工作是系统测试和自动化测试。在系统测试中,主要是对BOSs系统的业务逻辑功能,以及软交换系统的 Class5特性进行测试。性能测试中,主要是进行的压力测试,在各个不
同数量请求的情况下,获取系统响应时间以及系统资源消耗情况。自动化测试主要是通过自己写脚本以及一些第三方工具的结合来测试软交换的特性测试。在测试中,我感觉对用户需求的完全准确的理解非常重要。另外,就是对BUG的管理,要以需求为依据,并不是所有BUG均需要修改。测试工作需要耐心和细致,因为在新版本中,虽然多数原来发现的BUG得到了修复,但原来正确的功能也可能变得不正确。因此要注重迭代测试和回归测试。
黑盒测试和白盒测试是软件测试的两种基本方法,请分别说明各自的优点和缺点。
黑盒测试的优点有:比较简单,不需要了解程序内部的代码及实现;与软件的内部实现无关;从
用户角度出发,能很容易的知道用户会用到哪些功能,会遇到哪些问题;基于软件开发文档,所
以也能知道软件实现了文档中的哪些功能;在做软件自动化测试时较为方便。黑盒测试的缺点有:不可能覆盖所有的代码,覆盖率较低,大概只能达到总代码量的30%;自动化测试的复用性较低。
白盒测试的优点有:帮助软件测试人员增大代码的覆盖率,提高代码的质量,发现代码中隐藏
的问题。
白盒测试的缺点有:程序运行会有很多不同的路径,不可能测试所有的运行路径;测试基于代
码,只能测试开发人员做的对不对,而不能知道设计的正确与否,可能会漏掉一些功能需求;系
统庞大时,测试开销会非常大。
可用性测试测什么?
根据约定的协议、方法、格式内容,传输数据到接口经处理后返回期望的结果
1.接口功能是否正确实现;
2.返回值测试-返回值除了内容要正确,类型也要正确,保证调用方能够正确地解析;
3.参数值边界值、等价类测试。
JMeter入门,Http请求主要参数详解
Http请求
方法:发送HTTP请求的方法,可用方法包括
GET、PosT、HEAD、PUT、 OPTIONS
TRACE、 DELETE等。
路径:目标∪RL路径(URL中去掉服务器地址、端口及参数后剩余部分)Content encoding编码方式,默认为lsO-8859-1编码,这里配置为ut-8
安全性测试,主要指传输数据的安全性敏感数据(如密码、秘钥)等是否加密传输;
返回数据是否含有敏感数据,如用户密码、完整的用户银行账号信息等;
接口是否对传入的数据做安全校验,如身份1D加token类似校验;
接口是否防止恶意请求(如大量伪造请求接口致使服务器崩溃);
如何模拟弱网做测试?
答: Fiddler和 charles都可以模拟弱网测试,平常说的模拟丢包,也是模拟弱网测试。
按你的理解,软件接口是什么?
就是指程序中具体负责在不同模块之间传输或接受数据的并做处理的类或者函数。
如何分析一个bug是前端还是后端的?
先抓包看请求报文,对着接口文档,看请求报文有没问题,有问题就是前端发的数据不对
请求报文没问题,那就看返回报文,返回的数据不对,那就是后端开发的问题
没有接口文档,如果做接口测试?
答:用抓包工具把接口抓取处理,然后针对性进行测试;接口中字段信息不清楚的,找时间集中
寻求开发解答。(常用抓包工具 FiddlerCharles等)根据业务场景来说比较好,每个接口都对应着一个页面/一个场景,在这个场景里有哪些入参,每个入参又存在哪些场景,然后对这些场
景进行组合,再结合一下黑盒测试方法对每个入参再做针对性的检验。切记一定要涉及到数据库,cur操作都必须验证数据库,如果接口报错可以去服务器里分析下日志报错内容。
回给你一个接口,你怎么测?
首先搞清楚接口是做什么用的,给哪个功能调用的,在哪些场景下调用,有无性能要求,有无安
全性要求。调用接口需要哪些输入,会产生哪些输出,不同的输出会影响哪些功能,不同的输入又会产生哪些输出。
接口规范是怎样的。
把这些弄清楚,然后想好怎样设计用例去覆盖,下来就按所用测试工具去实现用例,进行测试。
并发测试怎么测?
可以用 jmeter或LR并发模拟多用户发送接口消息进行测试可以多客户端不同用户登陆,同时操作相同功能进行测试。
你平常会看日志吗,一般会出现哪些异常(Exception)?
常见的几种如下
NullPointerException-空指针引用异常
ClassCastException-类型强制转换异常
IllegalArgumentException传递非法参数异常
ArithmeticException-算术运算异常
ArrayStoreException-向数组中存放与声明
类型不兼容对象异常
IndexOutOfBoundsException-下标越界异常
NegativeArraySizeEXception-创建一个大小
为负数的数组错误异常
SQL注入是什么,该如何避免?
先说下什么是sql注入吧:打个比方你查询语句
select user where userID=1
如果你这个1是拼接的字符串,传的参数id而且d为 string。那么别人将你的参数D传的值为userid=1
那么你的语句就为:
select from user where userid =1 or 1=1
那么就能获取到你表所有的信息。这就是最简单的sql注入那怎么防治呢
1传入参数时验证这些关键字比如or这些关键字验证不通过
2参数化比如上面的这个id使用int类型那么就能没法拼接了
首先Sql注入场景:存在操作界面供用户操作,需要将用户的输入作为参数构建sq语句,继续
发送到数据库执行返回结果。其次Sql脚本的本质是字符串,基于用户输入参数构建Sq脚本的过程无非就是字符串拼接的过程眀确了这两点,就很好解释Sql注入了。如果用户输入参数非法,输入的是一段能够改变Sq语句固定逻辑的字符串改变Sq语句固定逻辑的理解:合法参数只是改变Sq语句中指定参数值,比如
select* from student where id=xxx*,用户输入正常参数“a”或“b”只是改变了sq语句中引号内部内容,但是如果我输入的是“aor1=1”呢?看下构建出的Sq语句
"select from student where id='a or 1=1
这种就已经明显改变设定好Sq语句逻辑的结构了所以姑且给Sq注入下个定义:用户输入参数非法导致原设定好的sq语句逻辑结构发生改变的行为。
避免Sql注入
1、输入数据校验,不允许输入非法参数。
2、参数化,基本上数据库操作函数均内置了校验逻辑,尽量使用参数化而非直接拼接Sql语句
发包部署流程
SQL中的DML、DDL的区别是什么?
DML数据管理语言即我们平时常用到的对数据进行增删改查操作的语句,如 insert、 delete、
update、 select等操作;
DDL数据定义语言即我们平时对数据结构定义的语句,如 create table、 drop table等操作。
数据库左连接和右连接有什么区别
数据库中的左连接和右连接的区别可以概括为一句话来表示即左连接whee只影响右表,右连接whee只影响到左表数据库中的左连接 left join)和右连接 right join)区别
左连接( Left Join)
select * from tbll Left Join tbl2 where tbll. ID= tb12.ID
左连接后的检索结果是显示tbl1的所有数据和tbl2中满足Where条件的数据。简言之 Left Join影响到的是右边的表
右连接( Right Join)
1 select from tbll Right Join tbl2 where tbl1. ID= tbl2.ID
检索结果是tb2的所有数据和tb1中满足 where条件的数据
简言之 Riaht Join影响到的是左边的表内连接( inner join)
1 select FROM tbll INNER J0IN tb12 ON tbl1. ID= tbl2.ID
它的功能和 select* from tbl1,tb12 where
tb11.id=tb12.id相同。
(1) inner join:理解为“有效连接”,两张表中都有的数才会显示 left join:理解为“有左显示”,比如on a field= b. field,则显示a表中存在的全部数据及a\\b中都有
的数据,A中有、B没有的数据以nu显示
(2) right join:理解为“有右显示”,比如on
a.field=b.field,则显示B表中存在的全部数据及a\\b中都有的数据,B中有、A没有的数据以null显示
(3) full join:理解为“全连接”,两张表中所有数据都显示,实际就是iner+( left-inner)+ (right-inner)
3、join可以分主次表外联接有三种类型:完全外联,左联,右联。完全外联包含两张表的所有记录,左联是以左边的表为主,右边的为辅,右联则相反
4、一般要使得数据库查询语句性能好点遵循以下原则
在做表与表的连接查询时,大表在前,小表在不使用表别名,通过字段前缀区分不同表中的字段查询条件中的限制条件要写在表连接条件前尽量使用索引的字段做为查询条件