·项目启动后,我们拿到需求规格说明书,产品人员对我们进行需求的澄清,
然后对需求规格书进行细化和分解,得到我们测试需求分析思维导图;
·测试组长根据测试需求分析结果和项目计划估算项目的工作量和人力,来编写测试计划,我们参与评审;
·根据测试需求分析要点,按照测试组长分配的模块进行测试用例编写,编写完成后进行组内测试用例的评审;
·开发完成编码,我们会拿到一个安装包,然后就搭建测试环境,搭建完成后首先进行冒烟测试,
冒烟测试通过后进行正式测试用例的执行,我们执行一般分三轮,第一轮执行测试用例,后两轮主要进行回归测试;
·等测试执行通过后,开发修改完bug,组长编写测试报告,项目准备上线
·上线我们参与做上线后的功能验证。
每个公司,每个项目组测试结束条件不一样,说一下我们公司的:
测试结束的条件
所有测试用例全部执行,版本稳定,缺陷遗留率达到预定质量目标
新建→确认(驳回)→解决(驳回)→验证→关闭(激活)
参考答案:
1)测试用例版本号
2)功能模块名称
3)用例ID
4)用例重要级别(高,中,低)
5)用例预置条件
6)操作步骤
7)预期结果
8)测试用例执行结果
9)测试用例执行日期
1)Bug所属产品
2)Bug所属功能模块
3)Bug影响的版本号
4)Bug级别(提示,一般,严重,致命)
5)Bug类型
(代码错误,设计优化,设计缺陷,性能问题,测试脚本)
6)Bug标题
7)重现步骤
8)预期结果
9)实际结果
10)附件(后台日志debug.log或者截图)
参考答案
每个公司定义的bug级别标准都不一样,我们公司把bug分为提示,一般,严重,致命四类
每个公司定义的标准不一样,我们公司一般分为高中低
基本功能新特性
每个公司用的缺陷管理工具不尽相同,一般测试用例执行结果有:
1)通过Pass
2)失败Failed
3)挂起hangup
4)阻碍Block
一般常用的测试用例设计方法有等价类,边界值分析方法,因果图法,场景法,错误推测法
最容易发现错误的是——边界值
最常用的是——场景法
【参考答案】
工作量的估算测试范围测试环境(软硬件)启动条件和结束条件测试类型进度的安排风险的评估文档的阅读者人员和职责背景目的缩略语
工作量如何估算的?
Sdfsdfasd
你写过测试报告吗?如何写?
工作量统计测试执行纪录模块分析结论附件
参考答案:7-8种
功能测试,界面测试,安全测试,本地化/国际化测试,数据库测试,可靠性测试,集成测试,兼容性测试,自动化测试,性能测试,回归测试
答:兼容性测试(CompatibilityTestSuite)简称CTS.是指测试软件在特定的硬件平台上、不同的应用软件之间、不同的操纵系统平台上、不同的网络等环境中是否能够很友好的运行的测试。
Web端浏览器兼容性测试需要测试场景有:
IE6,IE7,IE8火狐,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、回归测试怎么回归的?涉及到用自动化回归的,也会问到自动化回归的一些问题,怎么回归?策略、下发周期等
7、云测平台有了解吗?云测平台和用真机测试各自的优缺点?
10、那些因素会影响产品的质量?
CentOS7
命令解释
useradd用户名新建用户
passwd用户名给用户设置密码
groupadd组名新建用户组
df-h查看磁盘使用情况
free-m查看内存使用率没讲
rpm-ivh软件包名字离线安装软件包
yuminstall软件包名字在线安装软件包没讲
rpm-qa|grep软件包名字查看软件包是否被安装没讲5
yumremove软件包名字卸载安装包没讲
rpm-e软件包名字卸载安-装包
netstat-an|grep端口号查看端口号没讲
ps-ef查看当前系统内所有进程没讲
ps-ef|grep进程名查看某一个进程
top查看系统资源没讲
du-sh查看文件或者目录的大小没讲
ls|wc-l统计在当前目录下有多少目录和文件没讲
serviceiptablesstop关闭防火墙没讲
lsnrctlstatus查看oracle监听状态
tar-czvf文件名.tar.gz要压缩的文件(可以是多个)压缩文件
tar-xzvf文件名.tar.gz解压缩文件
gzip要压缩的文件名压缩文件没讲
gzip-d文件名.gz解压缩文件
zip-r文件名.zip要压缩的文件(可以是多个)压缩文件
unzip文件名.zip解压缩文件
chmod修改文件或目录的权限
chown修改拥有者和拥有组的权限
ifconfig查看ip地址
servicenetworkrestart重启网卡没讲
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全文查找替换
每个系统(项目)由于开发语言不同,服务器类型不同,服务器操作系统不同,使用数据库不同,搭建测试环境的方法不尽相同;
我在测试工作中搭建过LAMP模型测试环境;
根据开发人员给的《安装指导文档》启动测试环境的搭建;
搭建的顺序是:先搭建平台包(apache,mysql,php),在搭建业务包
首先使用FTP工具(xftp)把从开发那边获取的平台包,业务包上传的linux下指定目录里面
解压平台包,使用rpm-ivh命令依次安装apache,mysql,php安装的顺序,严格按照安装指导文档的要求来搭建
平台包是否搭建成功,我们可以重启对应的服务器来判断,比如我想知道我的mysql装的是否正确,那么我就启动一下mysql只要不报错就证明安装成功(sevicemysqldstart);
平台包搭建完毕后,启动搭建业务包
首先解压业务包到指定目录/var/www/html
赋予业务包755权限
LAMP环境的搭建基本这样子
问题1:
在安装指导里面,解压安装包之后,给安装脚本赋予权限不足,导致安装脚本执行报错;
(优先)
问题2:
安装指导参数说明,上下位置调换了,导致参数错误。
问题3:--防火墙--
测试环境下,防火墙没有关闭,导致环境搭建完毕后,去访问ecshop,访问失败;
问题4:--文档--2.3.72.3.6
开发人员通宵归档,上传到SVN上的对应版本安装指导文档版本不匹配,导致我在搭建测试环境时候,无法进行操作。
问题5:--配置文件路径开发给错
使用命令:tail-f***.log
截取日志详细步骤:
1.tail-f日志名.log
2.去前台业务进行操作,后台生成日志
3.中断日志:ctrl+c
根据关键字定位,查看上下文
/error错误
/exception异常
/resultcode结果码
这种情况造成突然间系统崩溃的原因很多,我们还是从查看后台日志,分析后台日志,来开启定位问题。
使用tar命令在家目录下把这个目录备份
--数据备份--(oracle在Linux部署的话)使用imp(导入)exp(导出)命令导入或者导出数据。
内存数据库库
mdbackup–b
--数据备份---mysql
mysqldump-uroot-pxiaohuan>xiao.db
------------------------------
例子:
导入
imp用户名/密码@实例名file=d:\daochu.dmp
导出用户名/密码@实例
expscott/orcl123@orclfile=d:\daochu.dmpfull=y
exp用户名/密码@实例file=d:\dababase_20170930.dmpfull=y
40万左右的服务器
CPU8核,千兆光钎,双网卡,500g硬盘,内存32G
linux操作系统,哪个目录最耗内存,动态查看日志命令
增:insertinto表名values('列值1’,’列值2’……'列值n’);
删:deletefrom表名where[筛选条件];
改:update表名set列名='新列值’where[筛选条件];
查:写出查询的骨架加分
select*from表名where[筛选条件]groupby[列名]having[分组后的筛选]orderby[列名]ASC升序|DESC降序;
考点:分页查询
Oracle:
select*from(selectrownumr,表名.*from表名)tmpr>=3andr<=5;
mysql:
SELECT*FROMecs_usersLIMIT2,3;
1)进入mysql
mysql-uroot-p
2)查看当前所有数据库
3)切换到具体某一个数据库
4)查看某数据库下具体有那些表
5)查看具体某一张表具体信息
6)启动/关闭mysql
servicemysqldstart/stop
delete
truncate
drop
delete方式可以恢复删除的数据,但是提交了,就没办法了
delete删除的时候,会记录日志,删除会很慢很慢
删除所有数据,不会影响表结构,不会记录日志,数据不能恢复,删除很快
删除所有数据,包括表结构一并删除,不会记录日志,数据不能恢复,删除很快
selectdistinct列from表名
to_char()强制转换成字符型
to_date()强制转换成日期型
to_number()强制转换成数字型
·MySQL属于小型数据库,oracle中型数据库
·mysql开源,oracle不开源
·mysql端口号3306,oracle1521
·连接工具MySQL:sqlyog,navicate,oraclePL/SQL
·提交数据的时候,mysqlflushprivileges,oracle用的是commit
·分页查询的时候,MySQL用limit,oracle用的是rownum
avg()
sum()
count()
max()
min()
length()
upper()
lower()
to_char()
to_date()
to_number()
已左表为基准表,右表显示与左表有交集的数据
内连接,也被称为自然连接,等值链接,只有两个表相匹配的行才能在结果集中出现。返回的结果集选取了表中有交集的数据
索引是创建在表上的表,是对数据库表中一列或者多列的值进行排序的一种结构。索引可以提高查询的速度;优点:查找速度快缺点:存储索引占用磁盘空间
存储过程是在数据库中定义一些SQL语句的集合,然后直接调用这些存储过程来执行已经定义好的SQL语句。存储过程可以避免开发人员重复的编写相同的SQL语句。
例如:
银行经常需要计算用户的利息了不同类别的用户的利率是不一样的聊着就可以将计算利率的SQL代码写成一个存储过程。
视图是是从一个或者多个表中导出来的表,是一种虚拟存在的表。
成绩表tb(字段有:姓名、课程、成绩)
1.用一行语句,查询所有课程平均成绩大于80分的学生姓名;
selectnamefrom(selectavg(degree),namefromtbgroupbynamehavingavg(degree)>80)a;
2.用一行语句,查询所有课程都大于80分的学生姓名
selectnamefromtbwherenamenotin(selectnamefromtbwheredegree<=80);
selectname,
fromstudentssgroupbyname这个亲测可行
mysql中replaceinto的用法
为什么要建立唯一索引
list1=[2,4,7,10,3,5,1,2,3,6,8,9]
foriinrange(len(list1)-1):
forjinrange(len(list1)-i-1):
iflist1[j]>list1[j+1]:
list1[j],list1[j+1]=list1[j+1],list1[j]
print(list1)
OS文件和目录的操作(增、删、改、查)
random生成随机数
Selenium自动化框架
Unitest单元测试框架(测试用例组织和执行)
Requests模拟请求get和post
json数据转化和解析
ddt数据驱动
xlwt对excel表格进行操作pymysql/pyoracle连接数据库
Int(整数)、String(字符串)、Float(浮点数)、Booleans(布尔值)、复数等其他类型
断言我们一般在Unittest单元测试框架中使用,常用的有assertIn(模糊匹配)和assertEqual(完全匹配)
在python中主要有三大类:
assert类:断言通过才执行下面的代码,失败则停止;
verify类:断言失败时会抛出错误异常,但不会影响代码的执行。
在项目成型基本稳定,不会出现大规模的需求变动之后,就可以考虑自动化的启动;
首先要考虑的就是自动化工具的选择,像常用的自动化工具就有QTP、seleniumIDE、RobotFramework等,但是这样的工具使用起来不够灵活,一般为了与项目贴合,最好自己写一套框架,
像之前我们公司用的框架就是结合了Python+selenium和Python的unittest;
然后在手工用例转化自动化用例之前,我们需要进行评审和决策,将能实现自动化或难度低的模块、用例优先进行自动化,不能实现自动化的用例给出具体原因,在回归时指派手工覆盖,防止漏测;
自动化用例我们要有一定的规范和要求,便于脚本的调用和后期的维护,比如一个功能的用例写在一个目录下,每一条用例写一个脚本,命名要统一格式;
自动化用例执行全部完成后,对测试结果进行汇总并给出测试结论。
我们公司自动化的流程大概就是这个样子!!
我们公司的自动化框架基于python+Selenium,我们会有一个测试用例目录用于存放测试用例;一个公共的第三方lib库,因为我们实现自动化的过程中会有很多经常用到的方法,做成公共模块放在lib库里面,可以提高代码的复用率,便于代码的维护;还会有一个data数据目录,存放自动化测试中的数据,在进行数据驱动时,数据与代码分离,便于自动化用例数据的准备和脚本的维护;还会有一个执行和报告目录,执行的策略和报告的生成在这个目录下进行,可以调整自动化测试中的下发策略,查看运行的结果。
我们用的是Python自带的单元测试框架unittest
八大定位元素:
属性定位:id、name、clas_sname
路径定位:xpath、css_selector
链接定位:partial_link_text、link_text
标签定位:tag_name
你们公司自动化测试的流程是什么样的?
定位单个元素返回的是一个元素对象,可以直接进行操作;而定位多个元素返回的是一个元素对象列表,需要做二次定位后才可以进行操作,如下拉框中的元素,需先定位到下拉框,再用Select方法进行二次定位
占总系统测试用例的30%-50%左右,根据自己总用例数来估算吧!一般跳窗口,调第三方接口以及一些业务场景比较复杂的用例不适合实现自动化。
【参考答案1】
【参考答案2】
对html元素定位
模拟对第一步定位到的元素进行点击、输入、选择等操作
元素的定位用的是什么方法?
定位元素有三种方式:通过属性定位、通过xpath定位、通过css定位
常用的方法有:
find_element_by_id()\find_element_by_xpath\find_element_by_css_selector()等等
首先Selenium是一种自动化测试框架,它就存在自动化测试的缺陷:不稳定、可靠性、不易维护、成本与收益;而且它只支持B/S架构的自动化。
开源、轻量级、支持多种语言、提供的SeleniumIDE工具录制脚本易于上手,支持多种浏览器,可以很好的测试兼容性。
-xpath或者css通过同级、父级、子级进行定位
-try方式进行id,name,clas,xpath,cssselector不同方式进行定位,如果第一种失败可以自动尝试第二种
1、减少操作步骤,如经过三四步才能打开我们要测试的页面的话,我们可以直接通过网址来打开,减少不必要的操作
4、多线程执行脚本,在编写测试用例的时候,要尽量实现松耦合,然后在服务器允许的情况下,设置多线程运行,提高执行速度(remote起多节点做分布式,需要先设置hub和node,threading做多线程)
-多用try捕捉,处理异常
-多线程的时候,用例之间相互影响,所以设计用例的时候,尽量降低用例的耦合度;
-多线程的时候,如果用例执行的先后数序有要求,那么在用例命名的时候要加0-9或a-z排序,因为用例的执行顺序是按照ASCII码表排列的(数字--》大写字母--》小写字母)
-UI自动化不需要
-接口测试会需要(修改了数据库中的数据就需要,也就是对数据库中的数据进行了增、删、改)
注:连接数据库需要导入pymysql、pyoracle模块
做过
使用的工具是Selenium
用的Python
用的是selenium2.53.2和Python2.7.10
有写,因为一方面我们的系统每个版本都会有新功能上线,等这些新功能运行三四个月基本稳定后,这些功能会就会加入到自动化测试的范围内,所以我们几乎每个版本都会有新自动化脚本要写。另一方面,原有的功能总会有一些新的调整,所以每个版本都需要对原有的自动化脚本进行更新与维护。
我们一般是先使用seleniumIDE进行录制后生成脚本,再对工具自动生成的脚本进行修改、优化。
Open、type、close、click、clickAndWait、select、verify、assert
模块:os、time、system、unittest
函数:time.sleep()、assertIn、assertequal等等(回忆下课堂都用了什么方法)
自动化实现原理把自动化测试流程说了,对于验证码,验证码,我们用的是万能验证码,开发后台代码写死的。
2.基本功能稳定后,我们使用LR工具进行性能测试,录制脚本;
3.录制脚本后,会做脚本增强,包括插入事务,检查点,参数化,设置集合点;
4.脚本录制完成后,我么会在controller模块加载脚本,设置运行模式,设置并发用户数,添加负载机,设置RTS,设置集合点策略;
5.运行脚本,运行结束后,对性能测试结果分析;
7如果性能测试没有通过,让开发优化后继续测试,我们性能测试并发是在100-300之间
以上就是我们公司性能测试流程
2、简介和注释,增强脚本的可读性;
3、事务(一般在录制的时候插入事务,注意事务的完整性);
4、检查点(现在多用文本检查,函数为lr_web_reg_find());
7、运行时设置(这里指的是脚本调试时的RTS,要与场景设置时的RTS区分开,关键是区别日志类型和迭代次数);
8.集合点(注意设置集合点的位置,在一个事务结束之后,下一个事务开始之前,要了解场景设置中集合点的三种策略:占总虚拟用户数的百分比、占运行总用户数的百分比、达到多少用户数时);
9、错误处理(一般对文本检查的结果进行处理,文本检查中会加一个计数,通过计数来做事务成功或失败的判断);
10、回放验证;
系统指标:内存(70%以下)、CPU(70%以下)、网卡使用率、磁盘I/O速度
三个维度:
1.配置,web服务器作为前端与后台服务器交互的中轴,在整个系统运行中起着重要作用,它的最大进程数和活动进程数要合理配置,不能太多,也不能太少,太多则对服务器产生过大压力,太少则浪费资源;中间件的调优,如mysql数据库配置的调优,配置数据库连接池(与web服务器配置调优类似);
2.后台服务器代码调优:有逻辑上的算法调优和SQL语句调优;
3.提高服务器硬件配置(如CPU、内存等)或服务器数量:服务器集群和负载均衡。
通过交叉结果来对比分析,也就是同样的并发场景,只改变系统配置中的CPU,对两次性能监控的指标进行对比分析,如果提高CPU配置后,cpu占比和系统的性能表现得到提高,那么可以判断cpu存在瓶颈(不一定是唯一的瓶颈,只能说是瓶颈之一,系统的性能是由多个因素共同决定的,要注意的是,性能的优化不一定只是代码上的优化,还可以是硬件上的优化,具体怎么做,还要分析成本与收益,毕竟代码的优化是有极限的)。
从服务端来说:sql语句的调优,一个插入动作,可能插入的不仅仅是一张表,而是对多张有关联的表进行操作,那么可以从代码层面对sql语句进行优化;
从业务来说:对应请求的响应数据过大时,可以对响应数据进行分割,先响应一部分数据,如淘宝查询操作,每次只响应10条数据。
LoadRunner
自动监控制定的URL或应用程序所发出的请求及服务器返回的响应。它作为一个第三方监视客户端与服务器的所有对话,然后把这些对话记录下来。生成脚本。再次运行时模拟成千上万的虚拟用户发出的请求,捕获服务器端的响应并监控性能指标数据。通过对性能指标数据的统计与分析输出报告。
录制脚本,脚本调试与优化、设置场景,执行场景,分析结果
写过,我们测的一般功能都比较简单,比如新增数据、搜索、导入导出这些功能
导出、下载功能需要写脚本,使用C语言。首先使用关联函数将服务器返回的数据获取并保存,使用C语言中的fopen函数把数据保存到本地。
使用C语言
我只做一个表象的分析,对比实际测试的性能指标数据与预期指标是否相符、观察测试结果中的图像是否稳定。
其他的交由开发人员处理,把报错的信息发到开发人员处,后续分析以及调优由开发人员处理
1.我有测出过一个死锁,后来加了一个超时的设置,就可以处理这个问题了。
数据库加索引,这个是开发人员去处理的
第一,先获取业务数据
有两种情况一种是新系统,需要产品人员去调研业务量,业务的峰值,
或者参考竞争对手类似软件业务量
还有一种是运维的系统,需要开发人员从数据库当中整理出真实的用户数据
第二,得到这些数据后,在用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()
请求函数:web_url()/web_submit_data()
输出函数:lr_output_message()
获取参数值:lr_eval_string()
C函数
字符串处理函数:strcmp/strcpy/strcat/strlen
文件打开/关闭函数:fopen/fclose
格式转换函数:atoi/itoa
LR主要利用系统的服务和协议来监控,比如说RPC和tcpudp等
Jmeter是通过调用特定系统服务手机服务器数据,在通过本身的代理和特定的协议,端口发送数据出去
Jmeter用的是一个插件教serveragent,原理是通过调用特定系统服务手机服务器数据,在通过本身的代理和特定的协议,端口发送数据出去
其实接口测试流程和功能测试流程差不多,首先熟悉业务流程,熟悉接口需求,然后根据开发提供的接口测试文档,编写并评审接口测试用例,开发人员接口开发完毕,提测后我们执行接口测试用例,发现问题提交bug问题单,回归接口测试问题单,整理接口测试报告。
我们公司接口测试流程大体就是这样
我们公司接口测试目前没有自动化起来,主要还是手工测试,测试重点主要围绕着,接口的通过性验证,参数组合验证,接口安全,接口异常验证以及结合接口本身业务逻辑来,展开接口测试的:
通过性验证:严格按照接口文档里面的规定传参数以及参数类型进行传参,也就是正常场景,先保证接口流程是通的,接口是好使的;
参数组合验证:多个参数的时候,有些参数是必选项,有些是非必选项,这部分我们主要对参数必选项,非必选项组合场景验证;
接口安全:
1.绕过验证:
比如说购买了一个商品,它的价格是300元,那我在提交订单时候,我把这个商品的价格改成-3元【通过抓包工具篡改金额】,验证后端有没有对金额有效性做验证。
比如充值场景,我们要向合作银行传递客户ID,已经用户ID,我们把客户ID改成不存在的客户ID,或者其他网贷平台客户ID,看后端是否错了判断处理;
3.参数是否加密
比如说我登陆的接口,用户名和密码是不是加密,如果不加密的话,别人拦截到你的请求,就能获取到你的信息了,加密规则是否容易破解
4.密码安全规则
密码的复杂程度校验字母+数字区分大小写
异常测试
也就是我不按照你接口文档上的要求输入参数,来验证接口对异常情况的校验
如
age年龄为int我传递string类型Aa567
最后接口测试还会考虑
根据你自己的业务逻辑来进行,接口测试
这部分会跟功能测试用例重复,但是通过接口测试可以发现很多在页面上操作发现不了的bug
充值
你们主要测试哪些接口?基于什么协议,返回报文格式是什么样的?【参考答案】
webservice接口基于soap协议返回报文xml格式
程序外部接口,主要是系统与第三方的接口常见的是支付接口与银行对接等;
我们公司系统内部接口和外部接口都要测试
1.打开SOAPUI新建一个SOAPproject
2.导入wsdl文件
3.根据接口文档,配置要测试接口对应webservice请求消息报文
wsdl:webservicediscriptionlanguage:webservice接口描述语言
Postman,Jmeter,SoapUI
接口规范文档,也是我们测试最重要的一个依据
接口文档至少包括:
1、接口说明
2、调用url
3、请求方法(get\post)
4、请求参数、参数类型、请求参数说明
5、返回参数说明
首先站在APP的安装卸载角度,考虑的测试点主要有:
1.app是否可以在android不同系统版本上安装;安卓:7.0,6.0,5.0
2.安装空间不足时是否有相应提示
3.通过第三方软件是否能够安装(360,91助手,豌豆荚)
4.卸载:可通过手机桌面卸载,
5.卸载:通过第三方软件卸载。(360,91助手,豌豆荚)
站在功能测试的角度,考虑的测试点:
1.结合自己项目里的APP功能简单说几个业务;
站在兼容性测试(适配测试)的角度,考虑的测试点主要有:
1.不同厂商系统测试
2.不同分辨率测试
3.不同系统版本测试
4.不同屏幕尺寸测试
站在APP运行的角度,考虑测试点主要有:
1.APP安装完成后,是否可以正常打开软件
2.APP的速度是可以让人接受,切换是否流畅
站在APP离线测试的角度,考虑测试点主要有:
2.对于无网络时,刷新获取新数据时,不能获取数据且能给出友好提示
3.有网络刷页面,更新数据成功
4.切换到后台,再次切换到前台时,可以正常查看
站在APP消息推送的角度,考虑测试点主要有:
1.默认开关应该是全打开状态,能够接收消息
2.设置开关可以自由打开关闭,无法接收消息
3.确认后台未打开APP客户端时,手机消息栏可以接收到消息提醒。且点击可查看
站在APP软件更新,考虑测试点主要有:
1.当客户端有新版本时,有更新提示
2.确保android软件更新可以正确更新新版本,且安装运行正常。
3.用户取消版本更新时,老版本可以正常使用,但是下次启动应用时,仍出现更新提示
4.跨版本升级场景
站在异常测试的角度,考虑的测试点主要有:
站在弱网测试的角度,考虑的测试点主要有:
1.测试2G、3G,4G,wifi网络下应用运应的速度
2.进入电梯,高铁隧道,我们的APP是否能够正常运行
3.有网到无网再到有网环境时,数据是否可以自动恢复,正常加载
站在APP前台性能测试的角度,考虑的主要测试点有:
2.Logcat查看后台日志,通过关键字error,exception进行日志分析
1.Android系统上应用程序APP安装包.apk结尾,iOS系统上应用程序APP的安装包是.ipa结尾的;
2.Android系统上应用程序APP开发包是用Java语言开发的,iOS系统上应用程序APP的安装包是用ObjectiveC(OC)语言开发的;
3.两者运行机制不同:IOS采用的是沙盒运行机制,安卓采用的是虚拟机运行机制。
4.两者后台制度不同:IOS中任何第三方程序都不能在后台运行;安卓中任何程序都能在后台运行,直到没有内存才会关闭。
FPS(流畅度卡顿)造成
cpu,mem单位是%(百分比),流畅度英文缩写:FPS单位是:帧
1.开放框架不同:
原生:云服务器+客户端
h5APP:html云网站+客户端
2.获取数据方式不同
原生:APP应用所有的UI元素、数据内容、逻辑框架均安装在手机终端上
webapp:而应用的数据则是每次打开APP的时候,去云端取数据呈现给手机用户
3.安装包的大小不同
原生安装包比较大
h5app安装包小巧,数据都存放在云端
4.维护方面原生APP应用更新新功能,涉及到每次要向各个应用商店进行提交审核
h5appAPP用户无须频繁更新APP应用,与云端实现的是实时数据交互
1.闪退
2.内存溢出
3.调用了当前系统版本不支持的接口类型(某个接口类型上个版本支持,最近的版本不支持,就会导出APP崩溃)
备注:
APP接口类型,常用的就是URL类型
内存溢出:是指程序在申请内存时,没有足够的内存空间供其使用就会放生内存溢出
对App进行CPU、内存、流量、电量等进行测试
.csv
我们一般通过纵横对比:
横向对比市场竞争对手产品APP客户端各项性能指标
纵向对比产品之前的不同的版本
1.AndroidStudio安卓集成开发环境
2.AndroidSDKsoftwaredevelopmentkit
安卓的开发包谷歌安卓官网上可以下载到的开源,没有二次开放之前的那个包装一个被测试APP
3.AndroidVirtualDeviceAVD安卓的虚拟设备
我们公司平日用真机测试的比较多,没怎么解除过Android环境的搭建,但是,我知道大概的安装顺序是:先安卓AndroidStudio,然后在线安装被测试版本的sdk,选择avd,开启虚拟机,再安装要测试APP然后进行测试;
不一定,模拟工具也可以,可以用安卓Androidstudio+androidsdk下进行测试,
手机,安装APP进行测试。工作中,还是真机上测得多,测得准,使用模拟工具测试场景,通常是客户要指定机型太老,市面上很难采购到,我们才会用模拟工具测试;
adb(Androiddebugbridge)是安卓开发的一个重要辅助工具,可以通过命令让PC机和手机通讯的,主要用于android设备的控制;
adbdevices查看设备的连接情况pc到手机端出现设备号证明连接上
adbshell进入adbshell界面
adblogcat>c:\**.log把日志文件输出到指定目录下
adbinstall***.apk安装应用程序到手机
adbunintall***.apk卸载安装了应用程序
adbkill-server停止所有adbserver的运行
adbstart-server启动adbserver
adbpush
例子:例子:adbpull/sdcard/qq/qq.gifD:/
adbpull
monkey是android中的一个命令行工具,它可以向系统发送伪随机事件,是一款很好的测系统稳定性,健壮性的测试工具
触摸事件
手势事件
二指缩放事件
屏幕旋转事件
基本导航事件
系统按键home回退键音量上下键
启动activity事件
键盘事件键盘弹出和退出
adbshellmonkey-p被测试包的名字weixin.apk-v500
-p程序包的名称
-v指定日志的详细程度
500向应用发送500个伪随机事件
*指定一个包:adbshellmonkey-pcom.htc.Weather100
说明:com.htc.Weather为包名,100是事件计数(即让Monkey程序模拟
100次随机用户事件)。
*指定多个包:adbshellmonkey-pcom.htc.Weather–p
com.htc.pdfreader-pcom.htc.photo.widgets100
*不指定包:adbshellmonkey100
说明:Monkey随机启动APP并发送100个随机事件。
*日志级别Level0
示例adbshellmonkey-pcom.htc.Weather–v100
说明缺省值,仅提供启动提示、测试完成和最终结果等少量信息
*日志级别Level1
示例adbshellmonkey-pcom.htc.Weather–v-v100
说明提供较为详细的日志,包括每个发送到Activity的事件信息
*日志级别Level2
示例adbshellmonkey-pcom.htc.Weather–v-v–v100
说明最详细的日志,包括了测试中选中/未选中的Activity信息
三组
adbshellmonkey-pcom.htc.Weather–throttle3000100
【参数解释】-throttle<毫秒>
用于指定用户操作(即事件)间的时延,单位是毫秒
*示例1:adbshellmonkey-pcom.htc.Weather--ignore-crashes1000
测试过程中即使Weather程序崩溃,Monkey依然会继续发送事件直到事件
数目达到1000为止;
--ignore-crashes
【参数解释】用于指定当应用程序崩溃时(Force&Close错误),Monkey是否停止运行。
如果使用此参数,即使应用程序崩溃,Monkey依然会发送事件,直到事件计数完成。
*示例2:adbshellmonkey-pcom.htc.Weather1000
测试过程中,如果Weather程序崩溃,Monkey将会停止运行。
不用,现在手机里有'设置’里面'优先网络类型’在这个系统里面可以设置切换的2G,3G,4G,
还有就是通过模拟工具模拟:fiddler,NetworkEmulatorforWindows
1.友盟第三方数据平台搜索2017年度手机销量top5
第二种就是客户指定的机型
你如何保证测试的质量或者你如何判断是否达到上线的条件?
如果开发延期,测试要求如期上线,你会怎么做?
介绍下你们的测试流程?
bug的生命周期有哪些?
项目的一个完整迭代要多久?
测试分几轮?
每一轮你们的侧重点是什么?
系统测试用例功能基本功能+这个版本新特性
你们项目组几个测试?
测试用例大概有多少?
一轮大概发现多少个bug?
你印象最深的bug有哪些?
你如何确定你发现的bug是有效的?
你觉得提交bug需要包含哪些因素才算完整?
作为测试的话,你的优势在哪里?
你觉得你们在测试的过程中有哪些是可以改进的地方?
3
借款人年华收益率6%借款管理费企业
个人每月0.175%收取借款管理费
投资人会收取VIP费用一年180元
收取投资服务费五个档收取投资人V1收益的10%V28%V35%V42%v5不在收取投资服务费
投资人转让债权,持有产品转让成功收取转让金额2%手续费,
只有天数小于等于30天2%大于30-901%90天以上收取转让金额的0.5%
收购人的收益按收益的10%收取投资服务费
针对某某(你项目中的)模块,你是怎么设计测试用例的?给你这样一个功能你会怎么测试?
11.理财项目中涉及到的接口以及实现原理
12.提现模块是否将参数直接传给华瑞银行审核,那么华瑞银行审核的原理是怎样的
13.大致介绍一下最近的一个项目是用来干嘛的,你分几个维度进行测试
3、充值回调,银行这边超时了,怎么处理我回答找到客服提供交易流水号,手动启动充值回调面试官问如果是周末,你们怎么处理的?
4、金融类项目,安全测试一般面试官会问的比较多。
8、你觉得你们这个金融平台是靠什么挣钱的?客户为什么要选择你们的产品?
11、APP项目组有哪些开发?
测试过程中怎么判断是服务器出了问题,还是程序本身的问题?
·安装B/S不需要安装客户端C/S需要安装客户端
·兼容性B/S兼容性主要是各种浏览器(firefoxchromeie)C/S兼容性主要测试操作系统(安卓,iOS)
·维护性B/S不需要升级,C/S需要升级维护
·性能B/S请求压力全部在服务器端,性能弱,C/S的请求是两端处理的,性能要好
cookie是客户端机制,第一次访问的服务器的时候,由服务器提供,下次访问网站的时候带cookie是识别身份
session是服务器机制,每次访问的时候,服务器是给浏览器提供一个session,浏览器访问网站,带session识别身份,使用过一次失效
cookie大小不超过3k
session超时30分钟,可能会调到15分钟,测试session超时,登陆放31分钟
404找不到—服务器找不到给定的资源;文档不存在
500内部错误—因为意外情况,服务器不能完成请求
501未执行—服务器不支持请求的工具
502错误网关—服务器接收到来自上游服务器的无效响应
301已移动—请求的数据具有新的位置且更改是永久的
302已找到—请求的数据临时具有不同URI
200成功
post比get安全
post提交数据原则没有大小限制,get有大小限制(200k)
速度上get快
最主要的区别,get一定是通过URL访问
1.当页面加载很慢的时候,不知道是什么原因导致页面加载很慢,我需要抓包分析一下;
2.我发现我们测试的APP,web图片无法显示,视频无法播放,抓包分析一下;
3.在做接口测试的时候,开发人员没有给我接口测试文档,我不知道请求参数,和返回参数都有哪些,支持的是什么协议,请求参数类型都是什么,这时候,我需要使用抓包工具,抓取接口报文信息,进行分析
Fiddlercharles
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有目标地址
界面加载的时候先加载html在加载css最后加载js
列举出常用的10个HTML标签十一、安全性测试是什么用什么工具如何测试
答:安全性测试是验证有关应用程序的安全服务和识别潜在的安全性的缺陷的过程。此节包括一些重要的测试建议,用来验证已创建安全的应用程序。
正式环境:
1.发布前需要对发布包进行一次杀毒
2.服务器需要安装杀毒软件并且定期更新和杀毒
3.服务器和数据库的密码需要满足一定的复杂度
功能类:
1.认证模块必须采用防暴力破解机制。例如:验证码或者多次尝试连接尝试登陆失败后锁定账号或IP,账号冻结后,管理员可以手动解冻
4.用户产生的数据必须在服务端进行校验
5.所有非查询的操作必须有日志记录
6.密码需要满足一定长度和复杂度,,并且以高级的加密方法保存在数据库。
7.口令在传输的过程中必须以密文的形式传输
8.输入密码时密码不能以明文回显,输入密码不接受拷贝功能