草庐IT

对一个即将上线的网站,如何做一个较完整的Web应用/网站测试?

我想去吃ya 2023-04-04 原文

Web应用,也叫做网站,相对于客户端应用来说,Web应用无需单独安装,在浏览器上即可使用其功能。

web应用的主要开发流程如下:


在网站开发的整个流程中,测试验收是上线发布前的最后一个环节,测试是否到位、功能验收是否完整,直接影响到整个网站的质量,因此,测试验收是网站开发中非常重要的一环。回到主题:如何做一个完整的测试?要做到完整的测试,就要按照统一的测试流程进行,这样可以很大程度避免遗漏。

对于一个web项目的测试,一般的测试流程是:

功能测试→兼容性测试→性能测试→服务器压力测试

下面我们将按照这个顺序来展开,测试方法和工具也包含在其中。

所以本文结构如下:

1、功能测试如何做(测试方法+工具);
2、兼容性测试如何做(测试方法+工具);
3、性能测试如何做(测试方法+工具);
4、服务器压力测试(测试方法+工具)
5、学习视频推荐

一、功能测试如何做?

1、冒烟测试为了避免人力的浪费,在正式进入测试前要先做冒烟测试。

冒烟测试是选择若干功能或主要流程,通过简单的测试,来验证应用的可用性。

举个栗子:某个网站,冒烟测试中发现登录登不上,后续的流程被阻塞,这样的情况就是冒烟测试不通过,需要打回重新提测。

在冒烟测试阶段,一般来说无需关注逻辑和数据的正确性,只要应用能够正常点击和跳转,在可用性没有问题后,就可以进入功能测试了。功能测试是web应用测试的重要环节,可以分为前端和后端。

2、前端测试在前端测试中,主要关注以下几个方面:

1)ui:验证页面的颜色、字号、文案等是否与预期一致

2)链接:测试链接的有效性和跳转的正确性

3)表单:测试用户的注册、编辑提交等是否正常

4)流程:模拟用户使用场景进行测试,测试用户可能进行的所有操作,比如新增、修改、删除、查询等
注:因为是新项目,功能还未定型,所以还用不到前端自动化测试,手动测试是相对来说投入产出比最好的测试方法。

3、后端测试后端测试主要关注:

针对接口文档规范展开测试,包含必填、枚举值校验、临界值校验、长度校验、以及容错校验

业务逻辑测试:接口中各个参数之间的关系,比如:数学关系:依赖关系、常识

异常流测试,包括重复申请、是否有密等逻辑。

数据存储,接口请求后,检查存储接口数据的各个表数据是否与预期一致。

4、功能工具使用:
常用的接口测试工具推荐Postman,在做接口测试的时候,Postman相当于一个客户端,它可以模拟用户发起的各类HTTP请求,将请求数据发送至服务端,获取对应的响应结果。

二、兼容性测试在功能测试完成后,就可以进入兼容性测试了。

由于web应用是在浏览器上使用,所以浏览器的种类、版本及设备的分辨率可能会影响到应用的正常显示和交互体验现实中,用户使用的设备、浏览器类型、系统版本等实在太多,要把所有可能的组合都测试一遍兼容性基本是不可能的。

通常,在兼容性测试的时候,只需覆盖主流的设备及浏览器类型即可。

工具使用:

由于浏览器种类、版本较多,安装卸载会耗费较多时间,因此推荐使用云测平台,可以选择不同类型和版本的浏览器进行测试。

商业化的云测平台有很多,一般由公司统一采购,可以根据实际需要选择。

三、性能测试这里说的性能是指web(前端)的性能。

web 的性能一定程度上影响了用户留存率,Google DoubleClick 研究表明:如果一个移动端页面加载时长超过 3 秒,用户就会放弃而离开。BBC 发现网页加载时长每增加 1 秒,用户就会流失 10%。如果网站打开很慢,点击一个链接好几分钟才会响应,这样的使用体验必然会劝退用户。

