说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

Web应用程序完全测试指南

HTML文档下载 WORD文档下载 PDF文档下载
大量的优质应用逐渐提升了用户的品味,也降低了用户的容忍度,如果你的Web应用无法使用户满意,那么很快会有其他应用来代替。这要求开发者从各方面对其进行测试,以便让用户在使用过程中不会出现各种各样的问题。

随着Web技术和移动互联网的发展,越来越多的应用被迁移到了云端,这也使得用户可以随时随地使用它们。目前大量的优质应用,逐渐提升了用户的品味,也降低了用户的容忍度,如果你的Web应用无法使用户满意,那么很快就会有其他的应用来代替。

对于开发者来说,建立良好的客户口碑才是最有意义的事情。在完成了Web应用的设计和开发工作后,并不意味着你就可以直接发布了,你还需要从各方面来对其进行测试,以便让用户在使用过程中,不会出现各种各样的问题,比如性能、使用体验、安全问题等等。


那么对于Web应用来说,该测试哪些方面,该如何测试呢?来看看作者 Abhimanyu Ghoshal给出的这些建议。

一、首先应该测试什么?

当测试Web应用的时候,首先要明确你的应用要用来做什么,比如帮助用户编辑照片、发送票据、联系朋友或跟踪社交媒介等。你通常需要着眼于这四大领域:

1.  功能性测试

几乎所有的用户都期望自己所使用的Web应用功能准确、迅速、一致。这就意味着开发者必须精益求精,帮助用户实现某种形式上的结果。下面是一些需要全面测试的常见的功能元素:

  • 表单:无论是反馈调查、创建任务计划,还是订阅新闻,都需要用到表单。你需要检查提交操作是否正常,是否能够提交连接并提交到你的数据中,所有字段是否能够接收输入的内容。
  • 文件操作和计算:这其中涉及图像和文档的上传、编辑、计算功能和正确的输出值。首先,要确保你能想象得到会有多少用户会使用你的应用,并尽可能地针对他们进行调节。另外,要考虑一下如何使你的App更有效地计算并显示出结果,给用户提供一个更加流畅的用户体验。
  • 搜索:如果你的应用允许用户搜索内容、文档或文件,那么就要保证你的搜索引擎能够索引这些信息,并定期更新,以便能够让用户实现快速查找,并根据查找条件快速显示相关结果。
  • 媒体播放组件:测试音频、视频、动画和互动媒体播放组件(如游戏和图形工具)的时候,这些组件应该像预期的功能效果一样,在加载和运行的时候不能影响(暂停或减缓)其他应用的运行。
  • 脚本和类库:确保你的脚本(比如图像显示或Ajax页面加载)在各种浏览器之间是相互兼容的,因为不同的用户可能会使用不同的浏览器访问你的应用,同时你可以测量不同浏览器的加载时间来进行性能优化。如果你的脚本只能和某些浏览器相互兼容,那么就要确保应用中的其他组件有更好的性能,这样所有的用户就能得到最好的应用体验。

最后,就是要全面检查其他组件的功能,包括提示系统、用户配置文件和管理仪表板等。

2.  用户界面和可用性测试

你的Web应用不但要像加满油的机器一样运行,还要能够为所有的用户提供一个高质量的前端体验。为了达到这个目标,你还需要考虑你的用户可能会遇到的所有的视觉和文本元素方面的问题,在Web应用发布之前,尽可能地测试这些元素,以确保它们正确而有效地显示。


  • 导航:主页面上的导航链接以及返回主页面的链接都应该明显的突出出来,并指向正确的目标页面。
  • 可访问性:尽最大可能的确保你的Web应用易于操作、使用,哪怕是对那些有视力障碍或行为障碍的人来说,简易的使用步骤是最受欢迎的。W3C有一篇文章 《Web Content Accessibility Guidelines》能够帮助你很好的定义这一点,并指出了如何让你的Web应用在广大用户群里成为“用户友好型”的应用。
  • 跨浏览器测试:用户很有可能会从多种浏览器和操作系统中访问你的站点,不要让你的应用在不同的环境下无法显示同样的效果,所以你需要尽可能多地测试这些浏览器和操作系统组合,以确保你的Web应用能够按照计划运行,为更广泛的用户提供一致的体验。
  • 错误消息和警告信息:在很多情况下,你的Web应用在某种程度上一定会崩溃,但这不是你的错。你所要做的就是:当用户遇到例如404页或无法成功上传资料的问题的时候,要确保应用程序中显示的消息是描述性的、对用户来说对解决问题是很有帮助的。
  • 帮助和文档:并不是所有的用户在使用你的Web应用时都能感觉很顺畅,有些用户在刚开始的几次可能需要帮助;而其他人即使是很熟悉这款产品,也可能在使用该过程中会遇到一些问题。这时候你需要做的事是运行你的应用,检查文档,确保在任何模块或页面中都有渠道让用户快速获得帮助信息。
  • 布局:测试你的Web应用以确保它能够在尽可能多的浏览器和不同分辨率的屏幕中正确、一致地显示。

