web手工测试的经验总结.doc
《web手工测试的经验总结.doc》由会员分享,可在线阅读,更多相关《web手工测试的经验总结.doc(20页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、web手工测试的经验总结web手工测试的经验总结web手工测试的经验总结前言本文主要是阐述个人的web手工黑盒测试的工作经验测试目的测试并不仅仅是为了找出错误,通过分析错误产生的原因和错误的分布特征,可以帮助项目管理者(开发人员)发现当前所采用的软件过程的缺陷,以便改进;从而提高软件的质量,更体现了测试的重要性。工作经历1、工作环境介绍09年3月刚入职,也是项目初建阶段,项目组6个人在一个小房间,5台台式机1个人用笔记本(领导);2张桌子比较挤,工作的地方是比较简陋;刚开始熟悉需求,然后是和同事一起部署项目,不过就是看看表结构,学习下怎么把数据入库Oralce数据库,后台Oracle存储过程开
2、发,在前台配置业务指标配置展现,给用户做个什么小需求等等,都是琐碎的事。不过项目初建比较累,加班较多,事情也多,大概到8、9月份才开始正常上下班。10年过完年大概3月份左右吧,二期的项目要测试(公司给我们项目组划了一片办公地方,挺好的),项目组人手不够,老大让我转测试,问我同不同意,我想了想自己的工作内容比较杂,专注一件事情也是好事,就同意了!开始真正的测试工作。然后老大从别个项目组调了一个有测试经理级别的人,过来协助测试,我跟着他学习了一点东西。比如测试用例的撰写,用户验收UAT用例和测试报告的输出。记得他说过做测试要细心,提出的bug要跟踪,注意页面的美观性,按钮、字体大小、字体颜色,风格
3、要保存一致等,虽然他教的少,不过还是挺感谢滴!二期项目上线之后,测试工作告一段落,我又恢复了以前的工作,没有了测试工作就做业务需求开发写写Oracle存储过程,前台配置展现,维护下测试环境和线上的环境等等。做了测试之后感觉自己挺喜欢这行滴,因为工作的事情比较杂想学不到什么东西,个人想专注测试,2022年动摇了要离职的念头,不过老大找我谈了好几次话,也主动给我加了工资,就留下了,遇到这种老大,挺不容易的,对我们组员很好。11年项目三期测试;输出测试策略,按照计划的时候输出相应的文档,比如测试用例的输出,然后全员参加用例评审(开发、测试和PM),会上提出用例的不足或者、与需求不符或者不完善的地方;
4、修改了之后发送PM,通过后执行测试。测试的时候每天晚上邮件反馈当天的工作进度,采用迭代测试的形式测试,测试环境我自己维护,一轮测试完成后,开发把bug修复完成,在提供一个发布包,然后验证,没有新bug产生后,就输出一份系统测试报告和缺陷报告(针对开发人员)。如果客户要求做压力测试,需要输出一个压力测试方案(包括场景、测试模块、测试环境等),当然方案也要评审,评审通过后开始LoadRunner压力测试,测试完成后输出压力测试报告。然后是一个用户验收UAT测试用例的输出。最后上线完成。并输出一个上线总结文件!在工作期间带了3个新同事,Ta们3个都不同,也许是刚开始接触测试,慢慢的成长!有一个女同事
5、很.我给她定了个学习系统和业务的计划,人家自己不做反而在那里看开发的代码,问她的时候她也总是没问题,偷懒很严重,如果她不是女生就和老大说不用她了介绍下以前公司的测试流程:查看全文请点击下载:-844176.html2.4数据验证1)前后台数据一致:前台正确录入信息保存后,后台数据库相对应的表正常记录(与前台输入一致)比如:注册一个用户信息提交成功后,用户表users中是否正常保存了当前的录入信息。2)存储过程验证:oracleF8编译通过,F8执行后对应的数据表正常录入数据,无锁表现象(当目标表B表从另外一长表A表取值,当A表数据过大时要借助临时表,避免死锁、耗费资源的现象)2.5根据开发习惯
6、找错误1)同一个开发人员开发的模块,在不同的模块犯了错误,其他的模块也有类似的错误比如A开发人员主要负责用户、权限模块,在测试用户模块时发现用户名可以重复,现象用户名重复:注册了两个相同的帐号,但是用户状态不同,一个是不可用状态,一个是可用状态,但是登录的时候两个都不能登录,提示“帐号不可用”。然后再去验证权限模块,角色名称也可以重复,看似小问题,但对于用户来说可能就是大问题了,因为正常状态的用户不能登录。所以开发人员的习惯也是不能忽视的!2.6LR压力测试选择好录制协议,录制脚本,根据需要添加事物和集合点,使用参数化,设置runtime-setting,在场景执行的时候注意观察主机CPU和内
7、存使用率。个人观点1)立项前的需求分析很重要,与开发人员的沟通也很重要;对需求理解程度越深,对开发的思想理解越透彻,撰写的测试用例就越全面,漏测的几率也会减少。2)关注用户的需求,注重细节,尽可能找出系统中隐藏的缺陷。3)总结测试过程中发现的问题,做好漏测记录,避免相同的错误发生。扩展阅读:Web开发经验总结1,不要认为Struts已经过时了,也不要盲目的去追随JSF以及更新的MVC框架,在目前Struts仍旧是最为优秀的MVC框架,尤其是后来与Spring、Hibernate(或者Ibatis)的结合,使得Struts的应用得到了进一步的发展,也许你认为Webwork2、SpringMVC或
8、者JSF更为优秀和实用,那么也没有关系,其实只要对你或你的公司适用,那么就可以了。2,你知道Javascript中的typeof和instanceof操作吗,如果不知道,劝你还是看看这方面的知识吧,typeof返回的是对象的类型,例如string、number、object等等,而instanceof判断的是一个对象是否是某个类的实例,例如:vararr=newArray();vartype=typeof(arr);/返回objectvarflag=arrinstanceofArray;/返回truevarflag2=arrinstanceofObject;/返回true;在实际使用过程中,你
9、会发现instanceof是更为强大的,当然了许多时候typeof用起来很方便,但是对于复杂的场合typeof就不太适用了,尤其是对于自定义对象以及对象之间有着复杂的继承关系时,使用instanceof可以方便的对这些进行判断。3,虽然你可能知道javascript中typeof的用法,但是如果你不能做对下面的题,说明你对typeof的理解还是不够的,例如:vara;varrs=typeof(a);/请问rs的值是什么?(A)object(B)variable(C)undefined(D)string(E)null(F)以上答案全不正确如果你选择A还算对JS有一些了解,如果选择B则基本上是乱猜
10、的,如果选择D什么也说明不了,如果选择E则说明你对于Java和Javascript有些东西还没有分清楚,选择F也是不正确的。答案是C,记住在Javascript之中,如果一个变量没有初始化,那么该变量的类型为undefined。4,也许你一直在抱怨Javascript之中没有列表、哈西表以及堆栈、队列等数据结构,如果真的在抱怨,那么也不是你的错,毕竟包括我自己在内,我们对JS的了解太少了,其实在JS之中,数组对象自身完全支持上面的那些数据结构,例如:varlist=newArray();/列表list0=a;list100=b;varmap=newArray();/哈西表map001=a;ma
11、pusername=zhangsan;varstack=newArray();/堆栈,即后进先出stack.push(a);stack.pop();varqueue=newArray();/队列,即先进先出queue.unshift(a);queue.shift();可见JS是非常强大的,关键是我们知道的太少了,关于Javascript对于数组的操作,你也可以参考Javascript对数组的操作。5,作为一个web开发人员,我们不能指望美工在完成漂亮的效果图之后,还要为我们将图切分,最后生成html文件后再给我们,然后我们对这些html文件,再修改转换为jsp、asp或者php文件。我一直认为
12、效果图的切分应该或者最好由我们程序员自己来做,因为美工做的效果图实际上是要应用到我们的产品或者项目中的,而具体的产品和项目,对效果图中哪些部分是需要输入文字的,哪些地方是需要背景的,哪些地方是需要可以自动伸缩的,而哪些地方又是必须保证大小的,是有很严格的要求的,尤其是我们的产品或项目中如果使用了类似sitemesh等的模板技术,那么切图的工作就更要由我们自己来做了。这样并不是说美工不需要懂得html、css等技术,也不是说美工切出的图,会不符合我们的要求,我们知道,一张效果图,可以有n种切法,但是要能够满足实际的需求,往往只有一种最合适的切法,而这个切法一般来说美工是不太清楚的,开发人员也是不
13、清楚的,只有既是开发人员,又懂得美工切图的人,才能够找到最为合适的切分方法,而这样的人才是非常奇缺的!6,不要过于痴迷Ajax技术,也不要过于追捧web2.0这个时髦的词汇,并不是说什么东西粘上ajax或者web2.0,就能够火起来或者对我们的实际发展有利的,如果你是做公网网站的,那么要注意,不合适的ajax使用,会使得网站被搜索引擎收录的信息大幅度减少,但是ajax或者Flex2等技术对于用户体验而言,还是相当不错的,因此是否使用ajax等技术,一要看对你们的解决方案宣传是否有作用,另外一点就是要看,它是否真正的改进了我们的应用。7,对于ajax的post提交方式,可能你有些问题要问,例如p
14、ost的方式是不是只要在open时指定method就可以了,为什么我将大数据放到url后面,而没有被完全传递过去,为什么我后台使用类似jsp中的request.getParamter方法接收不到数据,我们通过一个例子看一下ajax发送/接受大数据的方式:1)send.jsp:(我举的例子使用的是Javascript开源框架JsJava的ajax类库,该类库对IE和Firefox等的XMLHttpRequest等对象进行了易用性的封装,不像prototype.js默认对传递的数据进行urlencode编码)varajaxRequest=newAjaxRequest();ajaxRequest.s
15、etRequestMethod(post);ajaxRequest.setRequestURL(ajaxresponse.jsp);ajaxRequest.setAsync(true);ajaxRequest.setMethodOnSuccess(onSuccess,ajaxRequest);ajaxRequest.setRequestHeader(Content-Type,application/x-www-form-urlencoded;charset=utf-8);ajaxRequest.send(content=这是一篇几千字的文档.在此省略);要注意设置发送方式为post,设置头信息
16、的内容类型为application/x-www-form-urlencoded,charset是否设置要看内容的编码情况,另外大数据就放到send之中,记住大数据不是放在url的参数之中的。2)receive.jspInputStreamstream=request.getInputStream();InputStreamReaderisr=newInputStreamReader(stream);BufferedReaderbr=newBufferedReader(isr);Stringstr=br.readLine();System.out.println(str);br.close();
17、要知道,对于ajaxpost方式提交的数据,在服务器端如果是jsp不是简单使用getParameter就能取得到的,需要从输入流中去取,这和附件上传有些类似的地方。当然要注意编码和解码的问题。8,我们在界面中经常会通过setTimeout方法来实现定时或者异步操作,例如:setTimeout(myfunc,2022);/两秒后执行myfunc函数但是要注意setTimeout方法并不能阻止后面js代码逻辑的执行,例如:vara=8;setTimeout(myfunc,3000);document.write(wait.);上面的代码中,document.write(wait.);逻辑并不会等到
18、3秒后才执行,而是立即执行的,其实这一点可能大部分开发人员都知道,但是如果不注意,就很容易犯下面的错误,如下面代码所示:varajax2HasExecuted=false;varajaxRequest1;functionajax1Func()if(!ajax2HasExecuted)setTimeout(ajax1Func,200);vartext=ajaxRequest1.getResponseText();.varajaxRequest2;functionajax2Func()vartext=ajaxRequest2.getResponseText();.ajax2HasExecuted=
19、true;上面的代码是一个页面中同时发送了两个ajax异步请求,分别有两个对应的接收操作,而业务逻辑要求,这两个操作是要有先后顺序的,其中第一个接收操作,需要等待第二个接收操作完成之后,才能进行处理,于是第一个操作中就采用setTimeout的方式,本意是在执行第一个操作的开始的地方,先判断第二个操作是否已经执行完毕,如果没有执行完毕,则等待200毫秒后,重新执行第二个操作,然后由于setTimeout并不能组织后续的逻辑继续执行,所以实际上不管第二个操作是否完成,第一个操作都会一直往下执行下去,从而导致业务上的错误。解决方法要么是在if后面加上else,或者在setTimeout之后直接re
20、turn,例如:if(!ajax2HasExecuted)setTimeout(ajax1Func,200);return;9,window.open和window.showModalDialog方法相信你已经用到过许多次了,但是总是出现这样或那样的问题,问题主要是以下几个方面:1)showModalDialog这个函数名经常被写错,例如经常被写成showModelDialog,使得不能执行打开窗口的操作。2)控制打开窗口的属性,例如尺寸、滚动条、菜单、状态栏等,是我们经常会碰到的情况,但是我们经常会将这两种打开方式的属性名称以及属性之间的分隔符混用,使得属性执行不正确,例如我举下面的例子,要
21、求弹出一个宽200高300的窗口,你看哪些方式是对的?(A)window.open(about:blank,width=200,height=300);(B)window.open(about:blank,width:200,height:300);(C)window.open(about:blank,width=200;height=300);(D)window.open(about:blank,width:200;height:300);(E)window.showModalDialog(about:blank,dialogWidth:200px;dialogHeight:300px);(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- web 手工 测试 经验总结
限制150内