分享

测试常见问题-总结

 桃花源士 2021-12-05

一:测试理论

说一下你们公司软件测试是怎么做的?

【口语版】

软件测试流程?

说一下你们公司项目如何运作?

简单介绍一下你的工作

【参考答案】:

·项目启动后,我们拿到需求规格说明书,产品人员对我们进行需求的澄清,

 然后对需求规格书进行细化和分解,得到我们测试需求分析思维导图;

·测试组长根据测试需求分析结果和项目计划估算项目的工作量和人力,来编写测试计划,我们参与评审;

·根据测试需求分析要点,按照测试组长分配的模块进行测试用例编写,编写完成后进行组内测试用例的评审;

·开发完成编码,我们会拿到一个安装包,然后就搭建测试环境,搭建完成后首先进行冒烟测试,

  冒烟测试通过后进行正式测试用例的执行,我们执行一般分三轮,第一轮执行测试用例,后两轮主要进行回归测试;

·等测试执行通过后,开发修改完bug,组长编写测试报告,项目准备上线

·上线我们参与做上线后的功能验证。

你如何保证测试的质量或者你如何判断是否达到上线的条件?

软件测试结束的条件:

【参考答案】:

每个公司,每个项目组 测试结束条件不一样,说一下我们公司的:

测试结束的条件

所有测试用例全部执行,版本稳定,缺陷遗留率达到预定质量目标

bug的生命周期有哪些?

新建→确认(驳回)→解决(驳回)→验证→关闭(激活)

测试用例包含几部分

参考答案

1)     测试用例版本号

2)     功能模块名称

3)     用例ID

4)     用例重要级别 (高,中,低)

5)     用例预置条件

6)     操作步骤

7)     预期结果

8)     测试用例执行结果

9)     测试用例执行日期

一个Bug(缺陷)的描述包含哪几部分?

你觉得提交bug需要包含哪些因素才算完整?

参考答案:

1)     Bug所属产品

2)     Bug 所属功能模块

3)     Bug 影响的版本号

4)     Bug 级别 (提示 ,一般,严重,致命)

5)     Bug 类型   

(代码错误,设计优化,设计缺陷,性能问题,测试脚本)

6)     Bug 标题

7)     重现步骤

8)     预期结果

9)     实际结果

10)   附件 (后台日志debug.log 或者 截图)  

Bug的级别

参考答案

每个公司定义的bug 级别标准都不一样,我们公司把bug 分为 提示,一般,严重,致命四类

测试用例的优先级

参考答案

每个公司定义的标准不一样,我们公司一般分为 高 中 低

基本功能  新特性

测试用例执行结果

参考答案

每个公司用的缺陷管理工具不尽相同,一般测试用例执行结果有:

1)     通过 Pass

2)     失败 Failed

3)     挂起 hang up

4)     阻碍 Block

测试用例的设计一般采用哪些方法?或者 换一个提问方式,黑盒测试技术设计测试方法有哪些?

参考答案

一般常用的测试用例设计方法有等价类,边界值分析方法,因果图法,场景法,错误推测法

最容易发现错误的是—— 边界值

最常用的是 ——  场景法 

测试计划你觉得有哪几部分比较重要?

【参考答案】

工作量的估算  测试范围  测试环境(软硬件)  启动条件和结束条件  测试类型 进度的安排  风险的评估  文档的阅读者  人员和职责  背景  目的  缩略语

工作量如何估算的?

Sdfsdfasd

测试报告哪几部分比较重要?

你写过测试报告吗?如何写?

【参考答案】

背景  测试地点  测试版本  测试环境  测试人员  测试时间   测试范围  测试目的 用例执行统计  bug统计(模块 严重 每轮  原因  解决率) 风险 遗留bug 

                     工作量统计   测试执行纪录 模块分析 结论  附件

系统测试的测试策略有哪些?/系统测试范围?

你门公司的测试类型有哪些?

参考答案:7-8 种

16种测试策略功能测试,性能测试,压力测试,容量测试,安全性测试,GUI测试可用性测试,安装测试,配置测试,异常测试,备份测试,健壮性测试文档测试,在线帮助测试,网络测试,稳定性测试在:正常情况下测试;

测试类型

功能测试,界面测试,安全测试,本地化/国际化测试,数据库测试,可靠性测试,集成测试,兼容性测试,自动化测试,性能测试,回归测试

什么是兼容性测试、

你们公司兼容性测试怎么做的?

答:兼容性测试(Compatibility Test Suite )简称CTS .是指测试软件在特定的硬件平台上、不同的应用软件之间、不同的操纵系统平台上、不同的网络等环境中是否能够很友好的运行的测试。

Web 浏览器兼容性测试需要测试场景有:

IE 6,IE 7,IE 8 火狐,chrome 浏览器 哪个版本

搜狗和360 浏览器 不用再次进行测试因为用的是 IE chrome 双内核

移动端 兼容性测试需要测试的场景有:

l  不同厂商系统测试

l  不同分辨率测试

l  不同系统版本测试

l  不同屏幕尺寸测试

备注:主流分辨率:1920*1080 普通机型  2560*1440 高端机型

      主流手机尺寸:5寸 5.5寸,6寸

      主流安卓系统:系统:5.0.5.1,6.0,6.1,7.0

什么是冒烟测试

冒烟测试,是对软件基本的功能进行测试

目的是确认软件基本的功能正常,保证软件系统能跑的起来可以进行后续的正式测试工作

什么是回归测试

回归测试是指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。

(引入自动化回归测试将大幅降低系统测试、维护升级等阶段的成本)。

作为测试的话,你的优势在哪里?

一名测试人员所具备的素质?其中有哪些是您认为最重要的

参考答案

我觉得最为测试人员,承担的是找出软件存在的问题,确保软件产品在发布之前达到一定的质量目标的职责,因此,他首先必须有很强的责任感,对软件质量负责,对客户的质量期望负责。拥有交强责任感的测试人员,才不会出现大面积的漏测,才能坚持重复地进行回归测试,持续全面的测试。

其他的素质也很重要,例如较强的沟通能力,刨根问底,不轻易放弃的精神等。

你们公司项目的工作量,人力 怎么估算的。

【参考答案】

我们公司 一般是按照 测试点对比 项目计划去规划的

测试点 分三个难易程度

难得测试点,根据经验我们预估是 4小时左右,中等程度测试点 为2小时,低的预估1小时。

难易程度  :业务流程复杂,测试场景难构造的

还有就是云测试你了解多少

1、SIT、UAT测试都有做过吗?怎么做的?

2、回归测试怎么回归的?涉及到用自动化回归的,也会问到自动化回归的一些问题,怎么回归?策略、下发周期等

6、假如你是测试经理,你要怎么展开测试的工作?在这个过程中有哪些需要关注的点?

7、云测平台有了解吗?云测平台和用真机测试各自的优缺点?

10、那些因素会影响产品的质量?

二:Linux
你们公司Linux用的哪个版本?

【参考答案】

CentOS7

Linux常用命令 (先说高大上命令)

【参考答案】

