测试面试题
三、问答题
1、在您以往的工作中,一条BUG记录都包含了哪些内容?如何提交高质量的bug记录?
答:a)包含内容:bug编号,bug标题,bug模块、具体描述,bug等级,重现步骤,bug出现的版本号、测试环境,指派给的人,修复等级,bug状态、开发接口人员及版本号,相关附件等
2、测试分为那几个阶段?
答:开发阶段:单元测试 -> 集成测试时 -> 系统测试 -> 验收测试
单元测试:针对每个单元的测试,以确保每个模块能正常工作为目标
集成测试:对已经测试过的模块进行组装,进行集成测试。目的就是在于检验与软件设计相关的程序结构问题。
系统测试:检验软件产品能够与系统的其他部分(比如:硬件、数据库及操作人员)协调工作。
验收测试:检验软件产品质量的最后一道工序,主要突出用户的作用,同时软件开发人员也有一定程度的参与。
Bug管理:禅道、QC(收费)
接口测试:postman、Jmeter、soapui
单元测试:JUnit
自动化测试:Selenium
性能测试:Jmeter 、LoadRunner
管理linux系统:xshell、xftp
抓包工具:谷歌自带、
ixia:网络收发、网络流量测试工具
SmartBits可测试路由器性能和防火墙抗攻击能力
Fluke进行布线验收测试
Chariot可进行特定应用性能测试和链路稳定性测试
LoadRunner是一种预测系统行为和性能的负载测试工具.通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner 能够对整个企业架构进行测试.
WinRuner是企业级的功能测试工具,用于检测应用程序是否能够达到预期的功能及正常运行,自动执行重复任务并优化测试工作,从而缩短测试时间。
局域网络测试工具——QCheck
4、先有一个程序,页面提供3个输入框a、b、c,一个输出框d,根据a、b、c的输入判断数据层是否只能组成一个三角形(三角形两边之和大于第三边),在d中输出:是,否
答:等价类划分法:有效等价类:a、b、c的值都大于0 、a+b>c且b+c>a且a+c>b
无效等价类:a/b/c为0或负数、a/b/c为空、a/b/c为非数字、a+b<=c b+c<=a a+b<=b
5、一个完整的测试方案包含哪些要素?
写明将要如何进行测试的文档,包括测试计划、测试环境、测试数据、工具、测试方法、风险依赖等方面。
备注:测试方案和测试计划的区别:
组织方式:
|
测试计划 |
测试方案 |
组织方式 |
管理文件 -管理者角度 |
技术文件---技术角度 |
目的 |
强调“做什么” |
强调“怎么做” |
内容 |
组织架构、工作任务分配、工作量估计、人力物力资源的分配、进度的安排、风险的估计和规避、各任务通过准则等 |
测试需求的细化、测试组网图的设计、自动化测试框架的设计、测试数据和测试脚本的设计、测试用例设计的原则等 |
6、查看接口的工具有哪些?说出一个工具的操作
答:jmeter与postman都支持
jmeter的用法:新建一个线程组,添加http类型的请求→填上接口地址和数据→添加查看结果树→进行运行→查看结果、进行分析
Postman是谷歌的一款接口测试插件,它使用简单,支持用例管理,支持get、post、文件上传、响应验证、变量管理、环境参数管理等功能,可以批量运行,并支持用例导出、导入。
7、如何定位BUG,是前端还是后端的问题,用什么工具,还是利用别的?
答:前端是主要体现在页面的视觉效果以及交互设计上。比如说一个网站的页面风格、页面跳转等,最简单的例子就是一个注册界面:前端设计界面风格,约束输入的字符类型、长度以及合法性校验等,不涉及到与数据库之间的信息交流。
后台,则侧重于更深层面的东西,关于逻辑,关于数据,关于平台的稳定性与性能。后台主要负责实现具体的功能,举个例子,还是那个注册界面,前端写好了界面,规定了你能输入哪些数据,不能输入哪些数据,而后台则会把你输入的信息与数据库进行比对,如果是新用户,则顺势在数据库中插入一条信息。
关于数据有些是前台校验,有些后台校验,有些前后台都检验。
工具:fiddler/谷歌F12 、或检查标签的排查工具idea.exe
备注:判断前端问题的方法:
F12, 打开错误控制台console
区分前后台交互:查看网络请求
a) Html中如果有链接,有相应的情况下,基本可以定位到是属于前端的问题
b) 如果为空,或者有出现error错误信息,我们就可以定位到属于后台开发的问题
TMS对应的VM模板,出现的一些截断控制,转换功能都属于前端的问题
后端判断bug的问题方法:
(1)查看报错日志。查看报错日志,通过日志分析,需要有一定的经验,并且有一定的代码基础,才能更好地定位问题。
(2)查看数据库的数据。了解所测功能的数据表结构,测试过程中,查看数据库的数据,确认数据的正确性。
(3)查看缓存(如Memcache、apc、redis等缓存)是否正确
前后bug例子:
前端:
在console中查看报错信息,一般浏览器都会显示报错的jS ,对于出错的js可以在Sources下查看对应报错的资源文件,
3.光标的几种形态 (输入框_工字形光标、链接or按钮_食指竖起的白手套、白色箭头)
4.按钮点击没反应、下拉框层级关系没有动态变化、输入框校验(长度、非法字符)不严格
5.面包屑导航条:不准确、不能跳转、跳转404错误、提示语:不友好,不符合用户场景
6.图片加载不出来:如果是静态图片就是打包的时候少了文件、如果是动态图片就是后台返回的数据有问题
7.前端写死了数据,没有动态读取后台返回的数据,
8.后台接口应答异常码,前端要有合理提示语
9.后台接口无应答or应答超时,前端要有超时提示语,
10.同一个接口,用户正常操作的时候有没有必要同时发送N个?
11.网络异常的时候,多次刷新页面,接口顺序怎么控制,
12.多个接口(例如:A接口必须在B接口前面),导致网络延迟的时候,顺序有点乱了,有偶现BUG
后端:
1.返回的报文不符合接口文档:参数是否区分大小写、字母拼写错误、INT或者String与接口文档不一致(INT不需要“”引号,string需要“”引号)
2.返回的值前端识别不了,协商后,后台配合扩充字段满足前端需求
3.应该返回0条记录的,但是返回了全部。应该返回1条记录的,但是返回了多条记录
4.应该返回有序的数据,但是返回了无序的数据
5.分页结果不正确(每页条数,第1页,第2页,第3页)
8.假设京东有一个web API: http://p.jd.com?p1=90&p0=100,输入打折价p1和原价p0,返回折扣信息0.9,请设计测试用例进行测试。
因为无法得知接口实现细节,所以只能进行黑盒测试。这个接口有两个输入参数p1和p0,一个返回参数折扣信息。
首先在正常工作情况下,采用等价类划分法测试,分为p1小于p0,p1等于p0, p1大于p0:
1. p1和p0都取大于0的数值,而且p1小于p0的值,正常结果返回p1/p0的值;
2. p1和p0都取大于0的数值,而且p1等于p0的值,正常结果返回1或者不打折的信息;
3. p1和p0都取大于0的数值,而且p1大于p0的值,正常结果返回p1/p0或者输入错误或者涨价了的信息;
然后采用边界值分析法,考虑输入参数的特殊情况:
4. 当p1小于0或p0小于0时,正常返回输入错误的信息;
5. 当p1等于0并且p0大于0时,正常返回当前免费的信息;
6. 当p1等于0并且p0等于0时,正常返回一直免费的信息;
7. 当p1大于0并且p0等于0时,正常返回涨价了的信息;
然后进行异常测试,考虑输入参数非法的情况:
8. 当p1或者p0输入不是整数,而是浮点数时,正常处理逻辑应该和都是整数的情况一致;
9. 当p1或者p0输入不是整数也不是浮点数,而是字符或字符串等其他类型时,正常结果应该是报输入非法错误;
然后进行安全测试:
9.以windows对文件的复制粘帖功能为例,尽可能多地写出测试思路。
1. 基本功能测试: 文件的复制粘贴功能,首先关键字“文件”,文件有不同的分类(图片、视频、音频、文档等),每个分类又有不同的类型(文档类型:txt doc execl pdf等),每个文件又有不同的大小,而且文件还有很多权限,是不是隐藏,是不是只是管理员可执行。选择不同分类的不同类型,不同大小的文件做测试资源。比如:文档类型里面txt文件可以分为 1.KB的txt文件、1MB的txt文件、1GB的txt文件。。。。下一个关键字 复制粘贴 复制有多种方式 右击选择、Ctrl+C、 拖动复制,对应粘贴也有各种方式。然后从哪复制,粘贴到哪,比如 可以有本机硬盘、移动硬盘、优盘、内存卡、软盘、光盘、连接手机存储,复制到网络地址等等。复制粘贴后文件是不是可用,文件权限是不是有变化。复制过去容量不够怎么处理?复制过后有重名文件怎么处理?复制过程中取消、关机、拔优盘怎么处理?复制过程能不能执行文件?
2.性能测试:复制粘贴功能性能怎么样?复制文件的速度可不可以接受?同时复制多个文件是不是可以完成?复制文件过程中占用CPU资源大不大,耗电量大不大?
3.兼容性测试 Windows XP, Windows 7, Windows 8 , Windows 8.1, Windows 10等各种windos版本是不是都支持这个功能。
4.交互测试; 复制粘贴文件时,使用windows存储的其他功能是否有影响?比如播放本地的音频、视频、等同时复制文件是不是有影响。一边复制,一边粘贴是不是有影响。
5.界面测试:复制粘贴时进度条的显示界面是否与系统的设计风格一致?显示界面是否有文字性错误?显示界面的布是否合理?界面上的按钮是否可用(如:是否可以选择中止?是否可用最小化?)
6.本地化测试:不同语言环境下的显示正常
7.辅助性测试:高对比度下能否显示正常
(1)使用不同的移动设备查看转换后的页面,检查内容是否正确;
(2)输入正确的网址,进行转码,检查内容是否正确;
(3)输入错误的网址,进行转码,系统是否有相应的提示;
(4)测试转码的速度,或者系统的相应时间;
(5)测试转码后,页面显示是否美观;
(6)输入的web的page为空,是否抛出异常;
12.测试淘宝站内的搜索系统
输入关键字,查看: 返回结果是否准确,返回的文本长度需限制
结果显示:标题,卖家,销售量。。。。单行/多行,是否有图片。。.
结果排序:价格 销量 评价 综合。。。
返回结果庞大时,限制第一页的现实量,需支持翻页
多选项搜索:关键字 品牌 产地 价格区间 是否天猫 是否全国购。。
是否支持模糊搜索,支持通配符的查询
网速慢的情况下的搜索
搜索结果为空的情况
未登录情况和登录情况下的搜索(登录情况下 存储用户搜索的关键字/搜索习惯)
2.性能方面,
可利用测试工具或各种测试手段考虑功能在各方面的表现,具体:
压力测试:在不同发用户数压力下的表现(评价指标如响应时间等)
负载测试:看极限能承载多大的用户量同时正常使用
稳定性测试:常规压力下能保持多久持续稳定运行
内存测试:有无内存泄漏现象
大数据量测试:如模拟从庞大的海量数据中搜索结果、或搜索出海量的结果后列示出来,看表现如何等等。
4.兼容性方面,
跨平台、多语言等多样性环境组合情况下测试使用的正常性,具体:
WINDOWS/LINUX/UNIX等各类操作系统下及各版本条件下的应用
IE/FIREFOX/GOOGLE/360/QQ等各类浏览器下及各版本条件下、各种显示分辨率条件下的应用
SQL/ORACLE/DB2/MYSQL等各类数据库存储情况下的兼容性测试
简体中文、繁体中文、英文等各类语种软件平台下的兼容性测试
IPHONE/IPAD、安卓等各类移动应用平台下的兼容性测试
与各相关的监控程序的兼容性测试,如输入法、杀毒、监控、防火墙等工具同时使用
5.安全性方面,往往容易被忽视的环节,具体:
被删除、加密、授权的数据,不允许被查出来的,是否有安全控制设计;
录入一些数据库查询的保留字符,如单引号、%等等,造成查询SQL拼接出的语句产生漏洞,如可以查出所有数据等等,这方面要有一些黑客攻击的思想并引入一些工具和技术,如爬网等。
通过白盒测试技术,检查一下在程序设计上是否存在安全方面的隐患;
对涉及国家安全、法律禁止的内容是否进行了相关的过滤和控制;
6.异常性测试,各种破坏性的操作的影响测试,具体:
查询过程中断网、关机
查询过程中强行中断关闭页面
查询过程中强行杀死相关进程等
答:等价类、边界值、错误推测法、场景法,因果图/判定表、正交排列法
13、Beta测试与alpha测试的区别?
alpha测试是公司内部在模拟实际操作环境下进行的一种验收,公司内部会组织内部员工、也仍然需要需用的参与,alpha测试不能由程序员或者测试完成。
Beta测试是软件的多个用户在一个或多个用户的实际使用环境下进行的测试,beta测试不能由程序员或测试员完成。
测试3人,老大负责分配我们的任务,每个人负责对应的模块或者是不同的客户端,完成自己的一端时间的任务就行。
1、上家公司比较清闲,不利于我的长期发展,所以离职了
2、上家公司的业务比较少,基本上是事情比较少的情况,年轻人要多奋斗下,
所以我选择离职,去更加忙一点的公司。(2选1)
先会召开需求分析会议,参加人员有产品、开发和测试,主要是探讨需求主要的一些功能点;
然后开发就排期进行开发,主管开始编写测试计划,对我们进行任务分配。
我们参考需求规格说明书及原型图编写测试用例,
写完之后会进行用例评审,有评审修改的就修改整理形成最终的用例版本;
开发人员版本编译完成后,我们会先进行预测(冒烟),主要对主功能业务进行测试,如果主业务流程不通过,直接返回给开发进行修改。
预测通过(冒烟),依据测试用例进行系统测试。测试过程中,提交bug,跟踪bug,进行回归测试直至不存在严重bug,满足用户需求,
测试完后编写测试报告;产品发布上线后,关注web是否正常运行,要进行常规的维护性测试。
1、测试计划包括:项目信息、参与文档、测试范围、测试策略、测试时间人员安排、测试环境;
3、交付文档:主要是测试用例、测试计划、测试报告。
先在出现问题的环境上尽量重现,保持浏览器环境、出现问题的特定账号等的一致,多次尝试仍然不能重现,也要记录到bug平台,将出现问题的特征步骤尽量描述清楚,附带问题截图及日志截图、注明偶现;
如果项目时间允许,bug等级高,需要开发协助重现;如果时间不允许,记录到BUG平台后续在跟进。
Bug的生命周期,就是一个bug被发现到这个bug被关闭的过程,生命周期中一般缺陷状态:新建、指派、已解决、待验、关闭
如果待验证的bug在验证是没有解决好,我们需要重新打开(激活)→指派→已解决→待验,循环这个过程,中间其他状态:重新打开、拒绝、延期等
首先确认开发环境是否跟自己测试环境一致,
确认在测试环境能重现,如果确认是缺陷跟开发保持有效沟通,
如果是级别较低的建议性bug,可以先记录到bug平台,先保留沟通。
如果是bug级别较高的问题,对应需求文档的预期结果跟开发说明,更有说服力;耐心讲解BUG的危害,不行就找产品确认,确实是BUG注明情况并再次指派给开发
身份证末尾X结尾的, 实名认证显示成功,但是在后面提现的时候,会报错,后面发现是保存到库里面的,都是小写X的,导致提现这边不识别,印象深刻的原因是因为花了一定的时间去找到这个bug,并且自己尝试定位到原因,所以印象深刻。
回去再多哦想想
如果公司项目要求需要加班,我会积极参与,我们之前公司也有加班,所以这种情况我了解。也能完成好工作。
从TPS指标分析,TPS即系统单位时间内处理事务的数量。当前随着用户数的增长期系统每秒可处理的事务数是否也会增长。
被测系统的正常业务流程通过,即集成测试通过后。性能测试前提是客户对性能有明确要求,产品中所使用协议为性能测试工具所支持
26.进行参数化的目的是什么?
A、减少脚本的大小;B、便于脚本的维护,从而更加真实的模拟生产环境的数据。
1. 模拟真实情况,比如各种账号 2. 某些数据在真实环境中不可同时使用,否则会造成死锁,比如有些系统设定同一个用户只能在一次通讯中交易 3. 如果总是使用相同数据,某些服务器或者数据库有缓存机制,第一次跑可能慢一点,后面会大大加快响应速度,这样就无法测试出真实的系统情况
27.容量测试方法中为什么要以逐步递增的方式进行?
虚拟用户数随着负载时间的延长而增加,可以帮助确定系统响应时间减慢的准确时间以及准确的用户数。
A、LoadRunner客户机器是否已无法承载当前运行压力导致LoadRunner无法及时获取从服务端返回的信息;
B、Tink_time是否已忽略;
C、确定当前被测系统架构,是否为在每次测试过程中清楚缓存所导致。
27.如何发现应用服务器的相关问题?
A、通过某些事务的运行,判断是否在应用代码层未进行调优导致事务响应事件过长;
B、通过实时监控工具(nmon等)监控分析:
a、系统在运行过程中其CPU是否稳定运行或CPU耗用是否过高;
b、在系统运行过程中其内存是否存在内存泄漏现象;
c、打开相应日志、分析在运行过程中是否存在交易报错并获取错误原因查看是否由于代码原因导致交易错误发生。
28.如何发现数据库的相关问题?
A、通过运行某些相应的已获取的SQL语句,判断是否由于数据库索引所导致的事务响应过长的问题发生。
B、通过实时监控工具(nmon等)监控分析:
a、系统在运行过程中其CPU是否稳定运行或CPU耗用是否过高;
b、在系统运行过程中其内存是否存在内存泄漏现象;
29.简述LoadRunner的工作原理?
答案:loadrunner会自动监控指定的URL或应用程序所发出的请求及服务器返回的响应,它做为一个第三方(Agent)监视客户端与服务器端的所有对话,然后把这些对话记录下来,生成脚本,再次运行时模拟客户端发出的请求,捕获服务器端的响应。
30.根据什么来编写的?如何保证用例的覆盖度?
测试用例编写和方法,工具,对业务需求的把握
参考答案:
我们是根据需求(需求说明书、之前的产品、同品、软件规范、经验值)
编写用例(UI、功能、兼容性、安全、性能、稳定性、易用性)
用到的方法(测试用例设计方法)。
如果把上述的点都考虑并测试到了,那么覆盖度就达到要求。需求评审后确定测试点
工具:表格、Xmind思维导图、禅道
31.测试项目:电梯
需求测试:查看电梯使用说明书、安全说明书等
界面测试:查看电梯外观
功能测试:测试电梯能否实现正常的上升和下降功能.电梯的按钮是否都可以用;
电梯门的打开,关闭是否正常;报警装置是否可用,报警电话是否可用;
通风状况如何.突然停电时的情况;是否有手机信号;
比如说上升途中的响应。电梯本来在 1 楼,如果有人按 18 楼,那么电梯在上升到 5 楼的时候,有人按了 10 楼,这时候是否会在 10 楼先停下来;
电梯下降到 10 层时显示满员,此时若 8 层有人等待电梯,是否在 8 层停;
可靠性:门关上的一刹那出现障碍物,同时按关门和开门按钮,点击当前楼层号码,多次点
击同一楼层的号码等等;同时按上键和下键会怎样;
易用性:电梯的按钮的设计符合一般人使用的习惯吗.
用户文档:使用手册是否对杯子的用法、限制、使用条件等有详细描述
压力测试:看电梯的最大限度的承受重量.在负载过重时报警装置是否有提醒.在一定时间
内不断的让电梯上升,下降.最大负载下平稳运行的最长时间。
32.测试项目:杯子
需求测试: 查看杯子使用说明书
界面测试: 查看杯子外观
功能度:用水杯装水看漏不漏;水能不能被喝到
安全性:杯子有没有毒或细菌
可靠性:杯子从不同高度落下的损坏程度
可移植性:杯子在不同的地方、温度等环境下是否都可以正常使用
兼容性:杯子是否能够容纳果汁、白水、酒精、汽油等
易用性:杯子是否烫手、是否有防滑措施、是否方便饮用
用户文档:使用手册是否对杯子的用法、限制、使用条件等有详细描述
疲劳测试:将杯子盛上水(案例一)放 24 小时检查泄漏时间和情况;盛上汽油(案例二)
放 24 小时检查泄漏时间和情况等
压力测试:用根针并在针上面不断加重量,看压强多大时会穿透
跌落测试: 杯子加包装( 有填充物), 在多高的情况摔下不破损
震动测试: 杯子加包装( 有填充物), 六面震动, 检查产品是否能应对恶劣的铁路\ 公路\ 航
空运输
测试数据:测试数据具体编写此处略(最讨厌写测试数据了)。其中应用到:场景法、等价
类划分法、因果图法、错误推测法、边界值法等方法
期望输出:该期望输出需查阅国标、行标以及使用用户的需求
33.测试题目:桌子
需求测试:查看国家相关标准。
功能:桌子是办公,或者放置用的,首先考虑桌子的面积大小是否适度.
界面:桌子的版面是否平滑,桌子有没有凹凸不平的地方
安全:桌子肯定有它的支撑点,若支撑点不稳,容易摔坏物品,使用起来也不方便.
易用:桌子的移动性好不.它的重量是否合适
可靠性:将桌子推倒后,再检查桌子是否很容易被损坏.
性能:将很重的物品放在桌子上,看它最大承受的重量是多少...
34.测试题目:洗衣机
功能测试:该洗衣机是否能正常的洗衣服
需求测试:查看洗衣机的使用说明书和安全说明书等
性能测试:使用时用电量如何,是否满足用户需求
界面测试:洗衣机的外观是否满足客户的需求
易用测试: 该洗衣机是否容易操作
兼用性测试:该洗衣机除了能洗衣服以外还能洗别的吗
安全性测试:该洗衣机通电以后人接触以后是否有电
负载测试:通过逐步增加系统负载,最终确定在什么负载条件下系统性能将处于崩溃状态,
以此获得系统能提供的最大服务
压力测试:通过逐步增加系统负载,最终确定在什么负载条件下系统性能将处于崩溃状态,
以此获得系统能提供的最大服务级别的测试。
稳定性测试:加到一定的衣服然后过一段时间看洗衣机是否正常洗
35.支付测试场景,简单总结一下测试的思路:
从金额上:包括正常金额的支付,最小值的支付,最大值的支付,错误金额的输入(包括超限的金额、格式错误的金额、不允许使用的货币等等);
从流程上:包括正常完成支付的流程,支付中断后继续支付的流程,支付中断后结束支付的流程,支付中断结束支付后再次支付的流程,单订单支付的流程,多订单合并支付的流程等等;
从使用的设备上:包括PC端的支付、笔记本电脑的支付、平板电脑的支付、手机端的支付等;
从支付接口上:包括POSE终端机支付、银行卡网银支付、支付宝支付、微信支付、手机支付等;
从产品容错性上:包括支付失败后如何补单或者退单、如何退款等;
从后台的账务处理上:成功订单的账务处理、失败订单的账务处理、退款订单的账务处理、差错账处理等等。
36.项目中碰到的需求问题,能够直接和客户沟通吗?
不能,我们需要将问题整理到一起,由项目经理和测试经理作为接口人和客户进行沟通;我们的需求是产品线提的,关于需求问题我们直接找产品线。
37.需求确定中不确定的需求怎么解决?
项目组内讨论解决,如果还是得不到解决,需要找用户确认
38.需求文档是谁编写的?
客户、产品线。
39.怎么进行需求测试?
会议讨论评审
40.什么是测试点,测试点包含哪些内容?
就是针对功能细分的点,我们写的测试点类似于测试用例,是说什么功能的什么情况。
41.测试方案是谁编写的?
有经验的测试工程师、分给谁谁写,自己写自己负责的那一部分,一般除了新员工都会写。
42.测试方案编写的输入条件是什么?
需求规格说明书,测试需求分析表
43.测试用例内容有哪些?
ID 、标题、 优先级、 预置条件 、操作步骤 、预期结果、 实际结果、测试人、测试时间。
44.什么是好的测试用例?
我觉得不遗漏的测试用例就是好的测试用例
45.测试用例的颗粒度划分?
颗粒度的大小就是用例的粗细程度,每个项目组的尺度应该有所不同吧!
46..测试用例为什么需要有优先级,有哪一些优先级?
因为在不同阶段执行的用例数目是不同的,用例对应的功能的重要程度也是不同的,我们用的是高中低三级。
47.你们以前一天能够编写多少条测试用例?
30条左右吧,没怎么统计过,大概是这个数,没怎么统计过。
48.你们项目一共有多少条测试用例?
500-------到2000,具体项目具体分析,和项目大小颗粒度大小都有关系。
49.高中低优先级的测试用例的比例占多少?
3:4:3 的比例吧!
50.测试用例需要哪些人来评审?
我们是项目组全体来评审的额,毕竟测试是保证软件质量的最后一个环节,测试用例是测试执行的依据,所以测试用例十分重要,项目组非常重视测试用例的评审,希望把漏测的降到最低,所以我们的测试用例是项目组全体成员来评审的
51.一个项目需要写多少测试用例怎么估算?
这个在需求分析之后根据测试点来评估的,我们的测试点写的很细,所以测试用例的数目几乎等于测试点的数目。
52.测试用例是谁写的?
测试人员。
53.不能发现BUG的测试用例不是好的测试用例吗?
我不这样认为,我觉得在执行之前,每个用例都可能发现缺陷,好的测试用例是一套完整的不遗漏的测试用例,是能够被其他的测试人员执行的测试用例。不能因为是否找到BUG来说明用例是否好。
54.为什么要进行交叉测试?
因为自己执行自己设计的用例,会按照设计用例的思路来执行用例,可能会忽略一些偶然或异常的情况,交叉执行可能会发现新的BUG,当然如果用例已经写得很细,颗粒度很小吗,输入输出写得很全面交叉执行的结果都会差不多,无论谁来执行结果都是一样的。
55.测试环境是谁搭建的?
我们老大、CMO/测试人员
56.你们测试版本实在哪获取的?
开发搞定之后提交到git上,我们去git上获取。
57.什么叫预测试,预测试是怎么进行的,预测试一般为多长时间?
预测试就是开放刚刚开发完成,测试环境刚搭建起来,这时我们要对系统的各种功能能不能跑通,业务流程能不能完成进行测试,就是冒烟测试,这就是转测试,我们转测试大概需要一天的时间。
58.你的测试职业发展是什么?
测试经验越多,测试能力越高。所以我的职业发展是需要时间积累的,一步步向着高级测试工程师奔去。而且我也有初步的职业规划,前3年积累测试经验,按如何做好测试工程师的要点去要求自己,不断更新自己改正自己,做好测试任务。
59.你认为测试人员需要具备哪些素质
做测试应该要有一定的协调能力,因为测试人员经常要与开发接触处理一些问题,如果处理不好的话会引起一些冲突,这样的话工作上就会不好做。还有测试人员要有一定的耐心,有的时候做测试很枯燥乏味。除了耐心,测试人员不能放过每一个可能的错误。
60.你为什么能够做测试这行
虽然我的测试技术还不是很成熟,但是我觉得我还是可以胜任软件测试这个工作的,因为做软件测试不仅是要求技术好,还有有一定的沟通能力,耐心、细心等外在因素。综合起来看我认为我是胜任这个工作的。
61.测试的目的是什么?
测试的目的是找出软件产品中的错误,是软件尽可能的符合用户的要求。当然软件测试是不可能找出全部错误的。
62.测试分为哪几个阶段?
一般来说分为5个阶段:单元测试、集成测试、确认测试、系统测试、验收测试
63.单元测试的测试对象、目的、测试依据、测试方法?
测试对象是模块内部的程序错误,目的是消除局部模块逻辑和功能上的错误和缺陷。测试依据是模块的详细设计,测试方法是采用白盒测试。
64.怎样看待加班问题
加班的话我没有太多意见,但是我还是觉得如果能够合理安排时间的话,不会有太多时候加班的。
65.结合你以前的学习和工作经验,你认为如何做好测试。
根据我以前的工作和学习经验,我认为做好工作首先要有一个良好的沟通,只有沟通无障碍了,才会有好的协作,才会有更好的效率,再一个就是技术一定要过关,做测试要有足够的耐心,和一个良好的工作习惯,不懂的就要问,实时与同事沟通这样的话才能做好测试工作。
66.selenium中如何判断元素是否存在?
isElementPresent
67.selenium中hidden或者是display = none的元素是否可以定位到?
不能
68.selenium中如何保证操作元素的成功率?也就是说如何保证我点击的元素一定是可以点击的?
添加元素智能等待时间 driver.implicitly_wait(30)
- try 方式进行id,name,clas,x path, css selector 不同方式进行定位,如果第一种失败可以自动尝试第二种
-Selenium保证元素成功率是通过元素的定位,当然它的定位方法很多,一定能有合适的。但是在自动化工程的实施过程中,高质量的自动化测试不是只有测试人员保证的。需要开发人员规范开发习惯,如给页面元素加上唯一的name,id等,这样就能大大地提高元素定位的准确性。当然如果开发人员开发不规范,我们在定位元素的时候尽量使用相对地址定位,这样能减少元素定位受页面变化的影响。只要我们元素定位准确,就能保证我的每一个操作符合我的预期
69.如何提高selenium脚本的执行速度?
Selenium脚本的执行速度受多方面因素的影响,如网速,操作步骤的繁琐程度,页面加载的速度,以及我们在脚本中设置的等待时间,运行脚本的线程数等。所以不能单方面追求运行速度的,要确保稳定性,能稳定地实现回归测试才是关键。
我们可以从以下几个方面来提高速度:
一,减少操作步骤,如经过三四步才能打开我们要测试的页面的话,我们就可以直接通过网址来打开,减少不必要的操作。
二,中断页面加载,如果页面加载的内容过多,我们可以查看一下加载慢的原因,如果加载的内容不影响我们测试,就设置超时时间,中断页面加载。
三,在设置等待时间的时候,可以sleep固定的时间,也可以检测某个元素出现后中断等待也可以提高速度。
四,配置testNG实现多线程。在编写测试用例的时候,一定要实现松耦合,然后在服务器允许的情况下,尽量设置多线程运行,提高执行速度。
70.用例在运行过程中经常会出现不稳定的情况,也就是说这次可以通过,下次就没办法通过了,如何去提升用例的稳定性?
time.sleep( )
-driver.implicitly_wait(30)
- 多用 try 捕捉,处理异常
-此时我们要分析出不稳定的原因,然后有针对性的去解决问题。主要有以下几个方面 :
一,网速问题:有的时候网页加载的比较慢,在程序执行的时候要操作的元素没有显示出来。这种情况比较常见,运行一次网速好的时候通过了,再运行一次,页面没有打开,就不通过了。为了提高稳定性,我们只能牺牲运行时间了,在经常检测失败的元素前加上等待时间,等要操作的元素出现之后再执行下面的操作。
二,Selelnium的原因:Selenium1.0和2.0还是有区别的,有些儿函数在2.0下运行确实有时而有效,时面无效。如果mouseover()函数,就是这种情况, 我们需要避免使用这类的函数。
三,多线程的时候,测试用例间相互影响。虽然多线程的时候运行速度比较快,但是如果用例之间的耦合性没有设计好,也会影响的,如果用例A先于用例B执行的时候,就会影响到用例B;反之则没有问题。这种情况,如果你的自动化测试工程打算多线程的时候,提前就要把测试用例测试的耦合度比较松,尽量没有任何关系,因为多线程的执行顺序是不受控制的。
71.你的自动化用例的执行策略是什么?
-自动化测试用例的执行策略是要看自动化测试的目的,通常有如下几种策略:
一,自动化测试用例是用来监控的,在此目的下,我们就把自动化测试用例设置成定时执行的,如果每五分钟或是一个小时执行一次,在jenkins上创建一个定时任务即可。
二,必须回归的用例。有些儿测试用例,如BVT测试用例,我们在公司产品任何变动上线之前都需要回归执行。那我们就把测试用例设置成触发式执行,在jenkins上将我们的自动化测试任务绑定到开发的build任务上。当开发人员在仿真环境上部代码的时候,我们的自动化测试用例就会被触发执行。
三,不需要经常执行的测试用例。像全量测试用例,我们没有必要一直回归执行,必竟还是有时间消耗的,有些非主要业务线也不需要时时回归。这类测试用例我们就采用人工执行,在jenkins创建一个任务,需要执行的时候人工去构建即可。
72.什么是持续集成?
持续集成源于极限编程(XP),是一种软件实践,软件开发过程中集成步骤是一个漫长并且无法预测的过程。集成过程中可能会爆发大量的问题,因此集成过程需要尽可能小而多,实际上持续集成讲的是不断的去做软件的集成工作。持续集成,最简单的形式是包括一个监控版本控制(SVN等等)变化的工具。当变化被发觉时,这个工具可以自动的编译并测试你的应用。
73.自动化测试的时候是不是需要连接数据库做数据校验?
UI自动化不需要
- 接口测试会需要
74.id,name,class,xpath, cssselector这些属性,你最偏爱哪一种,为什么?
- css 、xpath 几乎所有的元素都可以定位到
75.如何去定位页面上动态加载的元素?
-触发动态加载元素的事件,直至动态元素出现,进行定位
76.如何去定位属性动态变化的元素?
- xpath或者css通过同级、父级、子级进行定位
77、点击链接以后,selenium是否会自动等待该页面加载完毕?
-
会的
78、webdriver可以用来做接口测试吗?
有难度,不推荐
79.get和post 的区别?(感觉可能答案不对)
第一点:
get重点在从服务器上获取资源,post重点在向服务器发送数据;
第二点:
get传输数据是通过URL请求,以field(字段)= value的形式,置于URL后,并用"?"连接,多个请求数据间用"&"连接,如http://127.0.0.1/Test/login.action?name=admin&password=admin,这个过程用户是可见的;
post传输数据通过Http的post机制,将字段与对应值封存在请求实体中发送给服务器,这个过程对用户是不可见的;
第三点:
Get传输的数据量小,因为受URL长度限制,但效率较高;
Post可以传输大量数据,所以上传文件时只能用Post方式;
第四点:
get是不安全的,因为URL是可见的,可能会泄露私密信息,如密码等;
post较get安全性较高;
第五点:
get方式只能支持ASCII字符,向服务器传的中文字符可能会乱码。
post支持标准字符集,可以正确传递中文字符。
80.公司内一直在使用的测试系统(B/S架构)突然不能访问了,需要你进行排查并恢复,说出你的检查方法
答:一、网站输入域名直接无法访问,网站之前还正常,突然就无法访问
1. 测试FTP是否正常可以登录,不能登录的直接问空间商那是空间商的问题直接联系他们。
2. 空间赠送的三级域名是否能够访问网站打开网站(空间都赠送三级域名),如果也不能访问应该是空间问题。
3. 在电脑的开始菜单运行中输入cmd,在弹出的黑框中输入:ping 你的域名;然后回车,如果看不到IP或IP地址与你的主机地址不符,则说明域名解析有误,是域名的问题得重新解析域名。
二、访问报404错误(无法找到该页)。说明是网站内容都正常是程序出现问题,看看程序是否完整。
三、访问网站出现MySQL Server Error 这个是数据库链接错误,查看数据库连接文件和数据库是不是错误。
四、访问网站出现500错误。
1. 请登录FTP查看是否多了异常文件或丢失文件,说明网站被侵入了,马上联系网站制作进行进行排查故障。
如果空间且FTP程序目录没有缺失文件或刚刚安装就出现500错误,请确认空间已开启scandir()函数,查看是不是禁止了这个函数。
81.我们公司的测试流程是这样子的:
1. 我们的产品经理会提前1天把需求文档发下来,给我们看,熟悉熟悉。一般第二天会开一个需求澄清会议,要对需求的理解达成一致,以及弄清楚模块与模块之间的关联,产品经理还会讲解一下测试的重点。澄清会议之后,我们测试就会开个小会,主要是进行人员的分配和测试模块的初步分工。
2. 接下来就是编写测试计划,这个是我们经理写的。我们测试人员,会根据经理分派的模块仔细研究和评估测试需要多少时间。然后会开一个测试计划评审会议。主要是明确分工,确定时间进度安排,明确测试策略,测试风险分析。
3. 下一步就是需求分析。我们一般会用xmind罗列测试点。然后一般会开一到两次评审,主要是为了集思广益,确保更全面的罗列出测试点。
4. 然后就是写测试用例。根据罗列的测试点,写测试用例。一般都会有两轮的测试用例评审。第一轮评审完,修改完成之后,还再做第二轮评审。有时候还要根据第二轮的情况,决定还做不做第三轮的评审。目的是为了查漏补缺,让测试用例更好的覆盖测试点。
5. 接下来,下一步就是执行测试用例了。当然,开发要给到我们一个UT(user test)报告,我们才会开始测试的。先做一个冒烟,把主体业务流程跑一遍,做个评估,没问题的话,就开始执行测试用例:发现bug,提交bug,回归测试,以及写测试报告。我们是用禅道这个工具来对bug进行管理的。对bug的管理也比较简单。一般我们的bug是直接提交给开发的,他们修复完成之后,直接重新指派给我们,我们就做回归测试,通过的话就关闭,不通过就继续修复。
6. 然后就是写测试报告。我们测试人员,就是自己把自己的测试情况做总结。把留档的证据截图、自己模块的测试情况(发现了多少bug,修复了多bug,还有哪些没修复的等等)发给经理,他会做一个汇总。等bug修复完成了,经理就会把报告出出来。
7. 产品上线:一般会在半夜一两点的时候进行。因为这样的话就不会对客户的使用造成影响了。
8. 最后,我们会做一个测试总结。总结一下这个项目测试的情况,有没有遇到什么问题,下次应该如何避免,怎么解决等等。
83.接口测试流程:
接口测试的流程跟功能测试的流程是类似的。
首先要根据接口文档,对请求参数进行测试点分析,罗列测试点(用xmind),开评审会议,根据测试点写测试用例,测试用例评审,然后是执行测试用例。因为我们公司是用的postman这个工具,所以我们的测试用例都是在postman工具上执行的:
在上面输入参数和查看返回值。然后的话,一样是要做测试报告,然后是产品上线以及测试总结。
接口测试与界面功能测试的区别,一个是接口测试它是没有界面输入数据的地方的,所有的数据输入都是在postman工具上执行的。另外一个就是,功能测试针对的是功能点的实现情况来测试的。接口测试的话,针对的是请求参数来测试。
84.性能测试流程:
1.接到需求,先把接口功能调通 参数化(常用的参数化方法),关联(正则表达式),检查点(我们要检查哪些),看需不需要集合,如果这个接口依赖上一个接口,那么这个需要用到参数的传递,看接口需不需要用到cookie session等,请求头等
2.设置并发数和循环次数,线程组和循环控制器都有循环次数,可以用时间来控制,报错怎么处理,并发数太多了,如果PC机性能不够好,分布式部署(负载均衡)
3.查询接口的测试,要考虑db中表的数据量,一般保证10W左右数据量,造10W数据的目的是看这个查询sql语句有没有性能问题,插入数据使用存储过程造数据
4.我们性能测试最重要的是看聚合报告,聚合报告有很多参数,我最主要的是关注平均响应时间
5.结果分析(聚合报告,图形报告),分析的是报告,要看哪些指标
85.属于性能分析,看哪些指标,怎么分析
看报告的同时我们还有看服务器的硬件资源使用情况,cpu 内存,磁盘读写,网络 nmon(收集服务器的资源使用情况) top free (实时查看的命令,使用这个命令要边压测边看)
如果超过85%,要分析是哪一进程占用资源比较多,把进程名给开发,告诉开发占用资源(具体是哪一个资源)很高,改完之后我们要再压测一次
并发量很大(200),TPS上不去(平均响应时间上不去),响应时间比较长,但是app服务器和db服务CPU/内存都没上去(说明服务器资源很空闲,
代表我们的请求在排队,说明的的连接数太少了,(3种情况:1.db连接数,2.httpd连接数太少(apache中间件),3.你的请求没有发送到服务器,这个
原因要么是你的pc性能不行,网络带宽不够))。响应时间长,可能是db连接池过小,导致线程等待时间长。
并发量很大(200),TPS上不去(平均响应时间上不去),响应时间比较长,但是app服务器和db服务CPU/内存/磁盘读写很大,很高,性能瓶颈出现在服务器硬件问题
要看哪一个进程使用硬件资源比较大,把进程名给开发,告诉开发占用资源(具体是哪一个资源)很高,开发分析下,如果开发分析不出来了,并发数往下调
看硬件资源使用率在合理的范围之内后,我们的并发数和响应时间是多少,如果客户一定要求200并发,开发也尽力了,经过多天的技术攻克,都搞不定了
只能和老板,或者客户说加硬件资源
并发量很大(200),TPS上不去(平均响应时间上不去),响应时间比较长,但是app服务器和db服务CPU/内存都没上去,查看过了,连接数都没问题(1.db连接数,2.httpd连接数)
排除PC机,网络,服务器资源都没问题,最终的可能,就是代码问题
86.性能总结
1.做第一次压测 要保存报告
2.做性能调优(肯定是出了问题,才做调优) 比以前的报告的数据要好,服务器资源没有问题,在合理范围,就可以了
3.并发数,看你们公司业务使用情况,一般一个单个接口做80-100个并发足够了 响应时间快的0.几秒就返回,慢一点的是1.几秒
服务器都有两台的,注意:上面所述的硬件资源使用情况都需要看两台服务器的
APP服务器,数据库服务器
APP要调用数据库服务器,数据库服务器肯定提供了通道,这个通道就叫做连接池
查看连接池mysql sql语句:
SELECT ds.session_id,
ds.status,
Db_name(dr.database_id) AS database_name,
ds.login_name,
ds.login_time,
ds.host_name,
dc.client_net_address,
dc.client_tcp_port,
ds.program_name,
dr.cpu_time,
dr.reads,
dr.writes,
dc.num_reads,
dc.num_writes,
ds.client_interface_name,
ds.last_request_start_time,
ds.last_request_end_time,
dc.connect_time,
dc.net_transport,
dc.net_packet_size,
dr.start_time,
dr.status,
dr.command,
dr.blocking_session_id,
dr.wait_type,
dr.wait_time,
dr.last_wait_type,
dr.wait_resource,
dr.open_transaction_count,
dr.percent_complete,
dr.granted_query_memory
FROM Sys.dm_exec_requests dr WITH(nolock)
RIGHT OUTER JOIN Sys.dm_exec_sessions ds WITH(nolock)
ON dr.session_id = ds.session_id
RIGHT OUTER JOIN Sys.dm_exec_connections dc WITH(nolock)
ON ds.session_id = dc.session_id
WHERE ds.session_id > 50
ORDER BY ds.program_name
----用户连接数
SELECT login_name,
Count(0) user_count
FROM Sys.dm_exec_requests dr WITH(nolock)
RIGHT OUTER JOIN Sys.dm_exec_sessions ds WITH(nolock)
ON dr.session_id = ds.session_id
RIGHT OUTER JOIN Sys.dm_exec_connections dc WITH(nolock)
ON ds.session_id = dc.session_id
WHERE ds.session_id > 50
GROUP BY login_name
ORDER BY user_count DESC
87. 请说出一个你以前参与项目,对你测试经验提升很高的,具体是哪方面?
黑盒测试:把测试对象当成一个黑盒子,测试人员完全不考虑逻辑结构和内部特性,只依据程式的需求说明书来检查程式的功能是否满足它的功能说明。
白盒测试:把测试对象当成一个透明的盒子,允许测试人员利用程序内部逻辑结构及相关信息,设计或选择测试用例,对程式所有逻辑路径进行测试。
单元测试:白盒测试的一种,对软件设计中的单元模块进行测试。
集成测试:在单元测试的基础上,对单元模块之间的连接和组装进行测试。
系统测试:在所有都考虑的情况下,对系统进行测试。
验收测试:第三方进行的确认软件满足需求的测试。
答:1. 明确测试的目标,增强测试计划的实用性
2. 坚持“5W”规则,明确内容与过程,'what''why''when''where''how'
3. 采用评审和更新机制,保证测试计划满足实际需求
4. 分别创建测试计划与测试详细规格、测试用例
个人里有4个会说是自动化测试,3个会说性能测试,2个会说是管理,一个会说是白盒测试。并希望提供相应培训。只有极少数人能够说出具体的思路和技术项。
·
50%的人会说看过QTP的书(QTP的真正使用率已经快赶上诺基亚的使用率了!),并且没有真正在工作中使用过,然后就没有别的了。有少一半人最近几年一本技术书籍也没有看过。
判断是否满足覆盖率,以及方便交叉测试,及测试版本管理
1.测试工程师如何沟通
第一个话题
报 bug 的礼仪:
如果你委婉的说:嗨!哥们,你这个程序和预期结果不一致,你过来帮我看看是不是我使用的方法有问题,还是数据搞错了。他本能的会想,操,是不是出现 bug 了
第二个话题
需求沟通问题: 一定弄明白需求
你如果比如说这个要写数据到 A 系统,这个写的点怎么写的,我不清楚,老司机,来带我飞一下(幽默点),这个别人就好说了是吧,沟通起来心情也好了。
第三个话题:
用例评审:
这个话题很简单,给别人指出缺点时候,不要他坦率,要委婉点,例如用例步骤不清楚,你应该说,美女,这个有点不太清晰,我怕后面的人不知道怎么执行,你补下好点,不然后面估计有点麻烦,因为你这是在找茬,在找茬,所有委婉点好
第四个话题-问问题:
很多新进去的人,有很多问题要问,记住,问之前不管什么,例如业务,我先操作一遍,遇到点记下来,例如,别人发给你一个案例,先自己分析下,别一看到就懵逼,自己先摸索下,执行到哪一步,卡主了,再去沟通,这个时候,你沟通时候应该要有技巧,例如,fiddler 抓包,你抓不到包,你应该沟通时候讲,我手机和电脑都在一个局域网,而且手机的的 wifi 手工代理也配置了了,我检查了一遍,ip 我是配置对的,就是抓不到,这个时候别就给你分析,那么应该是 fiddler 里面的配置有问题,他会告诉你问题出在哪一块。
2.一般进公司后干什么?
1.刚刚进公司,你不是大爷,你要主动去问,去要,要什么呢,第一天,你进公司你要你们所有测试需要的环境信息,把测试需要的环境搭好,什么xshell,navicat,接口jmeter工具等,前台地址,密码,数据库的用户名密码都要过来,把他们的总结业务文档,svn地址等都要过来。
2.第二天,如果没有搭好,继续,但是一般一天半就够了,然后就是熟悉业务,如果公司给你立马分配需求,记住,我们要把这个需求相关的业务总结文档,如果这个业务有以前用例,这次需求只是优化,那么也向老司机要过来这些资料,先操作一遍业务,再熟悉需求。
3.注意时间点,例如,你需求分析几天,测试几天,什么时候转测试等,到点要把工作完成,如果发现完不成的,要接到任务第二天和测试老大沟通,因为老大最痛恨的是,你接了干不完,到后面时间快完了才说,你耍我是不是,大家应该都有这个体会
4.如果你很厉害,你业务搞定了,需求搞定了,我们是不是没事做了,记住,把你需求,用例再看一遍,完善用例,精益求精,你一进公司接到的都是简单的业务,不是核心模块,你要赶紧把核心模块的业务熟悉了,还有你总有遗漏的地方,和低级错误的地方,排版好不好,语句通顺不,这个别人看了你的用例,能不能看懂等,实在不行,学习充电都要加下班,例如你开始进去要确定你后面主要负责哪一块,然后你在这一块赶紧充电,不忙也要忙的样子
5.做事要仔细认真,IT最多的就是文档,做任何文档,你要想清楚给哪些人看,排版,说辞等都要注意,任何事都注意细节,有些事,都是细节打败了你,因为测试基本功就是仔细,认真,注意细节,很多bug都是出在细节不注意的地方,很多领导注意细节,我记得我在公司时候,开会的时候,有个人从来不怎么发言,但是每次领导都会问他怎么看,有没有好的意见,好比狄仁杰问李元芳怎么看,但是你们想过没有,因为李元芳的稳重,做事仔细认真,每次探案能抓出很多细节,能够给狄仁杰带来很多利益,所有才重视他。希望你也能做你们公司的李元
6.对人要尊重,对人要感恩,态度要诚恳,踏实,也就是和睦相处,谦虚请教,踏实学习,你要自己每天问下自己,这些你今天做到了么,感恩就是,你问了老司机这么多问题,别人教了你这么多,别一瓶水都舍不得给,问老司机问题,他说了你一次,你要虚心接受,因为他没有义务教你,他的工资不是你发的,教会了你,饿死了我,所以教你,都是他对你的恩赐,不要记仇,如果别人教了你很多,应该请别人吃一顿,这个花不了几个钱,对于你后面的发展来说,那是九牛一毛。
一、输入框 在一些需要命名,且名字应该唯一的信息输入重复的名字或ID,看系统有没有处理,会否报错,重名包括是否区分大小写,以及在输入内容的前后输入空格,系统是否作出正确处理. 1导航测试 十八、你这个项目做了多久?你觉得一个项目测多久就可以停止了? 我现在做的这个项目已经做了2个多月了,目前还在测试中,因为客户的需求有些变更,版本还在调整,估计还得继续测下去。 我觉得一个项目测多久要看他满足测试计划定义的停测标准,我之前做的几个项目,都是按照公司定义的停测标准执行,一般是如果有用例,则测试用例低级以上的用例都必须通过,低级的用例90%通过,并且缺陷库里Medium级别以上包括Medium的缺陷close,low级别的80%close,才停止测试。如果没有写用例,一般就是按照缺陷库的那个标准来执行。最近的一个项目测了5个版本还没结束呢,需求一致改,缺陷一直有,所有感觉确定不了多久能测完。 实际工作中,停测标准可能有更多,比如客户要求停止、项目经理要求停止,需求覆盖达到一定比例,建议大家就说上面的就行了。
1、字符型输入框:
(1)字符型输入框:英文全角、英文半角、数字、空或者空格、特殊字符“~!@#¥%……&*?[]{}”特别要注意单引号和&符号。禁止直接输入特殊字符时,使用“粘贴、拷贝”功能尝试输入。
(2)长度检查:最小长度、最大长度、最小长度-1、最大长度+1、输入超工字符比如把整个文章拷贝过去。
(3)空格检查:输入的字符间有空格、字符前有空格、字符后有空格、字符前后有空格
(4)多行文本框输入:允许回车换行、保存后再显示能够保存输入的格式、仅输入回车换行,检查能否正确保存(若能,检查保存结果,若不能,查看是否有正常提示)、
(5) 安全性检查:输入特殊字符串(null,NULL, ,javascript,,)、 输入脚本函数()、 doucment.write("abc")、hello)
2、数值型输入框:
(1)边界值:最大值、最小值、最大值+1、最小值-1
(2)位数:最小位数、最大位数、最小位数-1最大位数+1、输入超长值、输入整数
(3) 异常值、特殊字符:输入空白(NULL)、空格或"~!@#$%^&*()_+{}|[]\:"<>?;',./?;:'-=等可能 导致系统错误的字符、禁止直接输入特殊字符时,尝试使用粘贴拷贝查看是否能正常提交、word中的特殊功能,通过剪贴板拷贝到输入框,分页符,分节符类似 公式的上下标等、数值的特殊符号如∑,㏒,㏑,∏,+,-等、
输入负整数、负小数、分数、输入字母或汉字、小数(小数前0点舍去的情况,多个小数点的情况)、首位为0的数字如01、02、科学计数法是否支持1.0E2、全角数字与半角数字、数字与字母混合、16进制,8进制数值、货币型输入(允许小数点后面几位)、
(4)安全性检查:不能直接输入就copy
3、日期型输入框:
(1) 合法性检查:(输入0日、1日、32日)、月输入[1、3、5、7、8、10、12]、日输入[31]、月输入[4、6、9、11]、日输入[30] [31]、输入非闰年,月输入[2],日期输入[28、29]、输入闰年,月输入[2]、日期输入[29、30]、月输入[0、1、12、13]
(2)异常值、特殊字符:输入空白或NULL、输入~!@#¥%……&*(){}[]等可能导致系统错误的字符
(3)安全性检查:不能直接输入,就copy,是否数据检验出错?
4、信息重复:
二、搜索功能
若查询条件为输入框,则参考输入框对应类型的测试方法
1、功能实现:
(1)如果支持模糊查询,搜索名称中任意一个字符是否能搜索到
(2)比较长的名称是否能查到
(3)输入系统中不存在的与之匹配的条件
(4)用户进行查询操作时,一般情况是不进行查询条件的清空,除非需求特殊说明。
2、组合测试:
(1)不同查询条件之间来回选择,是否出现页面错误(单选框和多选框最容易出错)
(2)测试多个查询条件时,要注意查询条件的组合测试,可能不同组合的测试会报错。
三、添加、修改功能
1、特殊键:(1)是否支持Tab键 (2)是否支持回车键
2、提示信息:(1)不符合要求的地方是否有错误提示
3、唯一性:(1)字段唯一的,是否可以重复添加,添加后是否能修改为已存在的字段(字段包括区分大小写以及在输入的内容前后输入空格,保存后,数据是否真的插入到数据库中,注意保存后数据的正确性)
4、数据 正确性:
(1)对编辑页的每个编辑项进行修改,点击保存,是否可以保存成功,检查想关联的数据是否得到更新。
(2)进行必填项检查(即是否给出提示以及提示后是否依然把数据存到数据库中;是否提示后出现页码错乱等)
(3)是否能够连续添加(针对特殊情况)
(4)在编辑的时候,注意编辑项的长度限制,有时在添加的时候有,在编辑的时候却没有(注意要添加和修改规则是否一致)
(5)对于有图片上传功能的编辑框,若不上传图片,查看编辑页面时是否显示有默认的图片,若上传图片,查看是否显示为上传图片
(6)修改后增加数据后,特别要注意查询页面的数据是否及时更新,特别是在首页时要注意数据的更新。
(7)提交数据时,连续多次点击,查看系统会不会连续增加几条相同的数据或报错。
(8)若结果列表中没有记录或者没选择某条记录,点击修改按钮,系统会抛异常。
四、删除功能
1、特殊键:(1)是否支持Tab键 (2)是否支持回车键
2、提示信息:(1)不选择任何信息,直接点击删除按钮,是否有提示(2)删除某条信息时,应该有确认提示
3、 数据 实现:(1)是否能连续删除多个产品(2)当只有一条数据时,是否可以删除成功 (3)删除一条数据后,是否可以添加相同的数据(4)如系统支持批量删除,注意删除的信息是否正确 (5)如有全选,注意是否把所有的数据删除(6)删除数据时,要注意相应查询页面的数据是否及时更新 (7)如删除的数据与其他业务数据关联,要注意其关联性(如删除部门信息时,部门下游员工,则应该给出提示)(8)如果结果列表中没有记录或没有选择任何一条记录,点击删除按钮系统会报错。
如:某一功能模块具有最基本的增删改查功能,则需要进行以下测试
单项功能测试(增加、修改、查询、删除)
增加——>增加——>增加 (连续增加测试)
增加——>删除
增加——>删除——>增加 (新增加的内容与删除内容一致)
增加——>修改——>删除
修改——>修改——>修改 (连续修改测试)
修改——>增加(新增加的内容与修改前内容一致)
修改——>删除
修改——>删除——>增加 (新增加的内容与删除内容一致)
删除——>删除——>删除 (连续删除测试)
五、注册、登陆模块
1、注册功能:
(1)注册时,设置密码为特殊版本号,检查登录时是否会报错
(2)注册成功后,页面应该以登陆状态跳转到首页或指定页面
(3)在注册信息中删除已输入的信息,检查是否可以注册成功。
2、登陆 功能:
(1)输入正确的用户名和正确的密码
(2)输入正确的用户名和错误的密码
(3)输入错误的用户名和正确的密码
(4)输入错误的用户名和错误的密码
(5)不输入用户名和密码(均为空格)
(6)只输入用户名,密码为空
(7)用户名为空,只输入密码
(8)输入正确的用户名和密码,但是不区分大小写
(9)用户名和密码包括特殊字符
(10)用户名和密码输入超长值
(11)已删除的用户名和密码
(12)登录时,当页面刷新或重新输入数据时,验证码是否更新
六、上传图片测试
(1)文件类型正确、大小合适
(2)文件类型正确,大小不合适
(3)文件类型错误,大小合适
(4)文件类型和大小都合适,上传一个正在使用中的图片
(5)文件类型大小都合适,手动输入存在的图片地址来上传
(6)文件类型和大小都合适,输入不存在的图片地址来上传
(7)文件类型和大小都合适,输入图片名称来上传
(8)不选择文件直接点击上传,查看是否给出提示
(9)连续多次选择不同的文件,查看是否上传最后一次选择的文件
七、查询结果列表
(1)列表、列宽是否合理
(2)列表数据太宽有没有提供横向滚动
(3)列表的列名有没有与内容对应
(4)列表的每列的列名是否描述的清晰
(5)列表是否把不必要的列都显示出来
(6)点击某列进行排序,是否会报错(点击查看每一页的排序是否正确)
(7)双击或单击某列信息,是否会报错
八、返回键检查
1、一条已经成功提交的记录,返回后再提交,是否做了处理
2、检查多次使用返回键的情况,在有返回键的地方,返回到原来的页面多次,查看是否会出错
九、回车键检查
1、在输入结果后,直接按回车键,看系统如何处理,是否会报错
十、刷新键检查
1、在Web系统中,使用刷新键,看系统如何处理,是否会报错
十一、直接URL链接检查
1、在Web系统中,在地址栏直接输入各个功能页面的URL地址,看系统如何处理,是否能够直接链接查看(匿名查看),是否有权限控制,是否直接执行,并返回相应结果页;页面链接检查:每一个链接是否都有对应的页面,并且页面之间切换正确。可以使用一些工具,如LinkBotPro、File-AIDCS、HTML Link Validater、Xenu等工具。LinkBotPro不支持中文,中文字符显示为乱码;HTML Link Validater只能测试以Html或者htm结尾的网页链接;Xenu无需安装,支持asp、do、jsp等结尾的网页,xenu测试链接包括内部链 接和外部链接,在使用的时候应该注意,同时能够生成html格式的测试报告。如果系统用QTP进行,也可以使用QTP的页面检查点检查、自动化检查
2. 相关性检查:
Ø 功能相关性:删除/增加一项会不会对其他项产生影响,如果产生影响,这些影响是否都正确,常见的情况是,增加某个数据记录以后,如果该数据记录某个字段内容较长,可能会在查询的时候让数据列表变形。
Ø 数据相关性:下来列表默认值检查,下来列表值检查,如果某个列表的数据项依赖于其他模块中的数据,同样需要检查,比如,某个数据如果被禁用了,可能在引用该数据项的列表中不可见。
3. 检查按钮的功能是否正确:如新建、编辑、删除、关闭、返回、保存、导入,上一页,下一页,页面跳转,重置等功能是否正确。常见的错误会出现在重置按钮上,表现为功能失效。
4. 字符串长度检查: 输入超出需求所说明的字符串长度的内容, 看系统是否检查字符串长度。还要检查需求规定的字符串长度是否是正确的,有时候会出现,需求规定的字符串长度太短而无法输入业务数据。
5. 字符类型检查: 在应该输入指定类型的内容的地方输入其他类型的内容(如在应该输入整型的地方输入其他字符类型),看系统是否检查字符类型。
6. 标点符号检查: 输入内容包括各种标点符号,特别是空格,各种引号,回车键。看系统处理是否正确。常见的错误是系统对空格的处理,可能添加的时候,将空格当作一个字符,而在查询的时候空格被屏蔽,导致无法查询到添加的内容。
7.特殊字符检查:输入特殊符号,如@、#、$、%、!等,看系统处理是否正确。常见的错误是出现在% ‘ \ 这几个特殊字符
8. 中文字符处理: 在可以输入中、英文的系统输入中文,看会否出现乱码或出错。
9. 检查信息的完整性: 在查看信息和更新信息时,查看所填写的信息是不是全部更新,更新信息和添加信息是否一致。要注意检查的时候每个字段都应该检查,有时候,会出现部分字段更新了而个别字段没有更新的情况。
10. 信息重复: 在一些需要命名,且名字应该唯一的信息输入重复的名字或ID,看系统有没有处理,会否报错,重名包括是否区分大小写,以及在输入内容的前后输入空格,系统是否作出正确处理。
11. 检查删除功能:在一些可以一次删除多个信息的地方,不选择任何信息,按“delete”,看系统如何处理,会否出错;然后选择一个和多个信息,进行删除, 看是否正确处理。如果有多页,翻页选,看系统是否都正确删除,并且要注意,删除的时候是否有提示,让用户能够更正错误,不误删除。
12. 检查添加和修改是否一致: 检查添加和修改信息的要求是否一致,例如添加要求必填的项,修改也应该必填;添加规定为整型的项,修改也必须为整型.
13. 检查修改重名:修改时把不能重名的项改为已存在的内容,看会否处理,报错.同时,也要注意,会不会报和自己重名的错.
14. 重复提交表单:一条已经成功提交的纪录,返回后再提交,看看系统是否做了处理。对于WEB系统来说,可以通过浏览器返回键或者系统提供的返回功能。
15. 检查多次使用返回键的情况: 在有返回键的地方,返回到原来页面,重复多次,看会否出错。
16. 搜索检查: 有搜索功能的地方输入系统存在和不存在的内容,看搜索结果是否正确.如果可以输入多个搜索条件,可以同时添加合理和不合理的条件,看系统处理是否正确,搜索的时候同样要注意特殊字符,某些系统会在输入特殊字符的时候,将系统中所有的信息都搜索到。
17. 输入信息位置: 注意在光标停留的地方输入信息时,光标和所输入的信息会否跳到别的地方。
18. 上传下载文件检查:上传下载文件的功能是否实现,上传文件是否能打开。对上传文件的格式有何规定,系统是否有解释信息,并检查系统是否能够做到。下载文件 能否打开或者保存,下载的文件是否有格式要求,如需要特殊工具才可以打开等。上传文件测试同时应该测试,如果将不能上传的文件后缀名修改为可以上传文件的 后缀名,看是否能够上传成功,并且,上传文件后,重新修改,看上传的文件是否存在。
19. 必填项检查:应该填写的项没有填写时系统是否都做了处理,对必填项是否有提示信息,如在必填项前加“*”;对必填项提示返回后,焦点是否会自动定位到必填项。
20. 快捷键检查:是否支持常用快捷键,如Ctrl+C、 Ctrl+V、 Backspace等,对一些不允许输入信息的字段,如选人,选日期对快捷方式是否也做了限制。
21. 回车键检查: 在输入结束后直接按回车键,看系统处理如何,会否报错。这个地方很有可能会出现错误。
22.刷新键检查:在Web系统中,使用浏览器的刷新键,看系统处理如何,会否报错。
23.回退键检查:在Web系统中,使用浏览器的回退键,看系统处理如何,会否报错。对于需要用户验证的系统,在退出登录后,使用回退键,看系统处理如何;多次使用回退键,多次使用前进键,看系统如何处理。
24.直接URL链接检查:在Web系统中,直接输入各功能页面的URL地址,看系统如何处理,对于需要用户验证的系统更为重要。如果系统安全性设计的不好,直接输入各功能页面的URL地址,很有可能会正常打开页面。
25.空格检查:在输入信息项中,输入一个或连串空格,查看系统如何处理。如对于要求输入整型、符点型变量的项中,输入空格,既不是空值,又不是标准输入。
26.输入法半角全角检查:在输入信息项中,输入半角或全角的信息,查看系统如何处理。如对于要求输入符点型数据的项中,输入全角的小数点(“。”或“.”,如4.5);输入全角的空格等。
27.密码检查:一些系统的加密方法采用对字符Ascii码移位的方式,处理密码加密相对较为简单,且安全性较高,对于局域网系统来说,此种方式完全可以 起到加密的作用,但同时,会造成一些问题,即大于128的Ascii对应的字符在解密时无法解析,尝试使用“uvwxyz”等一些码值较大的字符作为密 码,同时,密码尽可能的长,如17位密码等,造成加密后的密码出现无法解析的字符。
28.用户检查:任何一个系统,都有各类不同的用户,同样具有一个或多个管理员用户,检查各个管理员之间是否可以相互管理,编辑、删除管理员用户。同时, 对于一般用户,尝试删除,并重建同名的用户,检查该用户其他信息是否重现。同样,提供注销功能的系统,此用户再次注册时,是否作为一个新的用户。而且还要 检查该用户的有效日期,过了有效日期的用户是不能登录系统的。容易出现错误的情况是,可能有用户管理权限的非超级管理员,能够修改超级管理员的权限。
29.系统数据检查:这是功能测试最重要的,如果系统数据计算不正确,那么功能测试肯定是通不过的。数据检查根据不同的系统,方法不同。对于业务管理平台,数据随业务过程、状态的变化保持正确,不能因为某个过程出现垃圾数据,也不能因为某个过程而丢失数据。
30.系统可恢复性检查:以各种方式把系统搞瘫,测试系统是否可正常迅速恢复。
31.确认提示检查:系统中的更新、删除操作,是否提示用户确认更新或删除,操作是否可以回退(即是否可以选择取消操作),提示信息是否准确。事前或事后提示,对于Update或Delete操作,要求进行事前提示。
32.数据注入检查:数据注入主要是对数据库的注入,通过输入一些特殊的字符,如“’”,“/”,“-”等或字符组合,完成对SQL语句的破坏,造成系统 查询、插入、删除操作的SQL因为这些字符而改变原来的意图。如select * from table where id = ‘ ’ and name = ‘ ’,通过在id输入框中输入“12’-”,会造成查询语句把name条件注释掉,而只查询id=12的记录。同样,对于update和delete的操 作,可能会造成误删除数据。当然还有其它一些SQL注入方法,具体可以参考《SQL应用高级SQL注入.doc》,很多程序都是基于页面对输入字符进行控 制的,可以尝试跳过界面直接向数据库中插入数据,比如用Jmeter,来完成数据注入检查。
33.刷新检查:web系统中的WebForm控件实时刷新功能,在系统应用中有利有弊,给系统的性能带来较大的影响。测试过程中检测刷新功能对系统或应 用造成的影响(白屏),检查控件是否回归默认初始值,检查是否对系统的性能产生较大影响(如每次刷新都连接数据库查询等)。
34.事务检查:对于事务性操作,断开网络或关闭程序来中断操作,事务是否回滚。
35.时间日期检查:时间、日期验证是每个系统都必须的,如2006-2-29、2006-6-31等错误日期,同时,对于管理、财务类系统,每年的1月 与前一年的12月(同理,每年的第1季度与前一年的第4季度)。另外,对于日期、时间格式的验证,如2006年2月28日、2006-2-28、 20060228等。日期检查还要检查日期范围是否符合实际的业务,对于不符合时间业务的日期,系统是否会有提示或者有限制
36.多浏览器验证:越来越多的各类浏览器的出现,用户访问Web程序不再单单依赖于Microsoft Internet Explorer,而是有了更多的选择:Maxthon、Firefox、Tencent Traveler等,考虑使用多种浏览器访问系统,验证效果。
37.安装测试:对于C/S架构的系统,安装程序的测试是一个重要方面,安装程序自动化程度、安装选项和设置(验证各种方案是否都能正常安装)、安装过程中断测试、安装顺序测试(分布式系统)、修复安装及卸载测试。
38.文档测试:主要是对用户使用手册、产品手册进行测试,校验是否描述正确、完整,是否与当前系统版本对照,是否易理解,是否二义性等。
39.测试数据检查:事实告诉我们,测试数据比代码更有可能是错的,因此,当测试结果显示有错误发生的时候,怀疑代码错误前要先对测试数据检查一遍。
40.请让我的机器来运行:在某些项目中,出现一个病态的问题:系统没有问题呀,它在我的机器上是能够通过的。这就说明了其中存在着和环境相关的BUG。 “是否所有的一切都受到了版本控制工具的管理?”、“本机的开发环境和服务器的环境是否一样?”、“这里是否存在一个真正的BUG,只不过是在其他的机器 里偶然出现?”。所有的测试必须在所有系统要求的机器上运行通过,否则的话,代码就可能存在问题。
41.Ajax技术的应用:Ajax有很多优点,但也有很多缺点,如果利用优点、避免缺点,是我们对新的Web2.0应用的一个挑战。而Ajax的应用最 直接的问题就是用户体验,用户体验的效果直接关系到是否使用Ajax技术。“会做,并不意味着应该做、必须做”,这就是对Ajax技术的很重要的注解。
42.Ajax技术的应用:Ajax采用异步调用的机制实现页面的部分刷新功能,异步调用存在异常中断的可能,尝试各种方法异常中断异步的数据调用,查看是否出现问题。在这里遇到的一个问题就是对日期控件的操作,已经如果页面数据较多的时候的刷新。
43.脚本错误:随着Ajax、IFrame等异步调用技术的发展,Javascrīpt技术也越来越受到开发人员的重视,但Javascrīpt存在调试困难、各浏览器存在可能不兼容等问题,因此在Web系统中,可能会出现脚本错误。同时,脚本错误造成的后果可大、可小
十二、界面和易用性测试
1、风格、样式、颜色是否协调
2、界面布局是否整齐、协调(保证全部显示出来的,尽量不要使用滚动条
3、界面操作、标题描述是否恰当(描述有歧义、注意是否有错别字)
4、操作是否符合人们的常规习惯(有没有把相似的功能的控件放在一起,方便操作)
5、提示界面是否符合规范(不应该显示英文的cancel、ok,应该显示中文的确定等)
6、界面中各个控件是否对齐
7、日期控件是否可编辑
8、日期控件的长度是否合理,以修改时可以把时间全部显示出来为准
9、查询结果列表列宽是否合理、标签描述是否合理
10、查询结果列表太宽没有横向滚动提示
11、对于信息比较长的文本,文本框有没有提供自动竖直滚动条
12、数据录入控件是否方便
13、有没有支持Tab键,键的顺序要有条理,不乱跳
14、有没有提供相关的热键
15、控件的提示语描述是否正确
16、模块调用是否统一,相同的模块是否调用同一个界面
17、用滚动条移动页面时,页面的控件是否显示正常
18、日期的正确格式应该是XXXX-XX-XX或XXXX-XX-XX XX:XX:XX
19、页面是否有多余按钮或标签
20、窗口标题或图标是否与菜单栏的统一
21、窗口的最大化、最小化是否能正确切换
22、对于正常的功能,用户可以不必阅读用户手册就能使用
23、执行风险操作时,有确认、删除等提示吗
24、操作顺序是否合理
25、正确性检查:检查页面上的form, button, table, header, footer,提示信息,还有其他文字拼写,句子的语法等是否正确。
26、系统应该在用户执行错误的操作之前提出警告,提示信息.
27、页面分辨率检查,在各种分辨率浏览系统检查系统界面友好性。
28、合理性检查:做delete, update, add, cancel, back等操作后,查看信息回到的页面是否合理。
29、检查本地化是否通过:英文版不应该有中文信息,英文翻译准确,专业。
十三、兼容性测试
兼容性测试不只是指界面在不同操作系统或浏览器下的兼容,有些功能方面的测试,也要考虑到兼容性,
包括操作系统兼容和应用软件兼容,可能还包括硬件兼容
比如涉及到ajax、jquery、javascript等技术的,都要考虑到不同浏览器下的兼容性问题。
十四、链接测试
主要是保证链接的可用性和正确性,它也是网站测试中比较重要的一个方面。
可以使用特定的工具如XENU来进行链接测试。
导航描述了用户在一个页面内操作的方式,在不同的用户接口控制之间,例如按钮、对话框、列表和窗口等;或在不同的连接页面之间。通过考虑下列问题,可以决 定一个Web应用系统是否易于导航:导航是否直观?Web系统的主要部分是否可通过主页存取?Web系统是否需要站点地图、搜索引擎或其他的导航帮助?
在一个页面上放太多的信息往往起到与预期相反的效果。Web应用系统的用户趋向于目的驱动,很快地扫描一个Web应用系统,看是否有满足自己需要的信息, 如果没有,就会很快地离开。很少有用户愿意花时间去熟悉Web应用系统的结构,因此,Web应用系统导航帮助要尽可能地准确。
导航的另一个重要方面是Web应用系统的页面结构、导航、菜单、连接的风格是否一致。确保用户凭直觉就知道Web应用系统里面是否还有内容,内容在什么地方。
Web应用系统的层次一旦决定,就要着手测试用户导航功能,让最终用户参与这种测试,效果将更加明显。
2图形测试
在Web应用系统中,适当的图片和动画既能起到广告宣传的作用,又能起到美化页面的功能。一个Web应用系统的图形可以包括图片、动画、边框、颜色、字体、背景、按钮等。图形测试的内容有:
(1)要确保图形有明确的用途,图片或动画不要胡乱地堆在一起,以免浪费传输时间。Web应用系统的图片尺寸要尽量地小,并且要能清楚地说明某件事情,一般都链接到某个具体的页面。
(2)验证所有页面字体的风格是否一致。
(3)背景颜色应该与字体颜色和前景颜色相搭配。
(4)图片的大小和质量也是一个很重要的因素,一般采用JPG或GIF压缩,最好能使图片的大小减小到30k以下
(5)最后,需要验证的是文字回绕是否正确。如果说明文字指向右边的图片,应该确保该图片出现在右边。不要因为使用图片而使窗口和段落排列古怪或者出现孤行。
通常来说,使用少许或尽量不使用背景是个不错的选择。如果您想用背景,那么最好使用单色的,和导航条一起放在页面的左边。另外,图案和图片可能会转移用户的注意力。
十五、业务流程测试(主要功能测试)
业务流程,一般会涉及到多个模块的数据,所以在对业务流程测试时,首先要保证单个模块功能的正确性,其次就要对各个模块间传递的数据进行测试,这往往是容易出现问题的地方,测试时一定要设计不同的数据进行测试。
十六、安全性测试
(1)SQL注入(比如登陆页面)
(2)XSS跨网站脚本攻击:程序或数据库没有对一些特殊字符进行过滤或处理,导致用户所输入的一些破坏性的脚本语句能够直接写进数据库中,浏览器会直接执行这些脚本语句,破坏网站的正常显示,或网站用户的信息被盗,构造脚本语句时,要保证脚本的完整性。
(3)URL地址后面随便输入一些符号,并尽量是动态参数靠后
(4)验证码更新问题
(5)现在的Web应用系统基本采用先注册,后登陆的方式。因此,必须测试有效和无效的用户名和密码,要注意到是否大小写敏感,可以试多少次的限制,是否可以不登陆而直接浏览某个页面等。
(6)Web应用系统是否有超时的限制,也就是说,用户登陆后在一定时间内(例如15分钟)没有点击任何页面,是否需要重新登陆才能正常使用。
(7)为了保证Web应用系统的安全性,日志文件是至关重要的。需要测试相关信息是否写进了日志文件、是否可追踪。
(8)当使用了安**接字时,还要测试加密是否正确,检查信息的完整性。
(9)服务器端的脚本常常构成安全漏洞,这些漏洞又常常被黑客利用。所以,还要测试没有经过授权,就不能在服务器端放置和编辑脚本的问题。
十七、性能测试
1连接速度测试
用户连接到Web应用系统的速度根据上网方式的变化而变化,他们或许是电话拨号,或是宽带上网。当下载一个程序时,用户可以等较长的时间,但如果仅仅访问一个页面就不会这样。如果Web系统响应时间太长(例如超过5秒钟),用户就会因没有耐心等待而离开。
另外,有些页面有超时的限制,如果响应速度太慢,用户可能还没来得及浏览内容,就需要重新登陆了。而且,连接速度太慢,还可能引起数据丢失,使用户得不到真实的页面。
2负载测试
负载测试是为了测量Web系统在某一负载级别上的性能,以保证Web系统在需求范围内能正常工作。负载级别可以是某个时刻同时访问Web系统的用户数量, 也可以是在线数据处理的数量。例如:Web应用系统能允许多少个用户同时在线?如果超过了这个数量,会出现什么现象?Web应用系统能否处理大量用户对同 一个页面的请求?
3压力测试
负载测试应该安排在Web系统发布以后,在实际的网络环境中进行测试。因为一个企业内部员工,特别是项目组人员总是有限的,而一个Web系统能同时处理的请求数量将远远超出这个限度,所以,只有放在Internet上,接受负载测试,其结果才是正确可信的。
进行压力测试是指实际破坏一个Web应用系统,测试系统的反映。压力测试是测试系统的限制和故障恢复能力,也就是测试Web应用系统会不会崩溃,在什么情况下会崩溃。黑客常常提供错误的数据负载,直到Web应用系统崩溃,接着当系统重新启动时获得存取权。
压力测试的区域包括表单、登陆和其他信息传输页面等。
备注:
1、负载/压力测试应该关注什么
测试需要验证系统能否在同一时间响应大量的用户,在用户传送大量数据的时候能否响应,系统能否长时间运行。可访问性对用户来说是极其重要的。如果用户得到 “系统忙”的信息,他们可能放弃,并转向竞争对手。系统检测不仅要使用户能够正常访问站点,在很多情况下,可能会有黑客试图通过发送大量数据包来攻击服务 器。出于安全的原因,测试人员应该知道当系统过载时,需要采取哪些措施,而不是简单地提升系统性能。
1)瞬间访问高峰
如果您的站点用于公布彩票的抽奖结果,最好使系统在中奖号码公布后的一段时间内能够响应上百万的请求。负载测试工具能够模拟X个用户同时访问测试站点。
2)每个用户传送大量数据
网上书店的多数用户可能只订购1-5书,但是大学书店可能会订购5000本有关心理学介绍的课本?或者一个祖母为她的50个儿孙购买圣诞礼物(当然每个孩子都有自己的邮件地址)系统能处理单个用户的大量数据吗?
3)长时间的使用
如果站点用于处理鲜花订单,那么至少希望它在母亲节前的一周内能持续运行。如果站点提供基于web的email服务,那么点最好能持续运行几个月,甚至几 年。可能需要使用自动测试工具来完成这种类型的测试,因为很难通过手工完成这些测试。你可以想象组织100个人同时点击某个站点。但是同时组织 100000个人呢。通常,测试工具在第二次使用的时候,它创造的效益,就足以支付成本。而且,测试工具安装完成之后,再次使用的时候,只要点击几下。
采取措施:采用性能测试工具WAS、ACT,LR等协助进行测试
十八、测试中应该注意的其他情况
1、在测试时,与网络有关的步骤或者模块必须考虑到断网的情况
2、每个页面都有相应的Title,不能为空,或者显示“无标题页”
3、在测试的时候要考虑到页面出现滚动条时,滚动条上下滚动时,页面是否正常
4、URL不区分大小写,大小写不敏感
5、、对于电子商务网站,当用户并发购买数量大于库存的数量时,系统如何处理
6、测试数据避免单纯输入“123”、“abc“之类的,让测试数据尽量接近实际
7、进行测试时,尽量不要用超级管理员进行测试,用新建的用户进行测试。测试人员尽量不要使用同一个用户进行测试
8、提示信息:提示信息是否完整、正确、详细
9、帮助信息:是否提供帮助信息,帮助信息的表现形式(页面文字、提示信息、帮助文件),帮助信息是否正确、详细
10、可扩展性:是否由升级的余地,是否保留了接口
11、稳定性:运行所需的软硬件配置,占用资源情况,出现问题时的容错性,对数据的保护
12、运行速度:运行的快慢,带宽占用情况你可能感兴趣的:(测试面试--简答类)