Web 应用程序测试思考

工作中常需要对各式各样的 web 应用系统进行测试,如何才能测试好呢?

1 软件质量模型

首先需要对软件质量模型有一定的了解。

ISO/IEC 9126 模型是建立在 McCall 和 Boehm 模型之上的,同时加入了功能性要求,还包括识别软件产品的内部和外部质量属性.

软件的 6 个质量特征:
- 功能性(Functionality):当软件在指定条件下使用时,软件产品提供满足明确和隐含需要的功能的能力;
- 可靠性(Reliability):在指定条件下使用时,软件产品维持规定的性能级别的能力;
- 易用性(Usability):在指定条件下使用时,软件产品被理解、学习、使用和吸引用户的能力;
- 效率(Efficiency):在规定条件下,相对于所用资源的数量,软件产品可提供适当性能的能力;
- 可维护性(Maintainability):软件产品可被修改的能力。修改可能包括纠正、改进或软件对环境、需求和功能规约变化的适应程度;
- 可移植性(Portability):软件产品从一种环境迁移到另一种环境的能力。

详细内容,参考: https://www.cnblogs.com/gaochundong/p/software_quality_models.html

2 测试策略

在测试 Web应用时,如何制定测试策略,分析清楚该测试哪些方面,以及如何测试,是至关重要的一环。分析测什么时,可结合软件质量模型进行分析。

2.1 测什么

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

2.1.1 功能性测试

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

  • 表单:无论是反馈调查、创建任务计划,还是订阅新闻,都需要用到表单。需要检查提交操作是否正常,是否能够提交连接并提交到你的数据中,所有字段是否能够接收输入的内容。

  • 文件操作和计算:这其中涉及图像和文档的上传、编辑、计算功能和正确的输出值。首先,要确保你能想象得到会有多少用户会使用你的应用,并尽可能地针对他们进行调节。另外,要考虑一下如何使你的App更有效地计算并显示出结果,给用户提供一个更加流畅的用户体验。

  • 搜索:如果你的应用允许用户搜索内容、文档或文件,那么就要保证你的搜索引擎能够索引这些信息,并定期更新,以便能够让用户实现快速查找,并根据查找条件快速显示相关结果。

  • 媒体播放组件:测试音频、视频、动画和互动媒体播放组件(如游戏和图形工具)的时候,这些组件应该像预期的功能效果一样,在加载和运行的时候不能影响(暂停或减缓)其他应用的运行。

  • 脚本和类库:确保你的脚本(比如图像显示或Ajax页面加载)在各种浏览器之间是相互兼容的,因为不同的用户可能会使用不同的浏览器访问你的应用,同时你可以测量不同浏览器的加载时间来进行性能优化。如果你的脚本只能和某些浏览器相互兼容,那么就要确保应用中的其他组件有更好的性能,这样所有的用户就能得到最好的应用体验。

  • 其他组件的功能:全面检查其他组件的功能,包括提示系统、用户配置文件和管理仪表板等

  • 系统日志

2.1.2 用户界面和可用性测试

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

  • 导航:主页面上的导航链接以及返回主页面的链接都应该明显的突出出来,并指向正确的目标页面。

  • 可访问性:尽最大可能的确保Web应用易于操作、使用,哪怕是对那些有视力障碍或行为障碍的人来说,简易的使用步骤是最受欢迎的。W3C有一篇文章 《Web Content Accessibility Guidelines》能够帮助我们很好的定义这一点,并指出了如何让Web应用在广大用户群里成为“用户友好型”的应用。

  • 跨浏览器测试:用户很有可能会从多种浏览器和操作系统中访问站点,不要让应用在不同的环境下无法显示同样的效果,所以需要尽可能多地测试这些浏览器和操作系统组合,以确保Web应用能够按照计划运行,为更广泛的用户提供一致的体验。

  • 错误消息和警告信息:在很多情况下,Web应用在某种程度上一定会崩溃,但这不是你的错。你所要做的就是:当用户遇到例如404页或无法成功上传资料的问题的时候,要确保应用程序中显示的消息是描述性的、对用户来说对解决问题是很有帮助的。

  • 帮助和文档:并不是所有的用户在使用你的Web应用时都能感觉很顺畅,有些用户在刚开始的几次可能需要帮助;而其他人即使是很熟悉这款产品,也可能在使用该过程中会遇到一些问题。这时候你需要做的事是运行你的应用,检查文档,确保在任何模块或页面中都有渠道让用户快速获得帮助信息。

  • 布局:测试你的Web应用以确保它能够在尽可能多的浏览器和不同分辨率的屏幕中正确、一致地显示。

  • 所有的动画和交互操作(例如拖放特性和模态窗口)、字体和字形(尤其是Web字体)

  • 前端性能(页面渲染速度、图片和脚本加载时间)

2.1.3 安全性测试

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

  • 对私人数据进行加密

  • 在授予访问权限之前坚持进行身份验证,并对数据访问进行限制

  • 确保数据完整性,尊重用户的要求

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

- 跨站脚本:当一个网站被以诱骗的方式接受了恶意代码,它就会向用户传播这个恶意代码。

- SQL注入:如果黑客通过一个用户输入漏洞运行一段SQL命令,就可能导致用户数据遭到损坏或被窃。这些情况通常发生的原因是:Web应用允许在SQL命令或系统命令中使用特殊元素。

- DDoS(分布式拒绝服务)攻击:当一个Web应用无法呈现给用户的时候,通常它会向服务器发出大量请求,会逐渐拖慢服务器并导致最终无法响应。

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

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

2.1.4 性能测试

2.2 怎么测

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

  • 设定目标

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

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

  • 定义流程和使用案例

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

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

  • 设定一个测试环境

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

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

  • 真实的单元测试

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

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

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

  • 加载测试和性能调优

    测试你的Web应用和它的运行环境是否能经得起巨大的流量和激增的带宽需求,并寻找可能会导致App性能问题的瓶颈。

    同时,你也可以考虑使用一些网上服务来监控用户流量、服务器利用率和因代码引起的问题,对App进行一些相应的微调,以提高App的速度和效率。

  • 安全性测试

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

3 测试建议

测试过程中,首先要考虑把用户放在第一位,在测试之前要彻底想清楚用户会怎么使用这个Web应用。

设身处境的把自己放在用户的角度上思考一下,这会对制定切合实际的开发设计场景很有帮助。

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

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

Web 应用程序测试思考

上一篇:【Jmeter实战】Jmeter实现图片文件上传请求


下一篇:js解决数字运算丢失精度,保留小数位