命令                 解释

useradd 用户名     新建用户

passwd 用户名      给用户设置密码

groupadd 组名      新建用户组

df -h       查看磁盘使用情况 

free -m    查看内存使用率    没讲

rpm -ivh 软件包名字   离线安装软件包

yum install 软件包名字       在线安装软件包 没讲

rpm -qa |grep 软件包名字    查看软件包是否被安装  没讲5

yum remove  软件包名字   卸载安装包  没讲

rpm -e   软件包名字   卸载安-装包 

netstat -an |grep 端口号       查看端口号  没讲

ps -ef     查看当前系统内所有进程       没讲

ps -ef |grep 进程名       查看某一个进程

top   查看系统资源    没讲

du -sh     查看文件或者目录的大小 没讲

ls |wc -l        统计在当前目录下有多少目录和文件  没讲

service iptables stop       关闭防火墙  没讲

lsnrctl status    查看oracle 监听状态

chkconfig –list |grep httpd  查看 aparch 服务是否开启

tar -czvf 文件名.tar.gz  要压缩的文件(可以是多个)  压缩文件

tar -xzvf  文件名.tar.gz       解压缩文件

gzip  要压缩的文件名 压缩文件   没讲

gzip -d 文件名.gz  解压缩文件

zip -r 文件名.zip  要压缩的文件(可以是多个)   压缩文件

unzip 文件名.zip   解压缩文件

chmod     修改文件或目录的权限

chown     修改拥有者和拥有组的权限

ifconfig   查看ip 地址

service network restart   重启网卡 没讲

cat,more,less,head,tail    查看文件

touch      新建文件

echo >>   /  >     追加 /  覆盖文件

cp         复制文件

mv   同一目录下是 重命名;

不同目录下是 剪切

rm -rf 要删除的文件或者目录    删除文件或者目录

pwd 显示当前目录的绝对路径

mkdir -p        创建联级目录

cd    切换目录

cd..  切换到上一级目录

cd ~ 切换到家目录

ls -a 显示当前目录下的所有文件和目录

修改配置文件,或者 分析日志时候常用的命令

dd    删除某一行

yy    复制某一行

u     撤销

p     粘贴

G     回到文件内容最后一行的行首

gg    跳转到文件内容第一行的行首

/      搜索某一个字符

wq   保存退出

:1,$s/要查找的内容/要替换的内容/g       全文查找替换

Linux下如何搭建测试环境? 细

【参考答案】

每个系统(项目)由于开发语言不同,服务器类型不同,服务器操作系统不同,使用数据库不同,搭建测试环境的方法不尽相同;

我在测试工作中搭建过 LAMP 模型测试环境;

根据开发人员给的《安装指导文档》启动测试环境的搭建;

搭建的顺序是 :先搭建平台包(apache,mysql,php),在搭建 业务包

首先 使用FTP 工具(xftp) 把从开发那边获取的平台包,业务包上传的linux 下指定目录里面

解压平台包,使用 rpm -ivh 命令依次安装 apache,mysql,php 安装的顺序,严格按照安装指导文档的要求来搭建

由于APACHE默认不支持PHP,需要修改配置文件才能支持,需要在配置文件 httpd.conf 下设置依赖关系

平台包是否搭建成功,我们可以重启对应的服务器来判断,比如 我想知道我的mysql 装的是否正确,那么我就启动一下mysql 只要不报错就证明安装成功(sevice mysqld start);

平台包搭建完毕后,启动搭建 业务包

首先解压 业务包到指定目录  /var/www/html 

赋予 业务包 755权限

设置开启启动项 使用的命令是 ntsysv→取消勾选iptables,勾选mysqld,httpd

打开浏览器 http://linuxIP/业务包名字  按操作进行图形化安装

LAMP 环境的搭建基本这样子

Linux 下搭建测试环境有没有遇到什么问题,如何解决的?

【参考答案】

问题1

在安装指导里面,解压安装包之后,给安装脚本赋予权限不足,导致安装脚本执行报错;

(优先)

问题2

安装指导参数说明,上下位置调换了,导致参数错误。

问题3:--防火墙 --

测试环境下,防火墙没有关闭,导致环境搭建完毕后,去访问ecshop ,访问失败;

问题4  --文档-- 2.3.7      2.3.6

开发人员通宵归档,上传到SVN 上的对应版本 安装指导文档版本不匹配,导致我在搭建测试环境时候,无法进行操作。

问题5   --配置文件路径开发给错

--修改apache 和 php 依赖关系时候,安装指导文档上给出的配置文件路径 错误 /etc/httpd/httpd.conf   实际 /etc/httpd/conf/httpd.conf,导致 依赖关系无法设置

Linux 如何截取日志?

【参考答案】

使用命令:tail -f  ***.log

截取日志详细步骤:

1. tail -f 日志名.log

2. 去前台业务进行操作,后台生成日志

3.中断日志:  ctrl+c

截取完日志如何分析?

根据关键字定位, 查看上下文

/error    错误

/exception  异常

/resultcode  结果码

如果系统运行运行着 突然崩溃了,此时你们处理?

【参考答案】

这种情况造成突然间系统崩溃的原因很多,我们还是从 查看后台日志,分析后台日志,来开启定位问题。

Linux下如何备份环境?

【参考答案】

使用tar 命令在家目录下把这个目录备份

--数据备份--(oracle 在Linux部署的话) 使用 imp(导入)  exp(导出) 命令 导入或者导出数据。

内存数据库库

mdbackup –b

--数据备份---mysql

mysqldump -uroot -p xiaohuan > xiao.db  

------------------------------

例子:

导入

imp 用户名/密码@实例名??file=d:\daochu.dmp?

导出  用户名/密码@实例

exp?scott/orcl123@orcl?file=d:\daochu.dmp?full=y?

exp  用户名/密码@实例   file=d:\dababase_20170930.dmp full=y

Linux 是服务器上用操作系统,那么你们公司服务器的规格是啥?

40万左右的服务器 

CPU 8核,千兆光钎,双网卡,500g硬盘,内存 32G 

linux操作系统,哪个目录最耗内存,动态查看日志命令

三:mysql

增删改查

【参考答案】

:insert into 表名 values ('列值1’,’列值2’… … '列值n’);

:delete from 表名 where [筛选条件];

:update 表名 set 列名='新列值’ where [筛选条件];

:写出查询的骨架 加分

select * from 表名 where [筛选条件] group by  [列名] having [分组后的筛选] order by [列名] ASC 升序|DESC 降序;

取出一张表第  3,5行

考点:分页查询

Oracle:

select * from (select  rownum r, 表名.* from 表名) tmp r>=3 and r<=5;

mysql:

SELECT * FROM ecs_users LIMIT 2,3;

Mysql 基本命令

1)     进入mysql  

mysql -uroot -p

2)     查看当前所有数据库

3)     切换到具体某一个数据库

4)     查看某数据库下 具体有那些表

5)     查看具体某一张表具体信息

6)     启动/关闭 mysql

service mysqld start/stop

delete/ truncate /drop 区别以及优缺点