你还可以继续检查一下所有的动画和交互操作(例如拖放特性和模态窗口)、字体和字形(尤其是Web字体)。当然,还有前端性能(页面渲染速度、图片和脚本加载时间)等。

3.  安全性测试


大多数Web应用都会从用户那里获取并储存数据,包括用户的个人信息、计费信息和工作/个人文件——这些数据都是用户在信任你的应用安全性的基础上才会输入的,所以你的Web应用应该做到下面这几点:

  • 对私人数据进行加密
  • 在授予访问权限之前坚持进行身份验证,并对数据访问进行限制
  • 确保数据完整性,尊重用户的要求

黑客可以在任何时间任何地方攻击你的应用,但是,如果你能熟悉Web应用漏洞的种类以及黑客常用手段的话,那这也是一个很好的避免被攻击的好方法。攻击Web站点和应用的方法通常包括:

  • 跨站脚本:当一个网站被以诱骗的方式接受了恶意代码,它就会向用户传播这个恶意代码。
  • SQL注入:如果黑客通过一个用户输入漏洞运行一段SQL命令,就可能导致用户数据遭到损坏或被窃。这些情况通常发生的原因是:Web应用允许在SQL命令或系统命令中使用特殊元素。
  • DDoS(分布式拒绝服务)攻击:当一个Web应用无法呈现给用户的时候,通常它会向服务器发出大量请求,会逐渐拖慢服务器并导致最终无法响应。

另外就是一定要对常见的、容易引起安全漏洞的编程错误进行测试,它们可能会让你的Web应用存在潜在的危险。这些常见的编程错误包括:缺少认证检查、使用硬编码凭证、没有加密敏感数据、没有锁定Web服务器目录访问。

除了对上面所述的内容进行测试以外,你还可以寻求正义的安全专家的帮助,或者是寻找一些专门针对安全测试的自动化工具。

4.  加载测试

当你的Web应用的用户人数从10个增加到100个的时候,速度肯定是会慢下来的。另外,你还可能会发现,在某一天、某一月或者是某一个时刻,流量会剧增,这有可能是因为你的优惠政策吸引了病毒,或者是你的App出现在了某著名刊物上了,引来了众多的用户。

在加载测试环节,需要测试你的应用和服务器环境,以确保在不管有多少用户登录的情况下产品都能够顺利运行。大多数高质量的Web主机都提供了实时的、大范围的问题解决方案,所以在购买主机的时候一定要货比三家。

二、如何测试你的应用

测试是构建Web项目不可分割的一部分,你需要通过一个系统化的方法来最大化有限时间和资源的使用。下面所列举的就是测试一个典型的Web应用所涉及到的步骤。

1. 设定目标

在大多数情况下,测试是一个有时限的检验过程,尤其是当Web应用准备发行的时候,这也就是为什么要考虑哪些功能需要优先测试。例如,如果你正在构建一个允许用户创建在线商店的App,你可能会优先测试支付网关连接这一功能,之后才会测试文本对齐问题。

目标优先不仅可以帮助你确保你的应用的主要功能完备,还可以让你在正确的方向上为整个开发团队制定清晰的计划流程表。

2. 定义流程和使用案例

在开始测试Web应用之前,为你和你的团队制定一个合理的流程非常重要。先收集所有可用的文档,和你的测试人员分享一下观点。接下来,设想多个用户在使用你的应用时可能会遇到的场景,比如应用在使用过程中崩溃了该怎么办。

一定要设置一个bug跟踪工具,测试人员可以用它来报告问题,开发人员和设计人员可以用它来识别和修复bug。

3. 设定一个测试环境

在测试你的Web应用之前,要将它部署在跟上线后的环境一致的服务器上,这样才能测试出各种真实使用情况下的问题。

有些问题在本地服务器上是测试不出来的。例如,在一个地图Web应用上,地图中大量的SVG图像可能需要很长时间的加载过程,如果移动用户使用你的应用,会导致他陷入困境,无法获知前进的路线。

4. 真实的单元测试

Flow项目(一个致力于在线任务管理和协作的应用)的QA专家Jeremy Petter表示:

在大多数的Web应用测试过程中,困难是难以想象的,有可能要花一个星期的时间进行测试。不过也有捷径,那就是将整个App分解成可管理的几个块进行测试。
在Flow项目中我使用一个列表来标记每个用户在应用中进行交互的位置,以及它的一般形式和功能。因为这是一个模块化列表,你可以添加或删除一些项目,或者对在开发过程中发生变化的项目进行标注。


5. 验证你的代码

为了提供一个清洁、无错的用户体验,你应该对代码进行验证,并确保它是建立在Web标准基础之上的。这样做不仅能增加跨浏览器兼容性,而且还能提升Web应用的性能。

6. 加载测试和性能调优

测试你的Web应用和它的运行环境是否能经得起巨大的流量和激增的带宽需求,并寻找可能会导致App性能问题的瓶颈。同时,你也可以考虑使用一些网上服务来监控用户流量、服务器利用率和因代码引起的问题,对App进行一些相应的微调,以提高App的速度和效率。

7. 安全性测试

最后,测试你的Web应用以确保它能够对抗得了黑客的恶意攻击。从基本的应用可用性和正常运行时间开始进行测试,直到用户数据的完整性测试结束为止。

三、对于测试的两个小建议

测试过程中,首先要考虑把用户放在第一位,在测试之前要彻底想清楚用户会怎么使用这个Web应用。设身处境的把自己放在用户的角度上思考一下,这会对制定切合实际的开发设计场景很有帮助。

Jeremy Petter对测试人员的建议是:

测试是注重细节的工作,需要高度集中注意力。而且最富有成效的测试过程发生在第一个小时或者是刚开始的时候,所以,在测试的时候最好是按照规定的时间开始/关闭项目,以便测试人员的注意力和效率达到最大化。

原文: A comprehensive guide to testing your Web app(编译薛梁)

