前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【探索测试篇】探索无界,BUG无限,让程序猿头疼的测试技术

【探索测试篇】探索无界,BUG无限,让程序猿头疼的测试技术

作者头像
王大力测试进阶之路
发布2019-10-25 17:42:43
1.8K0
发布2019-10-25 17:42:43
举报
文章被收录于专栏:橙子探索测试橙子探索测试

探索无界,BUG无限

一、修改系统时间

当功能模块中存在倒计时、计时器、时间,与时间有关系时,尝试修改系统时间,测试系统时间是否参与计算,修改系统时间是否会影响到倒计时、计时、时间等与时间有关系的模块

例:1小时后秒杀商品,修改系统时间到1小时后,测试是否可以下单

二、断网、断网重连、服务器断开

1、断网,操作功能流程,是否报错、闪退、卡死、异常显示问题

2、断网重连,app内,测试功能是否可正常使

3、断网,进入app,重连网,测试部分接口是否未重新调用,导致功能数据缺失

4、服务器断开功能使用检测

三、弱网

模拟网络弱网场景(4g网络、地铁、机场、地下室、室外等)

弱网状态,重复提交操作,会导致接口调用错乱、业务重复调用、业务出错等BUG

弱网状态,测试响应超时导致的接口报错等

弱网状态,测试延迟导致的页面交互错乱等

弱网状态,测试接口超时,导致的前后端异常问题(状态变更错误、数据加减错误)

1、弱网下客户端要传参数给服务器。 例如:请求参数是index = 0 ,拿到服务器响应,我们就index++。若服务器500,我们下次请求,必须还 是index = 0,所以我们要做 --index,用减去1返回值发请求。如果不幸写成index--,很不幸,bug就来了, 因为此时index = 1。 2、网络异常,测试客户端重试策略,只有在弱网下才能看到效果。 例如:客户端经常做一种处理,请求对象发送返回失败,客户端会重试,请求必须是异步进行的,此时可 能会出现重试失败,仍然一直在发请求,重试策略有问题,如果是服务器爆了,你一直重试发请求,app 绝对被爆………… 3、开源网络框架,也许经不住弱网 例如:现在Android的http开源框架天多了,公司多数都会用这些二次封装的框架,类似于okHttp、volley, 用的比较多一些,免不得在弱网环境下,抛异常。就因为请求是在工作线程进行的,所以……,并发不是所 有人都能玩的转的,很容易出现bug。 4、弱网环境下,网络连接失败,抛异常 例如:弱网迟迟没有返回响应,此时网络连接抛异常,可能会没处理,响应实例对象没有拿到,是个null, 又没处理,又要抛异常………… 5、弱网环境下,ui可能出现问题 例如:网络请求还在异步进行中,一般UI我们都会有进度条告知用户,没有拿到响应后,我们要更新ui,提 示用户网络连接失败等等文案,此时可能会出现问题,View没有同步成功,或者忘记gone掉进度条…… 6、网络请求失败策略之用户主动再次发出请求 例如:弱网下,请求失败(抛出异常),提示用户重试再次发出请求,用户点击重试再次发出请求,此时 处理可能会出现问题

四、推送

1、已登录账号,删除app重装,进入登录页面,register_id未清空会收到推送

2、已登录账号,登录信息失效,踢出到登录页面,register_id未清空,会收到推送

3、已登录账号,账号再其它地方登录,踢出到登录页面,register_id未清空,会受到推送

五、修改请求参数、修改响应内容

1、用户购买会员的金额可以通过修改请求里的金额,进行购买---原因:后端的代码没有将拿到的用户的金额和实际的金额进行对比,再去发出下一步的支付流程。

余额1元,购买2元商品,修改请求金额为2元,测试是否可购买成功

余额1元,购买2元商品,修改请求金额为0.1元,测试是否可购买成功

2、实名认证请求:https://m.kaola.com/member/activity/valid/nameAuth.html,只需将请求里Response里code修改为:unknown200,以及将success的值修改为true,然后将这个请求发出去之后,我们的刷子用户就可以成功绕过这个围墙了,去购买参加我们试用会员了,从而可以享受我们的7天会员96折价格