delete

truncate

drop

delete方式可以恢复删除的数据,但是提交了,就没办法了

delete删除的时候,会记录日志 ,删除会很慢很慢

删除所有数据 ,不会影响表结构,不会记录日志,数据不能恢复 , 删除很快

删除所有数据,包括表结构一并删除,不会记录日志,数据不能恢复,删除很快

查询取出重复的数据

select  distinct  列 from 表名

oracle字符,数字,日期 转化成时间的格式

to_char() 强制转换成字符型

to_date() 强制转换成日期型

to_number() 强制转换成数字型

描述一下对mysql oracle 区别

·MySQL 属于小型数据库,oracle 中型数据库

·mysql 开源,oracle 不开源

·mysql 端口号 3306 ,oracle 1521

·连接工具 MySQL :sqlyog,navicate ,oracle  PL/SQL

·提交数据的时候,mysql  flush privileges, oracle  用的是 commit

·分页查询的时候,MySQL 用 limit ,oracle 用的是 rownum

你用过那些哪些oracle 函数 如:

avg()

sum()

count()

max()

min()

length()

upper()

lower()

to_char()

to_date()

to_number()

什么是左连接

已左表为基准表,右表显示与左表有交集的数据

什么是内连接

内连接,也被称为自然连接,等值链接,只有两个表相匹配的行才能在结果集中出现。返回的结果集选取了表中有交集的数据

什么是索引

索引是创建在表上的表,是对数据库表中一列或者多列的值进行排序的一种结构。索引可以提高查询的速度; 优点:查找速度快  缺点:存储索引占用磁盘空间

什么是存储过程

存储过程是在数据库中定义一些SQL语句的集合,然后直接调用这些存储过程来执行已经定义好的SQL语句。存储过程可以避免开发人员重复的编写相同的SQL语句。

例如:

银行经常需要计算用户的利息了不同类别的用户的利率是不一样的聊着就可以将计算利率的SQL代码写成一个存储过程。

什么是视图

视图是是从一个或者多个表中导出来的表,是一种虚拟存在的表。

习题1:

成绩表tb(字段有:姓名、课程、成绩)

1.         用一行语句,查询所有课程平均成绩大于80分的学生姓名;

【参考答案】

select name from (select avg(degree),name from tb group by name having avg(degree)>80) a;

2.         用一行语句,查询所有课程都大于80分的学生姓名

【参考答案】

select name from tb where name not in (select name from tb where degree <=80);

习题 2

【参考答案】

select name, 

max(case when s.class='语文' then s.grade end) as 语文

max(case when s.class='数学' then s.grade end) as 数学

max(case when s.class='英语' then s.grade end) as 英语 

 from students s group by name  这个亲测可行

mysql中replace into的用法

为什么要建立唯一索引

四:python

请用你所知道的语言编写冒泡算法?

list1=[2,4,7,10,3,5,1,2,3,6,8,9]

for i in range(len(list1)-1):

       for j in range(len(list1)-i-1):

              if list1[j]>list1[j+1]:

                     list1[j],list1[j+1]=list1[j+1],list1[j]

print(list1)

Python你用到了哪些模块?这些模块的主要解决了那些问题?

OS          文件和目录的操作(增、删、改、查)

random    生成随机数

time      获取当前时间戳、设置等待时间

Selenium  自动化框架

Unitest   单元测试框架(测试用例组织和执行)

Requests  模拟请求get和post

urllib    模拟http请求hashlib   提供加密算法MD5

json      数据转化和解析

ddt       数据驱动

xlwt      对excel表格进行操作pymysql/pyoracle   连接数据库

Python的标准的数据类型有哪些?

Int(整数)、String(字符串)、Float(浮点数)、Booleans(布尔值)、复数等其他类型

Python常用的断言方式有哪些?

断言我们一般在Unittest单元测试框架中使用,常用的有assertIn(模糊匹配)和assertEqual(完全匹配)

在python中主要有三大类:

assert类:断言通过才执行下面的代码,失败则停止;

waitfor类:等待断言的元素出现,可以设置等待时间;

verify类:断言失败时会抛出错误异常,但不会影响代码的执行。

五:自动化测试

说一下你们公司自动化测试流程

自动化测试实现的原理

在项目成型基本稳定,不会出现大规模的需求变动之后,就可以考虑自动化的启动;

首先要考虑的就是自动化工具的选择,像常用的自动化工具就有QTP、selenium IDE、RobotFramework等,但是这样的工具使用起来不够灵活,一般为了与项目贴合,最好自己写一套框架,

像之前我们公司用的框架就是结合了Python+selenium和Python的unittest;

然后在手工用例转化自动化用例之前,我们需要进行评审和决策,将能实现自动化或难度低的模块、用例优先进行自动化,不能实现自动化的用例给出具体原因,在回归时指派手工覆盖,防止漏测;

自动化用例我们要有一定的规范和要求,便于脚本的调用和后期的维护,比如一个功能的用例写在一个目录下,每一条用例写一个脚本,命名要统一格式;

我们用python的unittest框架加载测试用例,用HTMLTestRunner运行测试套并生成测试报告,报告出来后我们要第一时间去分析测试结果,对失败的用例要详细定位失败的原因,到底是脚本错误呢还是这就是bug?再进行处理,修改用例或者就是提交bug问题单;

自动化用例执行全部完成后,对测试结果进行汇总并给出测试结论。

我们公司自动化的流程大概就是这个样子!!

介绍下你们公司的自动化测试框架?

我们公司的自动化框架基于python+Selenium,我们会有一个测试用例目录用于存放测试用例;一个公共的第三方lib库,因为我们实现自动化的过程中会有很多经常用到的方法,做成公共模块放在lib库里面,可以提高代码的复用率,便于代码的维护;还会有一个data数据目录,存放自动化测试中的数据,在进行数据驱动时,数据与代码分离,便于自动化用例数据的准备和脚本的维护;还会有一个执行和报告目录,执行的策略和报告的生成在这个目录下进行,可以调整自动化测试中的下发策略,查看运行的结果。

你们用的测试框架是自己写的吗?

我们用的是Python自带的单元测试框架unittest

定位元素的方法有哪些?

八大定位元素:

属性定位:id、name、clas_sname

路径定位:xpath 、css_selector

链接定位:partial_link_text、link_text

标签定位:tag_name

如果有个元素总是定位不到,怎么办?

你在做自动化测试过程中遇到的最大的困难是什么?如何解决的?

一般出现这种问题的话要先分析脚本中的代码是否与html源文件中元素的属性值一致,经常会因为空格、特殊字符、编码格式等问题导致脚本中代码与html源文件不一致;再查看HTML源文件中是否使用了frame,如果有了则需要特殊处理(使用switch_to_frame跳到frame再定位元素);如果都不是以上的情况,则要检查浏览器的配置,是不是拦截了一部分功能,导致需要定位的html页面的元素不能正常加载;还有一种情况是系统使用的协议不是标准的http协议,而是用了自定义的协议,那就没办法了。

你们公司自动化测试的流程是什么样的?