【问底】王帅:深入PHP内核(一)——弱类型变量原理探究 谷歌Kubernetes专访:未来BigTable开发只是课后习题 首届“最具价值CTO”评选来啦!我们在找你! 【CTO俱乐部走进顺丰总部】活动图文直播进行中 中国第一个云主机评测发布:天翼云性价比第一、青云质量第一 Ruby 2.1.3发布,降低内存消耗、修复众多Bug! OpenHW2014开源硬件总决赛鏖战西安 AMD力推异构计算 《坦克世界:闪电战》:PC转手游,不止免费! 【讲师】道里云毛文波:网络虚拟化与SDN实现Docker连通 性能测试:SequoiaDB vs. MongoDB vs. Cassandra vs. HBase 华云数据推运营型PaaS Plus平台,联合Tmax走出“去IOE”的云化之路 聚焦移动新势力 MDCC 2014免费展位团队名单公布 详解Google Authenticator工作原理 云计算的乐高玩具,Docker从根本上改变应用程序开发 【先锋】eSage缔造异构虚拟化管理技术,做数据中心核心思想执行者 Uplinq2014:亲身体验Vuforia与智能眼镜设备 MDCC 2014 移动开发者大会议程全面揭晓! 顺丰模式:物流行业“互联网化”的科技之路 移动应用云服务工具APICloud宣布完美适配iPhone6 从应用分发到能力开放 华为开发者联盟沙龙上的共赢理念 SOOMLA框架:移动游戏分分钟创建个虚拟商店 Facebook:如何让应用适合所有系统、带宽以及屏幕 Docker实践者不能错过2014 Container技术大会的九大理由!(讲师议题全面揭晓) 2014全球云计算大会中国站(CC China)精彩集锦 腾讯X5浏览服务正式开放 30多款APP成为首批受益者 Node.js设计经验谈 LeanKanban University首位中国认证讲师路宁:看板会为更多国内企业带来深刻变革 环信IM沙龙纪实:无分享不IM,无社交不未来 【工具推荐】ESL:更简洁、更高效的标准加载器 【先锋】亲加通讯云:以云服务模式为App提供社交引擎 2014中国移动开发者大调查第一批获奖名单大曝光 请问如何添加备注字段,用sql server建表,有一备注字段为text类型。。。。。。。。。。。 函數啊﹐怎么么搞的?氣死人了。一百求救。 关于数据库的问题 生命游戏问题!!!!那位大哥指点迷津 VB做的免费软件,大家随便下载!给我提点建议也行! RichEdit问题,急!!! 关于IF语句。我是新手我理解不了请高手帮我,谢谢 请问oricle 有没有像sql server 2000 的企业管理器一样的工具? 关于richedit的问题! 誰能告訴我﹐我給他發又發(88分求找) asp.net就没有什么不足吗? 问题:高级程序员的《数据结构》该怎么复习?请有经验的人给指个明路,多谢! 如何将中文文件存入数据库?是文件,不是表单,谢谢!! 怎样才能得到CDialogBar的控件(如Button)的消息及消息处理 子数据窗口中为什麽filter条件不起作用?急急!!在线等!!!! 菜鸟来了! 怎么把Demo_Adhoc分到两台机上运行 数据库更新 how to 用 insert into 把一个.zip文件保存进数据库?? 请大家推荐一个CD机吧!!!! 急,NOTES与SQL SERVER的问题 asp实例 我的Access库文件原来大小是6.78M,我清空所有记录和减少很多记录时,为什么大小没改变? 关于delphi动态加载控件,在线 代人提问:请问.dcu文件是干什么的?如何才能生成该类型文件。 怎么响应Enabled属性 asp.net做网页,运行后,<asp;....></asp:...>字段仍然存在?? 请教VB高手们一个高难问题! 请问,存储过程在VC如何调用,用ADO,ODBC。 怎么实现这个SQL? 没事瞎问~~~黑客软件能走向海外吗?(比如扫描器,键盘记录器,木马等) windows protect --error ,我装不了系统啊 DbEdit里的数据用adoquery如何更新才好? 有没有办法调试存储过程? 我是个菜鸟,请教大家,VC++和C++ Builer的优点和缺点。 请问如何改变显示文本的颜色? delphi 6 的补丁包 浏览器为NS6时如何获取屏幕分辨率? 如何控制 ValueListEditor ?有一个Help这样写道: 各位斑竹请进来,紧急求救呀!!!!! 是否可以把用asa建的数据库转变为access? 在java中如何压缩和解压文件夹? 如何在运行期把最大化,最小化按钮灰掉!? 求一句广告词 请教一个毕业设计的问题,关于在c++buileder中OLe对象调用:怎么样把word中的表格导入到数据库 请问如果在首页中加入一个论坛的登陆对话框? 这样的IIS错误信息,是什么意思,怎么解决? 问一下,vb怎么连接数据库呀`~(access)有代码吧~~给分呀` 如何画箭头? C#进行嵌入式开发,方便吗? 她为什么看上我??! 氢气还原氧化铜注意事项题目是这样的氢气_____出_____归,酒精灯______到______退 电解池中电子是从电源负极流出还是从阳极流出 电源的作用是电源内部不断的使正极聚集————,负极聚集————以持对外供电.,是一道填空题 哈,————为所填的空,希望各位人士给小女帮帮忙```~一道物理题,明天要交,摆脱了! 氢气还原氧化铜 电解池阳极是铜片,阴极是铂片,反应一段时间后,反接电源反接后,铂片上的铜溶解掉之后,铂片为什么不能继续溶解,电镀至铜片上?铂的放电顺序不是在铜前面吗? 电源的作用是在电源内部不断地使正极聚集什么,负极聚集什么 电解水时()发生了改变,分解成(),这些()又重新组合成新的().这个变化属于()变化 甲醇与高锰酸钾与硫酸生成二氧化碳和硫酸锰和硫酸钾和水的反应方程式 电源的作用是在电源内部把电子由负极不断地搬运到正极,从而保持两极之间有稳定的电势差.这句话对吗 在电解水的反应中什么发生了变化?什么没有改变 高锰酸钾和硫酸和碳酸钾反应生成硫酸锰和硫酸钾和水的方程式配平 电源内部电子在外场力作用下由正极移向负极吗 氧化汞 氯酸钾 氧化镁 氩气 的化学式分别是什么?谢谢! 硫酸锰和过硫酸钾发生氧化还原,生成高锰酸钾,硫酸钾,和硫酸,怎么配平? 1.把一只电阻R1接到某电源上,此时电路中的电流为0.3A ,若在电路裏并联一只30欧姆 ,此时乾路电流为1.2A 求电源电压和电阻R1的阻值 .. 分析化学中,反相—液相色谱,流动相极性越小分离度怎么变化? 硫酸锰(MnSO4)和过硫酸钾(K2S2O8)两种盐溶液在银离子催化发生氧化还原反应,生成高锰酸钾,硫酸钾和硫酸1.写出并配平化学方程式2.反应中的还原剂和氧化还原产物分别是?3.若该反应所用的硫酸 把一只电阻R接到某电源上,此时电路中的电流为0.6V,若在电路里并联一只30殴的电阻,此时干路的电流为0.8A,求电源电压和电阻R的阻值 反向色谱中为什么流动相极性增加保留时间变大 电解池中电子流向如何?是不是从电解池负极流出流经电解液回电源正极 紫外可见吸收光谱的产生原因 氢氧化钠和氯化氢的异同点根据物质组成和性质 甲醇和稀碱反应吗?甲醇和稀碱(大概1%左右的KOH),理论应该不反应的,可为什么我配好碱,再加甲醇的时候,烧杯有发热的现象. 紫外可见吸收光谱中的B 带是脂肪族的特征吸收带.是正确的吗? 5个氩气分子的化学式?难道氩气不是由原子构成的吗?化学试卷的第一道题就让我无从下手. 为什么反相色谱中的流动相极性越小容量因子越小呢?我总觉得极性越大对样品的吸引力越大,越容易洗脱,或者更难挂在固定相上,怎么会极性越小,容量因子越小呢? H3PO4与碱反应问题将3MOL 的KOH溶液在加热煮沸的条件下加入一定量的纯P2O5粉末,恰好充分反应后,将溶液蒸干得到219.6克不含结晶水的固体.求此固体的质量组成及加入P205粉末的质量 请问不同杀菌条件,如65℃,30min; 75℃,15s; 75℃,30s;75℃,60s对牛奶酸度的影响有何不同,及原因, 氢氧化钠和氯化氢化学试 甲醇和磷酸反应生成的是什么?有什么用吗? 食品中总酸度挥发酸和有效酸度的关系 反向色谱,非极性色谱和液液色谱的区别?反向色谱固定相极性小,样品会有吸引,然后洗脱,那非极性色谱和液液色谱呢?非极性了,对样品中的东西不是没有吸引了,那不就成为了支撑物,不是成了 有人知道什么碱和磷酸反应生成磷酸氢2钠么什么碱和磷酸反应生成磷酸氢2钠么 1、牛乳酸度2、总酸度3、灰分4、恒重5、总糖6、粗脂肪7、单色光8、检样9、大肠菌群10菌落总数 高效液相色谱流动相为什么要用极性化合物 请问哪位知道 磷酸与碱反应生成盐的种类判断 什么动物冬天去南方 氯化氢通到氢氧化钠有什么现象如题 还有为什麽 正极一定是阳极,负极一定是阴极吗 某温度下,将1 mol CO和3 mol H2充入1 L的密闭容器中,充分反应后,达到平衡时 c(C0) =0.1 mol/L.若保持温度和体积不变,将起始物质的物质的量改为A mol CO、b mol H2 ,c mol CH3OH,欲使开始时该反应向逆反应 制取氢气用排空气还是排水法 阴极阳极分别相当于电池的正极还是负极还有,负离子移向阳极还是阴极 溶剂回收时如果加热温度太大,溶质跟溶液一同在加热过程中蒸出,还是先蒸干溶液再蒸发溶质的?有没有哪些实验可以测试到? 我想知道,某溶液里,溶质熔点为120,沸点为150而该溶液的沸点为50 1, 电压表和电流表在电路中是否等于一根导线? 阴极,负极和阳极,正极怎样区分 并联电路中怎么算总电阻比如说3欧的电阻和4欧的电租并联,那么电路中总电阻为多少 有一串小彩灯,其中有一个坏了,请你用一根导线或一个电流表或电压表进行判断、 三种方法都写、导线的方法我已经知道了,请帮忙写一下怎样用电压表和电流表进行判断、并说明一下为什么 4gH2完全燃烧,参加反应的氧气为多少克,生成水质量为多少 燕子为什么飞向南方? 液相色谱C18柱堵塞后如何冲洗柱子,能用纯水 阴极,阳极,和正极,负极,有什么区别? 并联电路的总电阻为什么是这么算的?并联电路的总电阻为:R=R1R2/R1+R2那为什么不是R=R1+R2呢一楼回答的我知道但我还是不懂为什么他要这么算本人有点笨 C18柱15厘米的粒径是5微米的,流动相是甲醇水,一般最大压力是多少啊 并联电路,干路中的电阻电流电压,是不是就电路中的总电阻、总电压、总电流?完了完了.我复习一下午结果稀里糊涂全搞混了 = =、 燕子在秋天的什么时间飞向南方 关于化学电解池.电解池中电子移动:电源负极→由导线→阴极→由溶液→阳极→电源正极 这是对的?可是溶液中不是是离子导电么 电子不是只能外电路么? 镁,锌,铁,铝各30克,分别与足量盐酸反应,生成氢气的质量各是多少? 并联电路电阻是怎么计算的呢?如题 是不是电解池的阴极连接外接电源的正极,而电解池的阳极连接外接电源的负极? 将镁铝合金5.1克溶于足量的盐酸中可产生氢气0.5克.求合金中镁、铝的质量
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