因此对于前端的性能测试是不可或缺的。google 开发者提出了一种 RAIL 模型来衡量应用性能,即 response(响应)、animation(动画)、idle(空闲)与load(加载)。


RAIL 模型的广泛使用关键指标如下:

工具使用:PageSpeedPageSpeed 是 google 一个开源的自动化工具,安装 PageSpeed 扩展程序运行即可报告结果如图:

该工具功能丰富,报告也非常详细,并给出了优化建议,根据测试报告做对应的优化即可。

四、压力测试这里说的压力测试是指服务器压力测试。

为什么要做压力测试?

举几个栗子:某微博热搜因为太火爆而造成服务器瘫痪双11某电商平台因订单量太大而奔溃春运购票第一天某购票平台宕机这些都是因为短时间内大量用户访问,对服务器的压力太大导致服务奔溃。

因此,对于一个新的网站,我们有必要通过压力测试来评估是否能够承载预期的访问压力。在压测过程中,一般关注下面几个指标:qps(处理的请求量)、rt(响应时间)、error(报错率)、cup(cpu使用率)、mem(内存占用情况)、load(负载)、traffic(网络速率)。

通过观察qps、rt、error等关键指标,找到服务器的性能瓶颈,如果低于预期,则需要调优。通过压力测试,提前发现服务器瓶颈,及时优化,避免网站一上线就奔溃。

工具:压测常用的工具有loadrunner和jmeter。

Jmeter 是一款使用Java开发的,开源免费的测试工具, 主要用来做性能测试,JMeter 可以用于对服务器、网络或对象模拟巨大的负载,有丰富的图形界面+脚本配置,方便易用。

LoadRunner 是一种预测系统行为和性能的负载测试工具。通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题。

五、学习视频推荐最后总结一下,对于即将上线的web应用,完整的测试环节包含:功能测试、兼容性测试、性能测试、压力测试。

做完这些环节的测试,就可以放心上线了。

最后推荐一个较完整的Web网站测试系列视频

软件测试学习路线图详细介绍

第一阶段 功能测试

学前导读:学习本阶段内容,可全流程功能测试解决方案、Web自动化测试解决方案、数据分离解决方案、自动化测试报告解决方案、日志收集解决方案。

1.2022全网首发、最适合新手的软件测入门到实战教程上线啦!

真正的从入门到精通,包含了基础+项目实战,所有案例实战操作均图文并茂,真正实现一套全通关!

软件测试2022最新视频教程,软件测试基础入门到项目实战(涵盖软件测试基础+黑马头条项目实战)

2.软件测试入门到精通

软件测试是一种实际输出与预期输出之间的审核或者比较过程。软件测试的经典定义是:在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。本课程共5天,针对零基础小白录制。零基础入门的必学课。

软件测试从入门到精通_软件测试基础教程

3. Linux系统2天快速入门

本视频包含Linux操作系统介绍、Linux的常用命令、vi编辑器。学习掌握本阶段内容,可具备Linux项目搭建能力。

Linux系统操作教程2天快速入门linux项目搭建

4. 软件测试MySQL数据库知识精讲+项目实战

本视频包含数据安装,数据表操作、数据操作-增删改查、条件查询、排序、聚合函数、分组、分页、连接查询、自关联、子查询、子查询演练。学习本课程内容,可具备数据库校验能力;还可以快速、规范的掌握数据库增删改查操作。

软件测试工程师必备MySQL数据库,mysql系统精讲+课后练习

第二阶段 Python编程

学前导读:学习本阶段内容,可掌握Python语法, 具备编程能力; 能建立编程思维以及面向对象程序设计思想; 能掌握UnitTest框架管理测试用例。

10天玩转Python软件测试

学习本阶段内容,可掌握Python语法, 具备编程能力; 能建立编程思维以及面向对象程序设计思想; 能掌握UnitTest框架管理测试用例。

Python自动测试教程,python从基础到UnitTest框架管理测试用例

第三阶段 UI自动化

学前导读:ui自动化大体分为web自动化和App自动化,在自动化测试领域中占比很大,经常使用。