我们的项目是比较稳定的项目,做了好久了,现在主要是运维修改一些BUG和做一些新需求,所以我们公司的自动化测试是用于本次新版本上线前做回归测试用的。脚本是前两年就已经做好了的,每次新版本上线前一周会花两三天的时间进行脚本更新与维护,脚本调试通过再使用测试框架执行测试,测试完成会生成报告,我们再对测试结果进行分析,如果发现了BUG,进行BUG的跟进,关于BUG的跟进就跟手工测试试试跟进BUG是一样的了。

定位一组元素和定位单个元素有什么区别?

定位单个元素返回的是一个元素对象,可以直接进行操作;而定位多个元素返回的是一个元素对象列表,需要做二次定位后才可以进行操作,如下拉框中的元素,需先定位到下拉框,再用Select方法进行二次定位

你们公司自动化用例大概多少条?会对那些进行自动化测试?

占总系统测试用例的30%-50%左右,根据自己总用例数来估算吧!一般跳窗口,调第三方接口以及一些业务场景比较复杂的用例不适合实现自动化。

介绍一下Selenium的原理(webdriver的原理)?

【参考答案1】

以firefox为例,当测试脚本启动firefox的时候,selenium-webdriver 会首先在新线程中启动firefox浏览器,启动后selenium-webdriver会将firefox绑定到特定的端口,绑定完成后该firefox就相当于webdriver的remote server存在;客户端(也就是测试脚本)创建1个session,在该session中向remote server发送http请求(实际是restful,但不明白的话,直接说http就好了),remote server解析请求,完成相应操作并返回response;客户端接受response,并分析其返回值来决定是接着执行下面的代码,还是停止操作。简单的说webdriver就是在自动化脚本与浏览器之间建立一种沟通(交互),脚本中的代码以请求的形式发给浏览器,浏览器执行后返回结果。

Selenium的工作原理?

【参考答案2】

对html元素定位

模拟对第一步定位到的元素进行点击、输入、选择等操作

元素的定位用的是什么方法?

定位元素有三种方式:通过属性定位、通过xpath定位、通过css定位

常用的方法有:

find_element_by_id()\find_element_by_xpath\find_element_by_css_selector()等等

你觉得Selenium的缺陷是什么?

首先Selenium是一种自动化测试框架,它就存在自动化测试的缺陷:不稳定、可靠性、不易维护、成本与收益;而且它只支持B/S架构的自动化。

那Selenium的优点?

开源、轻量级、支持多种语言、提供的SeleniumIDE工具录制脚本易于上手,支持多种浏览器,可以很好的测试兼容性。

如何去定位属性动态变化的元素?

- xpath或者css通过同级、父级、子级进行定位

selenium中如何保证操作元素的成功率?

- 添加元素等待时间time。sleep(5)/driver.implicitly_wait(30)

- try 方式进行 id,name,clas,xpath, css selector 不同方式进行定位,如果第一种失败可以自动尝试第二种

如何提高selenium脚本的执行速度?

1、减少操作步骤,如经过三四步才能打开我们要测试的页面的话,我们可以直接通过网址来打开,减少不必要的操作

2、中断页面加载,如果页面加载的内容过多,而加载的内容不影响我们测试,就设置超时时间,中断页面加载

3、在设置等待时间的时候,可以sleep固定的时间,也可以检测某个元素出现后中断等待也可以提高速度(可以用try + isElementPresent,或者try + find_element_by)

4、多线程执行脚本,在编写测试用例的时候,要尽量实现松耦合,然后在服务器允许的情况下,设置多线程运行,提高执行速度(remote起多节点做分布式,需要先设置hub和node,threading做多线程)

怎么提高脚本执行的稳定性?

- 设置等待时间:time.sleep( )、driver.implicitly_wait(30)

- 多用 try 捕捉,处理异常

- 多线程的时候,用例之间相互影响,所以设计用例的时候,尽量降低用例的耦合度;

- 多线程的时候,如果用例执行的先后数序有要求,那么在用例命名的时候要加0-9或a-z排序,因为用例的执行顺序是按照ASCII码表排列的(数字--》大写字母--》小写字母)

自动化测试的时候需要连接数据库做数据校验?

- UI自动化不需要

- 接口测试会需要(修改了数据库中的数据就需要,也就是对数据库中的数据进行了增、删、改)

注:连接数据库需要导入pymysql、pyoracle模块

是否做过自动化测试

做过

使用什么工具进行的自动化测试

使用的工具是Selenium

用的什么编程语言

用的Python

Selenium用的是哪个版本的的?Python用的是哪个版本的?

用的是selenium 2.53.2和Python2.7.10

你有自动化测试脚本吗?

有写,因为一方面我们的系统每个版本都会有新功能上线,等这些新功能运行三四个月基本稳定后,这些功能会就会加入到自动化测试的范围内,所以我们几乎每个版本都会有新自动化脚本要写。另一方面,原有的功能总会有一些新的调整,所以每个版本都需要对原有的自动化脚本进行更新与维护。

我们一般是先使用selenium IDE进行录制后生成脚本,再对工具自动生成的脚本进行修改、优化。

Selenium IDE是常用的命令有哪些?

Open、type、close、click、clickAndWait、select、verify、assert

Python常用的模块、函数有哪些

模块:os、time、system、unittest

函数:time.sleep()、assertIn、assertequal等等(回忆下课堂都用了什么方法)

你所测试的核心模块是怎么用自动化实现的,对于验证码的情况如何处理

自动化实现原理 把自动化测试流程说了,对于验证码,验证码,我们用的是万能验证码,开发后台代码写死的。

六:性能测试

你们公司的性能测试是如何开展的?

介绍下你们公司的性能测试流程?

你们公司性能测试通过的标准 (答案:第6条)

1.首先明确哪些功能需要性能测试,我们测试 注册,登录,投保,充值,提现,添加购物车(结合自己项目里面的性能部分去展开说)

2.基本功能稳定后,我们使用LR工具进行性能测试,录制脚本;

3.录制脚本后,会做脚本增强,包括插入事务,检查点,参数化,设置集合点;

4.脚本录制完成后,我么会在controller模块加载脚本,设置运行模式,设置并发用户数,添加负载机,设置RTS,设置集合点策略;

5.运行脚本,运行结束后,对性能测试结果分析;

6脚本没有error,事务通过率100%,CPU,内存,资源小于80%,响应时间小于5s,性能测试通过;

7如果性能测试没有通过,让开发优化后继续测试,我们性能测试并发是在 100-300 之间

以上就是我们公司性能测试流程

在性能脚本开发中主要做了哪些事情?

1、选择协议,录制脚本(一般多用于web架构的,选择http协议,基于url);

2、简介和注释,增强脚本的可读性;

3、事务(一般在录制的时候插入事务,注意事务的完整性);

4、检查点(现在多用文本检查,函数为lr_web_reg_find());

5、关联(了解什么时候需要做关联,手动关联与自动关联的区别,需要关联的典型场景:登录的session动态变化,订票的订单号、交易流水号、账户的余额也是动态变化的);