六、并发

1、余额1元,并发提现1元100次,测试成功提现多次

2、创建订单A,对订单A进行并发100次付款,测试付款成功多次

3、抽奖系统,每人可抽一次,并发抽取100次,测试可抽取多次

4、1个红包、2个红包时,同用户并发提现100次,不同用户并发提现100次

七、越权

1、登录权限越权

token失效、账号被踢出,使用创建订单、充值、付款功能,对token检验进行测试

2、业务逻辑越权

<1>业务状态越权

新建的订单、已付款的订单、已发货的订单、已收货的订单、已完成的订单、已评价的订单,进行付款操作测试

<2>业务终结越权

已实名认证成功,再次实名认证、再次实名认证其它身份证

<3>业务上下层越权

已实名认证,进入提现业务,库里改状态为未未实名认证,提现检测

<4>业务资源占用越权

A身份证被A用户占用,B用户绑A身份证检测

3、垂直越权未授权功能

主管有修改权限,客服有查看权限,主管账号更换为客服账号,进行修改操作测试

4、水平越权其它用户、团队资源

通过修改URL链接上的参数来进行一些非对应账号信息的查看和操作。

例1:修改URL上的订单号为别人的,查看、修改、删除、评价、操作别人的订单进行测试

例2:修改URL上的订单参数为不存在的,查看、修改、删除、评价、操作别人的订单进行测试

例3:主管有修改权限,A团队主管修改B团队成员信息

5、非归属关系越权

例:转移会员给已锁定的BD,转移成功,应不可转移

八、重复提交

重复提交业务会处理多次,业务逻辑会错乱

例1:新建订单、每次签到、领取奖励,重复提交多次,导致业务创建多次检测

例2:实名认证成功,业务结束,再次实名认证,业务处理检测

九、假设法

1、假设列表字段为0、空、null值、超长、超大,测试异常、报错、溢出问题

2、假设因为BUG导致绑定了别人的卡,提现测试

3、假设列表数据10w条,大量数据测试

4、假设接口返回跳转链接字段空,点击跳转,APP闪退,需异常处理

接口应该返回:

{"code":0,"msg":"成功","data":{"status":true,"url":"http:\/\/activity-h5.st1.test.lanxinka.com\/interview-report?target=watch_c&id=JyNHWjwVbm"}}

但是返回:{"code":0,"msg":"成功","data":{"status":true,"url":""}}

5、假设页面1接口还未返回数据时,进入页面2,页面2需用到接口字段,会报错

例:页面1是商品列表,点商品进入商品详情页面,进入商品伤情页面需传商品id

解决:页面1还未加载完成时,无法拿到商品id,前端判断,无法进入商品详情

6、假设页面接口字段还未返回时,触发页面功能,导致出错

例:接口返回手机号字段,显示到页面上,点拨打电话,可拨打电话

解决:前端还未拿到手机号字段时,不显示拨打电话按钮或点拨打电话,弹出提示

十、内存溢出、内存泄露

1、内存泄露,长时间操作功能或模块,感觉越来越卡、越来越慢,测试内存泄露问题

2、内存溢出,长时间操作功能或模块,感觉越来越卡、越来越慢,直至报错、闪退等问题,测试内存溢出问题

3、操作功能,观察内存使用情况,测试后端代码是否存在内存泄露问题

十一、超时、失败、接口异常报错

超时

1、接口响应超时,测试超时后的处理

因网络慢、服务器压力大、数据量大,导致处理时间过长超时,调用支付中心,业务方失败,支付中心处理成功,钱已发出去

例1:发佣金2000条,点审核通过,处理结果为发送失败(应该是超时了),但支付中心处理成功,实际金额已发到用户账户

2、前端请求超时,测试超时后的处理

3、第三方系统维护中,测试维护中处理

4、服务器断开,测试功能使用的异常处理

失败

1、失败结果处理

充值失败,冲入和冲出账户回退检测

