网站建设友汇,做一个网站需要哪些,网站建设捌金手指下拉四,app市场调研报告一般来说bug大多数存在于3个模块#xff1a;
1、前台界面#xff0c;包括界面的显示#xff0c;兼容性#xff0c;数据提交的判断#xff0c;页面的跳转等等#xff0c;这些bug基本都是一眼可见的#xff0c;不太需要定位#xff0c;当然也不排除一些特殊情况#xf… 一般来说bug大多数存在于3个模块
1、前台界面包括界面的显示兼容性数据提交的判断页面的跳转等等这些bug基本都是一眼可见的不太需要定位当然也不排除一些特殊情况本身数据传过来的时候就有问题所以显示会出问题的情况这个后面会说到。
2、后台程序包括前台调用的接口中间层缓存和转发数据定时任务脚本异步处理数据程序之间的相互调用等等而这些bug往往都是不可见的有可能在功能上体现也有可能隐藏的深处不易发现这时候就要通过一些辅助工具以及人工的判断去定位了。
3、数据库包括表中缺少字段字段定义错误字段长度限制数据重复等等这些bug需要通过数据库工具以及一些基本的数据库查询语句来定位当然前提是要对每个表每个字段甚至每一个值代表什么意思有一定的了解一些常用的重要的表字段值就可以了。
排除一些显而易见以及可以直接判断的bug很多不容易判断的bug该如何定位呢?
这就需要借助一些工具来一个个排除了也许还是会觉得雨里雾里那么就举一个常见的例子来讲解
比如在提交正常的表单发生了错误导致提交失败那么如何从定位呢
1、首先要打开抓包工具然后提交正常的表单看是调用后台接口的时候传的参数是否和之前填写的一致比如表单填的是数字而接口需要传的是字符串那么就是前台传的问题如果一致说明不是前台问题继续往下查。
2、需要一方面继续看抓包的数据接口返回的错误是什么如果能明确看到错误原因的消息也就定位到问题如果不能看到则要继续连接测试服务器查看日志看是程序处理到哪一步有问题
3、如果从程序的角度发现没问题那继续往下查看是否连接的数据库不对亦或是超过数据库字段限制的长度等等。就这样追寻着程序执行的轨迹一步一步去排查最终基本都能定位到问题。
1、web前端
Web前端就是通常说的网页。互联网公司的前端一般包含如下内容JavaScript、ActionScript、CSS、HTML(..ML)、Flash、交互式设计、视觉设计web前端测试可能发现的问题——版面设计、交互设计、文字、性能、功能bug定位通用思路现象--原因--验证手段--结论--现象 测试bug定位原因归类 测试环境相关 是否安装了flash及flash的版本——可能导致部分页面显示出问题目前常用的版本诶flash10是否开启了浏览器插件——插件可能导致浏览器行为的变化除非测试要求否则一律禁用插件是否开启了安全软件——可能会截包、弹窗拦截、防钓鱼等浏览器相关 不同浏览器的支持标准——不同内核的浏览器对js及各种标准的支持不同因此页面解析出来的效果可能不同。IEtridentFirefoxgeckoChromewebkitSafariwebkit。浏览器的设置——禁用js禁用弹窗禁用cookie等浏览器cache策略——jscss图片等都有可能被cache住。ctrlF5强制刷新请求cookie——跨域过期网络相关 是否发出了正确的请求——请求url、参数变量。content数据是否得到了正确的应答——http的返回值200-正确302-对象已移动304-对象未修改404-没有找到页面。返回的数据体是否性能问题——异步请求的数量过多网速过慢字符编码相关 页面乱码——百度后端存储基本是使用的GBK编码前端提交可能是UTF-8编码后端对于非GBK编码一般采用实体存储。可能出现编码没有转换。转换的时候没有判断半个汉字转掉了半个汉字导致雪崩。url错误——url路径中汉字编码使用的是utf-8编码参数中使用系统默认编码flash脚本中使用的都是uft-8编码。安全相关 Xss漏洞——输入一些特定字符页面出现错乱或有恶意代码被执行RD未对特殊字符转义完整性能相关 图片数量——页面中同一个域的图片的数量控制在16个以下IE会控制同一个域下图片并行的下载数量页面抖动——异步请求的数量过多加载失败——限速情况下超时bug定位常用工具 Firefox——firebug、web developer、live http headers、http foxIE插件——httpwatch第三方工具——fiddler慢速网模拟工具——firefox throttle
2、web后端
后端包含运行在服务器上的程序脚本和服务。比如各种各样的逻辑处理系统数据存储系统等。后端可能发现的问题——逻辑的数据的策略的接口的性能的等测试bug定位原因归类 数据流相关 上下游模块是否连接正常——模块的ip和端口的配置白名单黑名单配置session授权模块的数据发送接收是否正常——日志是否有滚动是否显示发送了数据或接收到数据数据是否完整跨机房负载均衡算法从哪些机器获取到的数据 非socket的数据传输——共享内存是否分配key的配置等cache是否创建脏数据等数据库配置连接表触发器存储过程文件大小访问权限 模块之间的接口——协议的一致性mcpack1mcpack2等字段的一致性一个按signed解析一个按unsigned解析字段复用处理逻辑相关 程序的各种配置——功能是否开启/关闭词表是否加载各种阈值的配置超时配置程序日志——日志级别交互的流程处理的流程各种边界——数据边界intlong文件边界空文件分文件的边界时间边界各种资源癿使用——Cache是否遗留脏数据并发和死锁系统和环境相关 系统资源——Cpuio句柄内存网络状态数据库状态数据库连接数环境资源——程序版本内核版本网络(外网)访问权限系统动态库不一致程序和代码相关(常用验证手段) 确认问题出现的位置——日志中的代码行gdb中的代码行抛出异常显示的代码行获取当时的运行时信息——Gdb core文件gdb attach到进程查看堆栈查看寄存器设置breakpointwatchpoint查看内部数据获取程序和系统信息——Strace查看系统调用系统状态获取pstop/proc/pid/*vmstatnetstat更深入的手段——反汇编查看寄存器gdb高级应用后端测试bug定位 日志查看命令 查看压力——tail -f as.log | grep ^NOTICE | awk {print $3} | uniq -c排除日志中的特定内容——grep -v pattern as.log只输出感兴趣的内容——grep -o proctime:toal:\d as.loggrep -o proctime:toal:\d as.log | grep -o \d grep -o proctime:toal:\d as.log | grep -o \d | sort -n | uniq -c将wf日志归类——grep -o \w\.(cpp|h):\d as.log.wf | sort | uniq -cgdb常用命令 bt——查看堆栈信息print——打印某变量值break——设置断点x/i——翻译当前指令为汇编info thread——查看所有线程星号*标记的是当前线程thread num——切换到线程号为num的线程set scheduler -locking on——锁定在线程输入continue命令以后当前线程继续执行其它线程不执行set scheduler-locking off——这是默认设置输入continue命令以后所有线程都继续执行
3、性能测试
旨在获取系统在特定一种或多种环境下在不同的外部输入压力(包含极限)的条件下的系统各项指标的测试常用命令 进程相关——pstop/proc/pid/*系统相关——vmstat,top,iostat,sar,df,lsof网络相关——netstatbug定位原因归类 压力工具相关 工具的功能和性能——能否达到预期压力启劢压力的机器性能压力工具是否有异常连接关闭压力工具如何处理异常长连接短连接并发的个数工具运行环境——压力机器的带宽是否跨机房被测系统相关 机器性能——系统所在机器性能机器网络带宽机器的内存sd卡硬盘系统本身——系统的下游模块的性能系统的配置系统的数据量系统的特点状态充cachedumpmerge系统的部署程序的bug环境相关 操作系统相关—— 是否和线上一致内核版本刷脏页时间有没有调用directIO查看系统状态——Ps,top,/proc/pid/*, vmstat,netstat
正确的思路丰富的业务知识丰富的技术背景知识较好的调试和开发能力 强大的bug定位能力Bug定位的过程是能力提升的过程
Bug定位的过程也是境界提升的过程 B站最牛的Python接口自动化测试进阶教程合集真实企业项目实战