6、参数化(两种参数文件属性:file、date/time,date/time类型的参数要注意时间的有效性,比如订票只能定当前时间以后的票,查询订单只能查询当前时间以前的订单;file类型的参数要注意参数的选择策略:顺序、随机和唯一,更新策略:每次迭代、每次出现、一直是,参数迭代超出时处理(只在参数做唯一选择时需要设置):停止迭代、参数循环迭代、参数以最后一个值迭代);

7、运行时设置(这里指的是脚本调试时的RTS,要与场景设置时的RTS区分开,关键是区别日志类型和迭代次数);

8.集合点(注意设置集合点的位置,在一个事务结束之后,下一个事务开始之前,要了解场景设置中集合点的三种策略:占总虚拟用户数的百分比、占运行总用户数的百分比、达到多少用户数时);

9、错误处理(一般对文本检查的结果进行处理,文本检查中会加一个计数,通过计数来做事务成功或失败的判断);

10、回放验证;

性能测试中主要的指标有哪些?

系统指标:内存(70%以下)、CPU(70%以下)、网卡使用率、磁盘I/O速度

业务指标:TPS、吞吐量(业务不同,并发用户数不同,吞吐量会有很大的差异,所以单看吞吐量没有太大的意义,常用于配置调优时进行对比分析)、响应时间(3s,5s,10s)、事务成功率

你觉得可能存在性能瓶颈的地方有哪些?

三个维度:

1.配置,web服务器作为前端与后台服务器交互的中轴,在整个系统运行中起着重要作用,它的最大进程数和活动进程数要合理配置,不能太多,也不能太少,太多则对服务器产生过大压力,太少则浪费资源;中间件的调优,如mysql数据库配置的调优,配置数据库连接池(与web服务器配置调优类似);

2.后台服务器代码调优:有逻辑上的算法调优和SQL语句调优;

3.提高服务器硬件配置(如CPU、内存等)或服务器数量:服务器集群和负载均衡。

如何判定cpu存在性能瓶颈?

通过交叉结果来对比分析,也就是同样的并发场景,只改变系统配置中的CPU,对两次性能监控的指标进行对比分析,如果提高CPU配置后,cpu占比和系统的性能表现得到提高,那么可以判断cpu存在瓶颈(不一定是唯一的瓶颈,只能说是瓶颈之一,系统的性能是由多个因素共同决定的,要注意的是,性能的优化不一定只是代码上的优化,还可以是硬件上的优化,具体怎么做,还要分析成本与收益,毕竟代码的优化是有极限的)。

如果注册这个业务响应时间过长,你能想象到优化的方案有哪些?

从前端来说:可以减少请求的次数,请求的次数越多,自然响应时间就越长;对传输的比较大的数据进行压缩处理;

从服务端来说:sql语句的调优,一个插入动作,可能插入的不仅仅是一张表,而是对多张有关联的表进行操作,那么可以从代码层面对sql语句进行优化;

从业务来说:对应请求的响应数据过大时,可以对响应数据进行分割,先响应一部分数据,如淘宝查询操作,每次只响应10条数据。

你们公司性能测试用的是什么工具?

LoadRunner

LoadRunner的工作原理?

自动监控制定的URL或应用程序所发出的请求及服务器返回的响应。它作为一个第三方监视客户端与服务器的所有对话,然后把这些对话记录下来。生成脚本。再次运行时模拟成千上万的虚拟用户发出的请求,捕获服务器端的响应并监控性能指标数据。通过对性能指标数据的统计与分析输出报告。

性能测试的工作内容?

录制脚本,脚本调试与优化、设置场景,执行场景,分析结果

脚本调试与优化包括:参数数、关联、检查点、集合点、思考时间、测试数据准备

做性能测试时候,有自己写过脚本吗?

写过,我们测的一般功能都比较简单,比如新增数据、搜索、导入导出这些功能

导出、下载功能需要写脚本,使用C语言。首先使用关联函数将服务器返回的数据获取并保存,使用C语言中的fopen函数把数据保存到本地。

做的最多的是新增数据(需要关联,关联内容一般有时间、ID)、搜索(参数化、参数取值方式随机并且运行时需要设置清空缓存run-time settings)的脚本。

LoadRunner脚本的语言?

使用C语言

性能测试分析结果是怎么做的?

我只做一个表象的分析,对比实际测试的性能指标数据与预期指标是否相符、观察测试结果中的图像是否稳定。

其他的交由开发人员处理,把报错的信息发到开发人员处,后续分析以及调优由开发人员处理

你做过性能测试,你有没有遇到什么问题?怎么处理的?

1.我有测出过一个死锁,后来加了一个超时的设置,就可以处理这个问题了。

2. 测搜索功能的时候响应时间非常慢?怎么处理?

数据库加索引,这个是开发人员去处理的

性能测试中,并发用户数怎么估算?

第一,先获取业务数据

有两种情况  一种是新系统,需要产品人员去调研业务量,业务的峰值,

            业务集中在什么时间段啊,业务发展的趋势,

                     或者参考竞争对手类似软件业务量

                     还有一种是运维的系统,需要开发人员从数据库当中整理出真实的用户数据

                     整理业务量,峰值,时间段,趋势。

第二,得到这些数据后,在用8020原则计算系统当前业务强度(TPS、点击率等等)

第三,由产品部门或从数据库调研得出业务增长趋势(比如估算未来三年业务增长为现在的1.5倍),计算出本次测试的系统业务强度

第四,用目标场景估算并发用户数

你们公司的性能测试用多少用户并发?

建议为200~300并发用户

看项目:

OA系统或者企业内部用的系统,一般是50~200并发用户数

淘宝双11一般是百万级别的并发用户数

APP(饿了么) 并发一般用几万

性能测试工作都干啥(初级测试):

负责某某功能的性能测,主要工作内容有 :性能测试需求的分析,脚本的录制优化与调试                                       场景的设置与执行,测试结果分析,并协助开人员优化系统,性能测试报告。

写脚本的过程当中经常用的函数有哪些?

LR函数

检查点函数:web_reg_find

事务开始/结束函数:lr_start_transaction() / lr_end_transaction()

关联函数:web_reg_save_param()

集合点函数:lr_rendezvous()

思考时间函数:lr_think_tine()

请求函数:web_url()/web_submit_data()

输出函数:lr_output_message()

获取参数值:lr_eval_string()

C函数

字符串处理函数:strcmp/strcpy/strcat/strlen

文件打开/关闭函数:fopen/fclose

格式转换函数:atoi/itoa

性能测试中监控服务器资源实现的原理

LR 主要利用系统的服务和协议来监控,比如说RPC和tcp udp等

Jmeter 是通过调用特定系统服务手机服务器数据,在通过本身的代理和特定的协议,端口发送数据出去

性能测试时候使用什么工具检测服务器性能指标

Jmeter 用的是一个插件教 server agent ,原理是通过调用特定系统服务手机服务器数据,在通过本身的代理和特定的协议,端口发送数据出去

七:接口测试

说一下你们公司接口测试是怎么做的?