接口异常报错

1、接口报错500,前端处理检测

2、接口返回格式错误,前端处理检测

3、接口未获取到数据,前端处理检测

十二、SQL、代码注入

1、表单类注入

登录时SQL是这样:select * from user where username='chengzi' and password=md5('123456');

我们现在需要构建一个比如:在用户名输入框中输入: ’ or 1=1#,密码随便输入,这时候的合成后的SQL查询语句为:

select * from user where username='' or 1=1 #' and password=md5('123456');

等价于

select * from user where username='' or 1=1;

就可以登录成功了

2、url传参注入

首先应测试是否存在注入漏洞,简单的:’ 或 and 1=1 and 1=2之类的SQL语句。

如果没有检测,直接运行SQL语句,说明有机会注入。

举例:

从参数注入,简单的测试方法是:

① http://www.xxx.com/index.php?id=2

② http://www.xxx.com/index.php?id=2' and 1=1

③ http://www.xxx.com/index.php?id=2' and 1=2

可以注入的表现:

① 正常显示(这是必然的,不然程序就有错)

② 正常显示,内容基本与①相同

③ 提示BOF或EOF(程序没做任何判断时)、或提示找不到记录(判断了rs.eof时)、或显示内容为空(程序加了on error resume next)说明未进行特殊字符过滤处理,存在SQL注入漏洞

3、代码注入

提交死循环代码,测试是否进行过滤处理

<script> for(i=0;i<1;i--) { alert("msg") } </script>

十三、安全测试—短信轰炸

危害:

1、批量给用户发100w条短信,造成用户骚扰和公司短信费用损失

2、批量给非正常手机号码发短信

语预防方案:

1、对手机号做验证,正确的手机号才可发短信成功

2、同一个手机号不能连续获取短信验证码,如设置1分钟仅允许使用1次

3、同一手机号,一天设置最大发送验证码次数,如同一手机号一天最多发十条

4、设置每日总成功短信上限

5、当同一个手机号码或者ip重复连续不断发起请求时,将手机号码或者ip拉黑处理

十四、多触点控

1、测试页面交互错乱问题

十五、接口status字段

1、接口各种status,功能页面显示检测

2、接口各种status,操作功能提示信息检测

十六、数据初始化修复

1、因表结构发生变化原因,老数据需做初始化修复

2、因表版本功能变更原因,老数据需做初始化修复

3、因操作失误原因,老数据需做初始化修复

4、因BUG原因,老数据需做初始化修复

十七、接口字段(一般不能删减)或字段值,修改、删减

1、新版本原字段检测

2、新版本原字段值检测

十八、未来状态/不存在的关联传参

1、如果status有1:招聘 2:非招聘

考虑0和3测试,程序如何处理的?是否会=<1统一处理成招聘,>=2统一处理成非招聘,如果这样处理了,下个版本如果加了status 3:急招,新版本后端先上线,app审核阶段,0会显示招聘,3会显示非招聘,这样是错误的,所以当时就应该非1和2,统一处理为不存在的状态

2、支付不存在的订单号检测

十九、优选资源少校验

因为优先校验资源少的,校验不通过,避免校验资源大的,造成服务器资源浪费消耗

例如:手机号和验证码登录,优先校验验证码是否正确,再校验用户登录信息是否正确,如果验证码不正确,避免用户信息查询校验

二十、外部事件

断网、断网重连、关闭定位权限、关闭通知、关闭相机相册权限、关闭电话权限

电话、短信、视频、重启手机

安卓(返回键、清缓存、清数据、转移应用)

IOS(锁屏、HOME)

持续更新——————————————————————————————

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-07-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 橙子探索测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 探索无界,BUG无限
相关产品与服务
访问管理
访问管理(Cloud Access Management,CAM)可以帮助您安全、便捷地管理对腾讯云服务和资源的访问。您可以使用CAM创建子用户、用户组和角色,并通过策略控制其访问范围。CAM支持用户和角色SSO能力,您可以根据具体管理场景针对性设置企业内用户和腾讯云的互通能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档