1. 软件测试web自动化测试精讲与实战

本课程将教会大家搭建Web自动化和移动自动化测试环境;掌握Web自动化测试流程和脚本编写;掌握移动自动化测试中元素的定位方法、元素操作和手势操作;熟练掌握ADB工具的使用; 掌握PO模式的设计思想,并能够对页面进行封装;掌握数据驱动的实现方式; 能够在实际项目灵活运用自动化的相关技术。

软件测试web自动化测试,Web自动化流程精讲和移动自动化测试环境

2.零基础入门移动自动化——Appium框架

本课程会详细讲解Appium框架,Appium是一个开源的、跨平台的自动化测试框架,该框架适用于Native Application、Mobile Web Application或Hybrid Application的自动化测试。

零基础入门移动自动化测试——Appium框架

3. 轻松教你使用Appium进行IOS真机自动化测试

本套课程,将环境安装的步骤和注意事项呈现给学员,模拟器到真机实操,都进行演示讲解。内容丰富,生动形象,学完即可完成IOS端环境安装及实操。

轻松教你使用Appium进行IOS真机自动化测试

第四阶段 接口自动化

学前导读:接口测试是所有自动化测试应用频率最高部分。此阶段共分成14个部分进行详讲。

接口测试精讲+传智健康实战教程

本教程会涉及HTTP,Postman,Pymysql,requests库,集成UnitTes,Dubbo等诸多工具,最后用传智健康项目进行本阶段项目实战。

4天玩转接口测试,接口重点全解析+传智健康项目实战(包含requests库,集成UnitTes,Dubbo等诸多工具)

第五阶段 性能测试

学前导读:性能测试属于高级测试范畴,对于薪资的提升帮助很大,本阶段视频讲解性能测试环境搭建,JMeter工具的使用,性能测试监控、分析和调优方法。

4天快速入门性能测试

本视频通过性能测试基础理论及JMeter工具的学习;通过轻商城项目实战,带学员掌握性能测试需求分析、性能测试计划、测试用例设计、测试脚本开发、性能监控、性能分析和调优、性能测试报告总结。

性能测试全套教程,4天快速入门性能测试+项目商城实战(含JMeter工具等)

第六阶段 综合项目强化

学前导读:通过微信小程序、金融项目两个实战项目综合强化功能测试、接口测试、性能测试。

1. 微信小程序自动化测试实战

本视频涵盖:微信小程序基础介绍、Ego微商项目介绍、Ego微商项目部署、Ego微商小程序计划篇、Ego微商小程序设计篇、Ego微商小程序执行总结篇、Ego微商小程序接口测试篇、持续集成。

软件测试微信小程序自动化测试实战

2. 软件测试4天搞定金融项目

本视频讲解金融项目功能测试解决方案、真实项目测试体验解决方案、复杂业务接口测试解决方案 接口加解密测试解决方案、数据分离解决方案 持续集成解决方案、自动化测试报告解决方案、高并发测试解决方案。

软件测试4天快速搞定金融项目功能测试实战教程