接口测试流程

【参考答案】

其实接口测试流程和功能测试流程差不多,首先熟悉业务流程,熟悉接口需求,然后根据开发提供的接口测试文档,编写并评审接口测试用例,开发人员接口开发完毕,提测后我们执行接口测试用例,发现问题提交bug问题单,回归接口测试问题单,整理接口测试报告。

我们公司接口测试流程大体就是这样

说一下你们公司接口测试都测啥?

如何进行接口测试用例设计?

【参考答案】

我们公司接口测试目前没有自动化起来,主要还是手工测试,测试重点主要围绕着,接口的 通过性验证,参数组合验证,接口安全,接口异常验证 以及结合 接口本身业务逻辑来,展开接口测试的:

通过性验证:严格按照接口文档里面的规定传参数以及参数类型进行传参,也就是正常场景,先保证接口流程是通的,接口是好使的;

参数组合验证:多个参数的时候,有些参数是必选项,有些是非必选项,这部分我们主要对参数必选项,非必选项组合场景验证;

接口安全

1.         绕过验证:

比如说购买了一个商品,它的价格是300元,那我在提交订单时候,我把这个商品的价格改成-3元【通过抓包工具篡改金额】,验证后端有没有对金额有效性做验证。

2.         绕过身份授权:

比如充值场景,我们要向合作银行传递 客户ID ,已经用户ID ,我们把客户ID 改成不存在的客户ID,或者其他网贷平台客户ID ,看后端是否错了判断处理;

3.         参数是否加密   

比如说我登陆的接口,用户名和密码是不是加密,如果不加密的话,别人拦截到你的请求,就能获取到你的信息了,加密规则是否容易破解

4.         密码安全规则

密码的复杂程度校验  字母+数字   区分大小写

异常测试

也就是我不按照你接口文档上的要求输入参数,来验证接口对异常情况的校验    

age 年龄为 int 我传递 string 类型  Aa567

最后接口测试还会考虑

根据你自己的业务逻辑来进行,接口测试

这部分会跟功能测试用例重复,但是通过接口测试可以发现很多在页面上操作发现不了的bug

例如:

充值

你们主要测试哪些接口?基于什么协议,返回报文格式是什么样的?

【参考答案】

http-api  接口 基于 http 协议 返回报文 json格式

webservice 接口 基于 soap 协议 返回报文 xml 格式

你们公司接口测试只测与第三方的外部接口吗?是否系统内部接口是否测试?

【参考答案】

接口分为程序内部接口,和程序外部接口,程序内部接口指的是:方法与方法之间,模块与模块之间的交互,程序内部抛出的接口 ,例如  未登录状态浏览论坛,点击 '发帖子’,弹出 登录对话框,登录,发帖子两个模块,你要发帖子,就一定要先登录,那么这两个模块之间就要有交互,就会抛出一个接口,供内部系统调用

程序外部接口,主要是系统与第三方的接口常见的 是支付接口 与银行对接等;

我们公司 系统内部接口和外部接口都要测试

简述soapUI 的操作步骤

【参考答案】

1.打开SOAPUI 新建一个 SOAPproject

2.导入wsdl文件

3.根据接口文档 ,配置 要测试接口对应 webservice请求消息报文

什么是WSDL

【参考答案】

wsdl :webservice discription  language    :webservice 接口描述语言

你用过哪些接口测试工具

【参考答案】

Postman,Jmeter,SoapUI

开发给的接口文档,包括哪几部分

【参考答案】

接口规范文档,也是我们测试最重要的一个依据

接口文档至少包括:

1、接口说明

2、调用url

3、请求方法(get\post)

4、请求参数、参数类型、请求参数说明

5、返回参数说明

八:APP测试

说一下你们公司APP 怎么测的?

这是我们公司研发的APP ,你怎么展开测试?

【参考答案】

APP 测试我们主要围绕这 安装卸载,功能测试,运行,登录,离线,消息推送,软件更新,异常测试,网络环境,兼容性,客户端性能 几个纬度展开测试,实际工作当中,我们对APP 测试主要聚焦点在 功能测试和兼容性测试

首先站在APP 的 安装卸载角度,考虑的测试点主要有:

1.         app是否可以在android不同系统版本上安装; 安卓:7.0, 6.0 ,5.0

2.         安装空间不足时是否有相应提示

3.         通过第三方软件 是否能够安装(360,91助手,豌豆荚)

4.         卸载:可通过手机桌面卸载,

5.         卸载:通过第三方软件卸载。(360,91助手,豌豆荚)

站在功能测试的角度,考虑的测试点:

1.         结合自己项目里的APP 功能简单说几个业务 ;

站在兼容性测试(适配测试)的角度,考虑的测试点主要有:

1.         不同厂商系统测试

2.         不同分辨率测试

3.         不同系统版本测试

4.         不同屏幕尺寸测试

备注:主流分辨率:1920*1080 普通机型  2560*1440 高端机型

          主流手机尺寸:5 5.5寸,6

          主流安卓系统:系统:5.0.5.1,6.06.17.0

站在APP 运行的角度,考虑测试点主要有:

1.         APP安装完成后,是否可以正常打开软件

2.         APP的速度是可以让人接受,切换是否流畅

站在APP 登录的角度,考虑测试点主要有:

1.         登录用户名和密码错误时,界面有提示信息

2.         密码更改后,新密码登录,登录成功,旧密码登录失败

3.         切换账号登录,检验登录的信息是否做到及时更新

4.         APP 登录同时登录不同的终端(手机,PC,Paid),允许登录,消息要实时同步;

5.         一个账号在同一类终端登录,会自动从上一次登录同一终端设备中剔除;

6.         分别用 IOS与android设备登录app ,不同设备,不同系统间,信息能否同步

站在APP 离线测试的角度,考虑测试点主要有:

1.         对于一些程序,需要在登录进来后,这时没有网络的情况下可以浏览本地数据

2.         对于无网络时,刷新获取新数据时,不能获取数据且能给出友好提示

3.         有网络刷页面,更新数据成功

4.         切换到后台,再次切换到前台时,可以正常查看

站在APP 消息推送的角度,考虑测试点主要有:

1.         默认开关应该是全打开状态,能够接收消息

2.         设置开关可以自由打开关闭,无法接收消息

3.         确认后台未打开APP客户端时,手机消息栏可以接收到  消息提醒。且点击可查看

站在APP 软件更新,考虑测试点主要有:

1.         当客户端有新版本时,有更新提示

2.         确保android软件更新可以正确更新新版本,且安装运行正常。

3.         用户取消版本更新时,老版本可以正常使用,但是下次启动应用时,仍出现更新提示

4.         跨版本升级场景

站在异常测试的角度,考虑的测试点主要有:

 站在弱网测试的角度,考虑的测试点主要有:

1.         测试2G、3G,4G,wifi 网络下应用运应的速度

2.         进入电梯,高铁隧道,我们的APP 是否能够正常运行

3.         有网到无网再到有网环境时,数据是否可以自动恢复,正常加载

站在APP 前台性能测试的角度,考虑的主要测试点有:

1.         测试app 响应时间、内存占用、cpu占用、流量消耗、电量消耗、帧率占用

2.         Logcat  查看后台日志,通过关键字 error,exception进行日志分析

安卓与ios 系统区别

【参考答案】

1.         Android系统上应用程序APP安装包 .apk 结尾,iOS 系统上应用程序APP 的安装包是.ipa 结尾的;

2.         Android系统上应用程序APP 开发包是用Java语言开发的,iOS 系统上应用程序APP 的安装包是用Objective C (OC)语言开发的;

3.         两者运行机制不同:IOS采用的是沙盒运行机制,安卓采用的是虚拟机运行机制。

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

什么原因会是CPU 占用率一下子飙升超过100%

【参考答案】

FPS(流畅度卡顿)造成

CPU ,MEN,流畅度单位啥?

【参考答案】

cpu,mem 单位是 %(百分比),流畅度 英文缩写:FPS 单位是: 帧

原生APP (native APP)与H5 APP(Web APP )

【参考答案】

1.         开放框架不同

原生:云服务器+客户端

h5 APP: html云网站+客户端

2.      获取数据方式不同

原生:APP应用所有的UI元素、数据内容、逻辑框架均安装在手机终端上

web app:而应用的数据则是每次打开APP的时候,去云端取数据呈现给手机用户

3.      安装包的大小不同

原生安装包比较大

h5 app  安装包小巧,数据都存放在云端

4.         维护方面  原生   APP应用更新新功能,涉及到每次要向各个应用商店进行提交审核

          h5 app   APP用户无须频繁更新APP应用,与云端实现的是实时数据交互

你看过app的日志没有,app的崩溃类型有哪几种

【参考答案】

1.         闪退

2.         内存溢出

3.         调用了当前系统版本不支持的接口类型(某个接口类型上个版本支持,最近的版本不支持,就会导出APP 崩溃)

备注:

APP 接口类型,常用的就是URL 类型

内存溢出:是指程序在申请内存时,没有足够的内存空间供其使用就会放生内存溢出

GT 客户端性能工具都监控哪些指标?

【参考答案】

对App 进行CPU、内存、流量、电量等进行测试

客户端性能测试报告扩张名什么结尾?

【参考答案】

.csv

如何这些衡量指标?

【参考答案】

我们一般通过纵横对比:

横向对比市场竞争对手产品APP 客户端各项性能指标

纵向对比产品之前的不同的版本

安卓几个术语:

【参考答案】

1.Android Studio  安卓集成开发环境 

2.Android SDK  software development kit    

安卓的开发包  谷歌安卓官网上可以下载到的开源 ,没有二次开放之前的那个包 装一个 被测试APP

3.Android Virtual Device  AVD  安卓的虚拟设备

Android环境如何搭建?

【参考答案】

我们公司平日用真机测试的比较多,没怎么解除过Android 环境的搭建,但是 ,我知道大概的安装顺序是:先安卓 Android Studio ,然后在线 安装被测试版本的sdk,选择avd , 开启虚拟机,再安装 要测试APP 然后进行测试;

我必须要要使用安卓手机才能做手机测试吗?

【参考答案】

不一定,模拟工具也可以,可以用安卓Android studio + android sdk  下进行测试,

手机,安装APP 进行测试。工作中,还是真机上测得多,测得准,使用模拟工具测试场景,通常是客户要指定机型太老,市面上很难采购到,我们才会用模拟工具测试;

什么是adb ?

【参考答案】

adb (Android debug bridge) 是安卓开发的一个重要辅助工具,可以通过命令让PC机和手机通讯的,主要用于android 设备的控制;

常用的adb 命令有哪些?

【参考答案】

adb devices  查看设备的连接情况  pc到手机端  出现设备号证明连接上

adb shell   进入adb shell界面

adb logcat >c:\**.log  把日志文件输出到指定目录下

adb install  ***.apk    安装应用程序到手机

adb unintall ***.apk  卸载安装了应用程序

adb kill-server  停止所有adb server 的运行 

adb start-server  启动adb server

adb push <local 本地> <remote 远程> 将本地的文件导入导手机目录中

例子:例子:adb pull /sdcard/qq/qq.gif  D:/

将手机sd卡中的QQ 目录中的qq.gif 文件 导出到 Windows 下D 盘根目录下

adb pull <remote> [<local>] 请手机目录中的东西导入 本地

什么是monkey?

【参考答案】

monkey 是android 中的一个 命令行工具,它可以向系统发送 伪随机 事件,是一款很好的 测系统稳定性,健壮性的测试工具

monkey 用来模拟的伪随机事件的类型有哪些?

触摸事件

手势事件

二指缩放事件

屏幕旋转事件

基本导航事件 

系统按键    home   回退键  音量上下键

启动activity事件

键盘事件  键盘弹出 和退出

常用的monkey 命令有哪些?

【参考答案】

adb shell monkey -p 被测试包的名字weixin.apk -v 500

-p程序包的名称

-v 指定日志的详细程度

500 向应用发送500个伪随机事件

一组  对一个APP 包相关操作

*指定一个包: adb shell monkey -p com.htc.Weather  100

 说明:com.htc.Weather为包名,100是事件计数(即让Monkey程序模拟

100次随机用户事件)。

*指定多个包:adb shell monkey -p com.htc.Weather –p

com.htc.pdfreader  -p com.htc.photo.widgets 100

*不指定包:adb shell monkey 100

 说明:Monkey随机启动APP并发送100个随机事件。

二组  日志相关操作

*日志级别 Level 0

示例 adb shell monkey -p com.htc.Weather –v 100

说明 缺省值,仅提供启动提示、测试完成和最终结果等少量信息

*日志级别 Level 1

示例 adb shell monkey -p com.htc.Weather –v -v 100

说明  提供较为详细的日志,包括每个发送到Activity的事件信息

*日志级别 Level 2

示例 adb shell monkey -p com.htc.Weather –v -v –v 100

说明  最详细的日志,包括了测试中选中/未选中的Activity信息

三组

adb shell monkey -p com.htc.Weather –throttle 3000 100

【参数解释】-throttle <毫秒>

用于指定用户操作(即事件)间的时延,单位是毫秒

*示例1:adb shell monkey -p com.htc.Weather --ignore-crashes 1000

  测试过程中即使Weather程序崩溃,Monkey依然会继续发送事件直到事件

数目达到1000为止;

--ignore-crashes

【参数解释】 用于指定当应用程序崩溃时(Force &Close错误),Monkey是否停止运行。

如果使用此参数,即使应用程序崩溃,Monkey依然会发送事件,直到事件 计数完成。

*示例2:adb shell monkey -p com.htc.Weather 1000

  测试过程中,如果Weather程序崩溃,Monkey将会停止运行。

手机测试的时候,如果模拟弱网的场景?要实地跑到电梯里去测试吗?

【参考答案】

不用,现在手机里有'设置’ 里面'优先网络类型’在这个系统里面 可以设置切换的2G,3G,4G,

还有就是通过模拟工具模拟:fiddler,NetworkEmulatorforWindows 

手机兼容性测试,机型如何选择的

【参考答案】

1.友盟 第三方数据平台 搜索  2017年度手机销量 top5

第二种就是 客户指定的机型

九:项目细节

你如何保证测试的质量或者你如何判断是否达到上线的条件?

如果开发延期,测试要求如期上线,你会怎么做?

介绍下你们的测试流程?

bug的生命周期有哪些?

项目的一个完整迭代要多久?

测试分几轮?

每一轮你们的侧重点是什么?

系统测试用例 功能 基本功能+这个版本新特性

你们项目组几个测试?

测试用例大概有多少?

一轮大概发现多少个bug?

你印象最深的bug有哪些?

你如何确定你发现的bug是有效的?

你觉得提交bug需要包含哪些因素才算完整?

作为测试的话,你的优势在哪里?

你觉得你们在测试的过程中有哪些是可以改进的地方?

3

借款人 年华收益率 6% 借款管理费  企业 

        个人 每月 0.175% 收取 借款管理费

投资人  会收取VIP 费用 一年180元

        收取投资服务费 五个档  收取 投资人 V1 收益的10%   V2 8% V3 5%V4  2%  v5 不在收取投资服务费

        投资人转让债权,持有产品  转让成功 收取 转让金额2% 手续费 ,

只有天数小于等于30天 2%    大于 30-90 1%    90天以上 收取 转让金额的0.5%

   收购人的收益 按收益的10%收取投资服务费

针对某某(你项目中的)模块,你是怎么设计测试用例的?给你这样一个功能 你会怎么测试?

11.理财项目中涉及到的接口以及实现原理

12.提现模块是否将参数直接传给华瑞银行审核,那么华瑞银行审核的原理是怎样的

13.大致介绍一下最近的一个项目是用来干嘛的,你分几个维度进行测试

3、充值回调,银行这边超时了,怎么处理 我回答找到客服提供交易流水号,手动启动充值回调 面试官问如果是周末,你们怎么处理的?

4、金融类项目,安全测试一般面试官会问的比较多。

8、你觉得你们这个金融平台是靠什么挣钱的?客户为什么要选择你们的产品?

11、APP项目组有哪些开发?

测试过程中怎么判断是服务器出了问题,还是程序本身的问题?

十:web&网络

B/S和C/S区别(app测试和web测试区别)

【参考答案】

       ·安装   B/S不需要安装客户端  C/S需要安装客户端

·兼容性 B/S兼容性主要是各种浏览器(firefox  chrome  ie) C/S兼容性主要测试操作系统(安卓,iOS)

       ·安全性 B/S采用公共协议http,安全性弱 ,C/S采用自定义协议,安全性好

       ·维护性 B/S不需要升级,C/S需要升级维护

       ·性能   B/S请求压力全部在服务器端,性能弱,C/S的请求是两端处理的,性能要好

    Cookie与Session 区别

【参考答案】

cookie是客户端机制,第一次访问的服务器的时候,由服务器提供,下次访问网站的时候带cookie是识别身份      

       session是服务器机制,每次访问的时候,服务器是给浏览器提供一个session,浏览器访问网站,带session识别身份,使用过一次失效

       cookie大小不超过3k

       session超时30分钟,可能会调到15分钟,测试session超时,登陆放31分钟

    错误码(返回码)

【参考答案】

404  找不到 — 服务器找不到给定的资源;文档不存在

500 内部错误 — 因为意外情况,服务器不能完成请求

501 未执行 — 服务器不支持请求的工具

502 错误网关 — 服务器接收到来自上游服务器的无效响应

301 已移动 — 请求的数据具有新的位置且更改是永久的

302 已找到 — 请求的数据临时具有不同 URI

200 成功

区别 get post 区别

【参考答案】

post比get安全

post提交数据原则没有大小限制,get有大小限制(200k)

速度上get快

最主要的区别,get 一定是通过 URL 访问    

什么时候抓包工具工具

Fiddler 抓包的目的

【参考答案】

 1.当页面加载很慢的时候,不知道是什么原因导致页面加载很慢,我需要抓包分析一下;

 2.我发现 我们测试的APP,web 图片无法显示,视频无法播放,抓包分析一下;

 3.在做接口测试的时候,开发人员没有给我接口测试文档,我不知道请求参数,和返回参数都有哪些,支持的是什么协议,请求参数类型都是什么,这时候,我需要使用抓包工具 ,抓取接口报文信息,进行分析

抓包工具有哪些?

【参考答案】

Fiddler  charles

简述fiddler操作步骤

【参考答案】

                1.代开 fiddler 客户端 设置代理端口号,允许第三方远程连接;

                2.手机连入WiFi,并且设置手动代理 输入主机名,和代理端口号

                3.重启fiddler

                4.手机进行抓包操作,

                5.fiddler记录抓包数据

抓完包如何进行分析?

【参考答案】

·根据返回的请求的后缀(扩展名),来判断请求的类型

·通过返回码判断请求的状态,如果4xx和5xx需要提交bug

·查看请求的方式,是get还是post,如果post需要查看post的数据,是否加密

·查看页面的大小,我们公司要求,如果图片超过200k 提交bug

TCP协议 UDP协议的 区别

【参考答案】

              ·tcp面向链接的传输协议  udp面向无连接协议

              ·tcp传输速度慢    udp传输速度快

              ·tcp  比udp要安全

              ·tcp传输无大小限制 udp信息偏小

              ·tcp无目标地址  udp有目标地址

html css js 运行的先后顺序是什么?

【参考答案】

界面加载的时候先加载html 在加载css 最后加载js

一个完整的html 网页应当包括

列举出常用的10个HTML 标签

十一、安全性测试是什么?用什么工具?如何测试?

答:安全性测试是验证有关应用程序的安全服务和识别潜在的安全性的缺陷的过程。此节包括一些重要的测试建议,用来验证已创建安全的应用程序。

正式环境:

1.     发布前需要对发布包进行一次杀毒

2.     服务器需要安装杀毒软件并且定期更新和杀毒

3.     服务器和数据库的密码需要满足一定的复杂度

功能类:

1.     认证模块必须采用防暴力破解机制。例如:验证码或者多次尝试连接尝试登陆失败后锁定账号或IP,账号冻结后,管理员可以手动解冻

2.     对于每一个需要授权访问的页面或servlet的请求都必须核实用户的会话标识是否合法、用户是否被授权执行这个操作,以防止URL越权。

3.     登录过程中,往服务器传递传递用户名和口令时,必须采用HTTPS安全协议(也就是带服务器端证书的SSL)

4.     用户产生的数据必须在服务端进行校验

5.     所有非查询的操作必须有日志记录

6.     密码需要满足一定长度和复杂度,,并且以高级的加密方法保存在数据库。

7.     口令在传输的过程中必须以密文的形式传输

8.     输入密码时密码不能以明文回显,输入密码不接受拷贝功能

9.     修改密码需要验证旧密码

10.  日志中的密码不能以明文显示

11.  超时验证

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多