有关对一个即将上线的网站,如何做一个较完整的Web应用/网站测试?的更多相关文章

  1. ruby - 如何使用 Nokogiri 的 xpath 和 at_xpath 方法 - 2

    我正在学习如何使用Nokogiri,根据这段代码我遇到了一些问题:require'rubygems'require'mechanize'post_agent=WWW::Mechanize.newpost_page=post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')puts"\nabsolutepathwithtbodygivesnil"putspost_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div

  2. ruby - 如何从 ruby​​ 中的字符串运行任意对象方法? - 2

    总的来说,我对ruby​​还比较陌生,我正在为我正在创建的对象编写一些rspec测试用例。许多测试用例都非常基础,我只是想确保正确填充和返回值。我想知道是否有办法使用循环结构来执行此操作。不必为我要测试的每个方法都设置一个assertEquals。例如:describeitem,"TestingtheItem"doit"willhaveanullvaluetostart"doitem=Item.new#HereIcoulddotheitem.name.shouldbe_nil#thenIcoulddoitem.category.shouldbe_nilendend但我想要一些方法来使用

  3. python - 如何使用 Ruby 或 Python 创建一系列高音调和低音调的蜂鸣声? - 2

    关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。

  4. ruby-on-rails - 如何验证 update_all 是否实际在 Rails 中更新 - 2

    给定这段代码defcreate@upgrades=User.update_all(["role=?","upgraded"],:id=>params[:upgrade])redirect_toadmin_upgrades_path,:notice=>"Successfullyupgradeduser."end我如何在该操作中实际验证它们是否已保存或未重定向到适当的页面和消息? 最佳答案 在Rails3中,update_all不返回任何有意义的信息,除了已更新的记录数(这可能取决于您的DBMS是否返回该信息)。http://ar.ru

  5. ruby-on-rails - 'compass watch' 是如何工作的/它是如何与 rails 一起使用的 - 2

    我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t

  6. ruby - 将差异补丁应用于字符串/文件 - 2

    对于具有离线功能的智能手机应用程序,我正在为Xml文件创建单向文本同步。我希望我的服务器将增量/差异(例如GNU差异补丁)发送到目标设备。这是计划:Time=0Server:hasversion_1ofXmlfile(~800kiB)Client:hasversion_1ofXmlfile(~800kiB)Time=1Server:hasversion_1andversion_2ofXmlfile(each~800kiB)computesdeltaoftheseversions(=patch)(~10kiB)sendspatchtoClient(~10kiBtransferred)Cl

  7. ruby - 如何将脚本文件的末尾读取为数据文件(Perl 或任何其他语言) - 2

    我正在寻找执行以下操作的正确语法(在Perl、Shell或Ruby中):#variabletoaccessthedatalinesappendedasafileEND_OF_SCRIPT_MARKERrawdatastartshereanditcontinues. 最佳答案 Perl用__DATA__做这个:#!/usr/bin/perlusestrict;usewarnings;while(){print;}__DATA__Texttoprintgoeshere 关于ruby-如何将脚

  8. ruby - 如何指定 Rack 处理程序 - 2

    Rackup通过Rack的默认处理程序成功运行任何Rack应用程序。例如:classRackAppdefcall(environment)['200',{'Content-Type'=>'text/html'},["Helloworld"]]endendrunRackApp.new但是当最后一行更改为使用Rack的内置CGI处理程序时,rackup给出“NoMethodErrorat/undefinedmethod`call'fornil:NilClass”:Rack::Handler::CGI.runRackApp.newRack的其他内置处理程序也提出了同样的反对意见。例如Rack

  9. ruby - 使用 Vim Rails,您可以创建一个新的迁移文件并一次性打开它吗? - 2

    使用带有Rails插件的vim,您可以创建一个迁移文件,然后一次性打开该文件吗?textmate也可以这样吗? 最佳答案 你可以使用rails.vim然后做类似的事情::Rgeneratemigratonadd_foo_to_bar插件将打开迁移生成的文件,这正是您想要的。我不能代表textmate。 关于ruby-使用VimRails,您可以创建一个新的迁移文件并一次性打开它吗?,我们在StackOverflow上找到一个类似的问题: https://sta

  10. ruby-on-rails - Rails - 一个 View 中的多个模型 - 2

    我需要从一个View访问多个模型。以前,我的links_controller仅用于提供以不同方式排序的链接资源。现在我想包括一个部分(我假设)显示按分数排序的顶级用户(@users=User.all.sort_by(&:score))我知道我可以将此代码插入每个链接操作并从View访问它,但这似乎不是“ruby方式”,我将需要在不久的将来访问更多模型。这可能会变得很脏,是否有针对这种情况的任何技术?注意事项:我认为我的应用程序正朝着单一格式和动态页面内容的方向发展,本质上是一个典型的网络应用程序。我知道before_filter但考虑到我希望应用程序进入的方向,这似乎很麻烦。最终从任何

随机推荐