目录
易用性测试
用户界面测试
优秀Ul由什么构成
符合标准和规范
直观
一致
灵活
舒适
正确
实用
为有残疾障碍的人员测试:辅助选项测试
测试文档
软件文档的类型
文档测试的重要性
软件安全性测试
了解黑客的动机
威胁模式分析
网站测试
网页基础
网站的黑盒测试
文本
超级链接
图片
表单
网站的灰盒测试
网站的白盒测试
网站的配置和兼容性测试
网站的易用性测试
易用性(Usability)是交互的适应性、功能性和有效性的集中体现。
用于与软件程序交互的方式称为用户界面或UI。所有软件都有某种UI,纯粹主义者可能会说这不对,像汽车中控制发动机空燃比的软件就没有用户界面。事实上,它只是没有传统的UI,但是施加力量、拉动风门并从排气管听到劈啪的响声就是真正的用户界面。
许多软件公司花费大量时间和金钱研究设计软件用户界面的最佳方法。他们用上了由人体工程学专家运作管理的专业易用性实验室。这些实验室装备了单向透光镜和视频摄像机记录用户使用软件的情况。对用户(主体)所做的任何行为,从按下哪个键,如何使用鼠标,到犯什么样的错误,对什么感到困惑,都加以分析,以改进UI的设计。
那么,软件测试员对如此细致和科学的过程能做些什么呢?在说明和编写软件时,就应该有一个完美的UI。但是,如果真是这样,为什么有那么多VCR莫名其妙地闪烁显示12: 00字样呢?
下面是优秀UI具备的7个要素。无论UI是电子表还是Mac OS X界面,它们都适用。
●符合标准和规范
●直观
●一致
●灵活
●舒适
●正确
●实用
这些标准和规范由软件易用性专家开发(但愿如此)。它们是经由大量正规测试、使
用、尝试和错误而设计出的方便用户的规则。如果软件严格遵守这些规则,优秀UI的其他要素就自然具备。因为开发小组可能想对标准和规范有所提高,或者规则不能完全适用于软件,所以并不会完全遵守这些规则。在这种情况下,软件测试员就需要真正注意易用性问题。
在测试用户界面时,考虑以下问题,以及如何用来衡量软件的直观程度:
●用户界面是否洁净、不唐突、不拥挤? UI不应该为用户使用制造障碍。所需功能或者期待的响应应该明显,并在预期出现的地方。
●UI的组织和布局合理吗?是否允许用户轻松地从-一个功能转到另-一个功能?下一步做什么明显吗?任何时刻都可以决定放弃或者退回、退出吗?输入得到确认了吗?菜单或者窗口是否太深了?
●有多余功能吗?软件整体抑或局部是否做得太多?是否有太多特性把工作复杂化了?是否感到信息太庞杂?
●如果其他所有努力失败,帮助系统真能帮忙吗?
被测试软件本身以及与其他软件的一致是一个关键属性。用户使用习惯了,希望对一个程序的操作方式能够带到另一个程序中。
不一致会使用户从一个程序转向另一个程序时有挫折感。同一个程序中的不一致就更糟糕。如果软件或者平台有一个标准,就要遵守它。如果没有,就要注意软件的特性,确保相似操作以相似的方式进行。在审查产品时想一想以下几个基本术语:
●快速键和菜单选项。在语言信箱系统中,按0键,而不按其他数字,几乎总是代表接通某人的“拨出”按钮。在Windows中,按F1键总是得到帮助信息。
●术语和命名。整个软件使用同样的术语吗?特性命名一致吗?例如,Find是否一直叫Find,而不是有时叫Search?
●听众。软件是否一直面向同--级别的听众?带有花哨用户界面的趣味贺卡程序不应该显示泄露技术机密的错误提示信息。
●诸如OK和Cancel按钮的位置。大家是否注意到Windows中OK按钮总是在上方或者左方,而Cancel按钮总是在下方或者右方?键盘上对应按钮的等价按键也应该一致。 例如,Cancel按钮的等价按键通常是Esc,而OK按钮的等价按钮通常是Enter。
用户喜欢选择,不要太多, 但是足以允许他们选择想要做的和怎样做。
Windows计算器程序有两种视图:标准型和科学型。用户可以决定用哪个来完成计算,或者选择最喜欢用哪个。
●状态跳转。灵活的软件在实现同一任务上有更多种选择和方式。结果是增加了通向软件各种状态的途径。状态转换图将变得更加复杂,软件测试员需要花费更多时间决定测试哪些相互连接的路径。
●状态终止和跳过。当软件具有用户非常熟悉的超级用户模式时,显然能够跳过众多提示或者窗口直接到达想去的地方。能够直接拨到公司电话分机的语音信箱系统就是一一个例子。测试具有这种功能的软件时,如果中间状态被跳过或提前终止,就需要保证在跳过所有状态或提前终止时变量被正确设置。
●数据输入和输出。用户希望有多种方法输入数据和查看结果。为了在写字板文档中插入文字,可以用键盘输入、粘贴、从6种文件格式读入、作为对象插入,或者用鼠标从其他程序拖动。Microsoft Excel电子表格程序允许用户以14种标准和20种自定义图形的形式查看数据。谁知道到底有多少可能的组合?测试进出软件的各种方式,将极大增加必要的工作量,使等价划分难以抉择。
软件用起来应该舒适,而不应该为用户工作制造障碍和困难。软件舒适性是相当讲究感觉的。研究人员花费了大量的精力设法找出软件舒适的正确公式。这是难以量化的概念,但是可以找到如何鉴别软件舒适性好坏的一些好想法:
●恰当。软件外观和感觉应该与所做的工作和使用者相符。金融商业应用程序不应该用绚丽的色彩和音效来表现出狂放的风格。相反,太空游戏可以不管这些规则。软件对于想执行的任务既不要太夸张也不要太朴素。
●错误处理。程序应该在用户执行关键操作之前提出警告,并且允许用户恢复由于错误操作而丢失的数据。现在大家认为Undo/Redo特性是想当然的,但是在不久之前这些特性根本没有。
●性能。快不见得是好事。不少程序的错误提示信息闪而过,无法看清。如果操作缓慢,至少应该向用户反馈操作持续时间,并且显示它正在工作,没有停滞。现这一点的流行方式。
舒适性要素被公认为是模糊的,要看怎么解释。然而,正确性却不然。测试正确性,就是测试UI是否做了该做的事。
此类正确性问题一般很明显,在测试产品说明书时就可以发现。然而,以下情况要特别
注意:
●市场定位偏差。有没有多余的或者遗漏的功能,或者某些功能所执行的操作与市场;宣传材料不符?注意不是拿软件与说明书比较,而是与销售材料比较。这两者通常不一样。
●语言和拼写。有些程序员的拼写和写作水平低劣,常常制造一些非常有趣的用户信息。下面是来自一个流行电子商务网站的定单确认信息一希望读者在阅读时改正它:下列信息如有不符,请立即与我们联系,以确保及时得到预订的产品。
●不良媒体。媒体是软件UI包含的所有图标、图像、声音和视频。图标应该同样大,并且具有相同的色调。声音应该具有相同的格式和采样率。在UI上选择时应该显示出相应正确的媒体来。
●WYSIWYG (所见即所得)。保证UI显示的就是实际得到的。当单击Save按钮时,屏幕上的文档与存入磁盘的完全一样吗? 从磁盘读出时,与原文档完全相同吗?打印时,输出的文档与屏幕_上预览的文档完全匹配吗?
是否实用是优秀用户界面的最后一个要素。请记住,这不是指软件本身是否实用,而仅指具体特性是否实用。软件业界描述不必要或者不合理特性的术语是“ 跳动的腊肠”( dancing bologna)。想想屏幕上跳来跳去的腊肠,完全没有 必要。
在审查产品说明书、准备测试或者执行测试时,想--想看到的特性对软件是否具有实际.价值。它们有助于用户执行软件设计的功能吗?如果认为它们没必要,就要研究一下找出它们存在于软件中的原因。有可能存在没有意识到的原因,或者它们就是跳动的腊肠。这些多余的特性,不论是在单人纸牌游戏程序或者心脏监视器中,对用户都是不利的,同时还意味着需要更多的测试工作。
易用性测试中的一个严肃主题是辅助选项测试(acssibility testing), 也就是为有残疾障碍的人测试。
随着人口老龄化和技术逐步渗透到生活的方方面面,软件易用性日益重要了。残疾有许多种,但只有下列几种残疾对使用计算机和软件会造成极大的困难:
●视力损伤。色盲、严重近视和远视、弱视、散光、白内障是视力缺陷的例子。有一种或者多种视力缺陷的人使用软件时存在着独特的困难。想像一下试图看清鼠标的位置或者屏幕上出现的文字或者小图形的情形。如果根本看不见屏幕会怎么样呢?
●听力损伤。某些人是全聋或者半聋,听不到特定频率的声音,无法在背景音中分辨出特别的声音。这种人听不到伴随视频的声音、语音帮助和系统警告。
●运动损伤。疾病和受伤可以致使人的手或者手臂丧失部分或者全部运动能力。某些人难以正确使用键盘或者鼠标,甚至完全不行。例如,他们可能做不到一次按多个键,甚至不能每次只按一个键,连准确移动鼠标也做不到。
●认知和语言障碍。诵读困难和记忆问题可能造成某些人使用复杂用户界面困难。想一想本章前面列出的问题,以及认知和语言障碍对人的影响。
现在,软件文档要占到整个产品的一一大部分。有时产品看上去好像除了文档之外没什么东西,只有一点点软件放在里面。
以下是可以归类于文档的软件组成部分。显然,每-一个软件不一定非要有所有这些部分不可,但是可能会有:
●包装文字和图形。包括盒子、纸箱和包装纸。文档可能包含软件的屏幕抓图、功能列表、系统要求和版权信息。
●市场亶传材料、广告以及其他插页。这些常常是人们随手丢弃的纸,但是它们是用于促进相关软件销售的重要工具,同时提供补充内容和服务联系方式等。对于严肃对待它们的客户而言,这些信息必须正确。
●授权/注册登记表。这是客户注册软件时填写并寄回的卡片,也可以作为软件的一部分 ,显示在屏幕上让用户阅读、认可,并完成联机注册。
●EULA。发音为“you-la”, 代表最终用户许可协议。这是要客户同意条款的法律文书。
●标签和不干胶条。它们可能出现在媒体、包装盒或者打印材料上。它们还包括序列号不干胶条和封EULA信封的标签。图12-2给出了一个磁盘标签的例子,其中所有信息都要检查。
●安装和设置指导。有时该信息直接打印在磁盘上,也可以印在CD袋上或插到超薄型CD盒中,对于复杂软件,还可以是完整的手册。
●用户手册。联机手册的实用性和灵活性使打印的手册不如以前常用了。现在大多数软件附带简明的“人门”类小手册,而详细信息变成了联机形式。联机手册可以发布在软件媒体、网站上或者两者都有。
●联机帮助。联机帮助一般可以和用户手册互换使用,有时甚至取代用户手册。联机帮助有索引和搜索功能,用户查找所需信息更加容易。许多联机帮助系统允许自然语言查询,因此,用户可以输入Tell me how to copy text from one program to another并得到相应的响应。
●指南、向导和CBT (计算机基础训练)。这些工具将编程代码和书写文档融合在一起。它们一般是内容和类似宏的高级编程的混合体,通常捆绑在联机帮助系统中。用户可以提出问题,然后由软件一步步引导完成任务。Microsoft的Office助手, 有时称为“剪纸朋友”(见图12-3), 是此类系统的一个例子。
●样例、示例和模板。例如某些文字处理程序带有表单或者样例,用户只需填写内容即可快速创建具有专业外观的结果。编译器可能用一小段代码来演示如何使用编程语言的某些方面。
●错误提示信息。这些在本书中作为常常忽略的部分多次讨论过,它们最终属于文档一类。
●提高易用性。易用性大多与软件文档有关,之前有讲到过。
●提高可靠性。可靠性是指软件稳定和坚固的程度。软件是否按照用户预期的方式和时间工作?如果用户阅读文档,然后使用软件,最终得不到预期的结果,这就是可靠性差。本章下面将讲到,软件和文档相互测试是找出两者之中缺陷的好方法。
●降低支持费用。第2章讲过客户发现问题比早在产品开发期发现并修复的费用要高出10到100倍。其中的原因是用户有麻烦或者遇到意外情况就会请示公司的帮助,这是很贵的。好的文档可以通过恰当的解释和引导用户解决困难来预防这种情况。
了解动机能帮助软件测试员考虑到测试的软件中有哪些安全方面的漏洞。
安全产品:是指产品在系统的所有者或管理员的控制下,保护用户信息的保密性、完整性、可获得性,以及处理资源的完整性和可获得性。
安全漏洞:是指使产品不可行的缺陷,即使是正 确地使用产品时,来防止攻击者窃取系统的用户权限、调节操作、破坏数据,或建立未授权的信任。
黑客:精通计算机编程和使用的人,电脑玩家。使用编程技能来获得对计算机网络或文件的非法访问的人。
黑客想获得系统访问权限的5个动机是:
●挑战/成名。最简单和良性的黑客攻击是,纯粹为了挑战性的任务或在黑客同行中形成成功者的威望而攻进一个 系统。在这些行为中并没有更险恶的意图,驾驶攻击就是这类行为。虽然看起来这没有多大的问题,但是想想如果一个开锁匠为练习开锁技能每天晚上在邻居家随意开锁,然后向他的朋友吹嘘哪些家的锁很容易开的话,没有人会感到安全一一准确地说确实是这样。
●好奇。 下一个动机是好奇。 在这种心理下,黑客不会停止在仅仅获得访问权限 上。一旦进入后,他会进一步去看里面有什么。好奇就是动机,黑客会在系统中找有兴趣的东西。一个软件系统可能有安全漏洞使黑客获得访问权限(出于挑战/成名的动机),但是其安全度仍然足以阻止黑客对任何有价值数据的进一步访问。
●使用/借用。这个动机下黑客的行为就不仅仅是攻击和进入了。实际上黑客为自己的目的会尝试使用系统。前面谈到的电影战争游戏就是使用/借用的例子。一个现实的例子就是当家用PC被E mail病毒攻击后,会使用存储在PC机上的E. mail地址来发送更多的.病毒邮件。黑客使用许多计算机的分布式处理能力可以比仅仅使用自己的计算机能完成更多的事情。另外,黑客使用这些被黑的计算机进行攻击能更有效地掩饰其痕迹。
●恶意破坏。一想到恶意破坏, 请记住三个D:丑化(Defacing), 破坏(Destruction) 和拒绝服务(Denial of Service)。丑化是改变网站的外观来展示黑客的意见和想法。破坏以删除或修改存储在系统上的数据为表现形式。一个例子是某个大学生改变他的分数或删除期末考试成绩。拒绝服务是阻止或妨碍被黑的系统执行正常的操作。一个例子是使用大量的传输流攻击- -个电 子商务站点,使其不能处理正常的传输,阻止客户下单购买东西。更糟的是,黑客可能使系统崩溃,其结果是数据的丟失和数天的停机。
●偷窃。最严重的黑客攻击行为可能就是偷窃了。其动机是找出可以使用和出卖的有价值的东西。信用卡号、个人信息、商品和服务,甚至登录ID号和E-mail地址,所有这些对于黑客来说都有用。2003年, 一个24岁的计算机黑客获得访问权限并偷盗了9千2百万个AOL登录ID号。这些ID号后来向信息兜售者卖了几次,总售价达10万美元!对于几天的工作就搞定来说还不错。
●构建威胁模型分析小组。我们已经谈到了该问题。除了标准的小组成员外,小组中加入一个具有深厚的软件安全背景的人至关重要。对一个规模小的小组来说,方式上可能是在设计阶段让外部的咨询人员介入。对于大公司,这类人员往往来自于从一个项目转到另外一个项目、为项目提供专业咨询的一群专家。对于小组来说,重要的一一点是了解他们的最初目标不是解决安全问题,而是确定安全问题。在后期可以举行一些由小规模的特定团队参加的会议(例如,由几个程序员和测试员参加的会议),以隔离安全威胁,设计解决方案。
●确认价值。考虑系统所有的东西对于一个入侵者说价值有多大。系统是否有客户的个人信息?是否有信用卡号码?系统计算能力如何?是否有人想偷偷利用你的系统来向你的客户发送商业信息?如果你的公司网站被黑掉,不管是丑化还是替换,是否会带来业务的损失?
●创建一个体系结构总体图。在这个步骤中要确认计划用在软件中的以及如何实现互连的技术。小的威胁模型分析小组会创建- 一个体系结构图表示出主要的技术模块和它们之间如何通讯。创建体系结构图一个重要的方面是,确认在不同技术和其证明之间的信任边界(trust boundaries)以及为了访问数据必须发生的授权。
●分解应用程序。这是一个格式化的过程,用来确认数据所在位置以及如何通过系统。理想情况下,该步骤应基于设计的数据流图和状态转换图。如果这些图不存在,需要创建这些图。想想作为容器的数据以及哪些使容器安全。进入容器来查看数据的手段是什么?数据加密了吗?口令保护了吗?
●确认威胁。一且完全理解了所有的部分(价值、体系结构、数据),威胁模型分析小组可以转向确认威胁。每一个部分都应该考虑为威胁目标,并且应假设他们会受到攻击。想想是否每一部分都可能被不正确地看待。每一部分是否能被修改?黑客是否能阻止授权用户使用系统?是否有人能获得系统的访问权限并控制系统?
●记录威胁。每个威胁都必须用文档记录,并且应进行跟踪以确保其被解决。文档是一种简单方式,用于描述威胁(用一句或更少)、目标、攻击可能采用的方式、系统用于防御攻击有哪些反制手段。
●威胁等级评定。最后,理解并非所有的威胁生来就平等这一点很重要。软件数据可能用国防部128位加密算法保护,用超级计算机需要20多年才能破解。即便使用如此安全等级保护的数据会受到安全威胁吗?当然可能。这种威胁等级比-个连接到管理员的计算机的自动应答电话modem更高吗?可能不会。威胁模型分析小组需要确定每个威胁的等级。
●潜在的损害。如果这部分被黑了,损害有多大? (物理上、金钱上、整体性上等)
●可反复性。黑客不间断利用漏洞的容易度如何?每次尝试都能成功?还是100次尝试成功一次?或1百万次尝试成功一次?
●可利用性。获得对系统或数据访问的技术难度有多大?是可以通过互联网用电子邮件发送,或用几行简单的basic写的宏代码,还是需要具有很专业编程技能的人员来实现?
●受影响的用户。如果黑客成功入侵,有多少用户会受到影响?是单个用户,还是像偷盗AOL屏幕_上的用户名,有9千2百万用户?
●可发现性。黑客发现漏洞的可能性有多大?一个保密的“后门”登录口令可能不会被发现,除非心怀怨恨的雇员被解雇后把这些信息贴到Web上。
流行网站的部分特性包括:
●不同大小、字体和颜色(不过本书中看不到颜色)的文字。
●图片和照片。
●超级链接文字和图片。
●不断滚动的广告。
●下拉式文本选择框。
●用户输入数据的区域。
大量的功能也不那么明显,使网站更加复杂的特性如下:
●自定义的布局,允许用户更改信息出现在屏幕上的位置。
●自定义的内容,允许用户选择想看的新闻和信息。
●动态下拉式选择框。
●动态变化的文字。
●取决于屏幕分辨率的动态布局和可选信息。
●与不同网络浏览器、浏览器版本,以及硬件和软件平台的兼容性。
●大量加强网页易用性的隐藏格式、标记和嵌入信息。
最容易的起步是把网页或者整个网站当做一一个黑盒子。不知道它是如何工作的,手里没有说明书,面对的仅仅是要测试的网站。应该查找什么呢?
图14-2给出了一幅相当直观而且典型的Apple公司网站www.apple .com的屏幕截图。它具有所有基本元素一文字、图片、指向站内其他网页的超级链接和指向其他站点的超级链接。某些网页具有用户可以输入信息的表单,还有一些网页播放视频。这个网站令人感兴趣的与众不同之处是它为27个不同的地区进行了本地化,从亚洲到英国。
大多数网页相当简单,仅由文字、图片、链接以及少量表单组成。测试这些并不难。以下各节将给出查找网页缺陷的一些思路。
网页文本应该当做文档对待,并依据第12章“ 测试文档”所述的方法进行测试。检查核实读者的水平、术语、内容以及题目素材、准确度一特 别是可能过期的信息,经常不断地检查拼写。
注意:不要依赖拼写检查工具来做,尤其是用在网页文本内容的检查上。拼写检查工具可能只检查常规文本,但不检查包含在图片、滚动块、表单等中的文字。用拼写检查工具执行完所谓的完全拼写检查之后,检查者可能认为检查很彻底,但事实中网页中仍然会有拼写错误。
如果有电子邮件地址、电话号码或者邮政编码等联系信息,要检查是否正确。保证版权声明正确、日期无误。测试每个网页是否都有正确的标题,标题文本出现在浏览器的标题栏,并且当把网页添加到收藏夹或者书签时默认显示的内容就是标题文本。
注意:并非所有的浏览器都支持显示文字标签。 有的浏览器只在工具栏顶端显示标题文本,或者什么都不显示。由于这样限制了双目失明的用户浏览网站,所以应把此看成一个严重的访问缺陷。
通过大幅缩放浏览器窗口来检查文字布局问题。这样会发现由于设计人员或者程序员假定网页高度和宽度不变而引起的缺陷,还会发现写死的格式,例如换行在某些布局中显得正常而在其他布局中则不正常。
链接可以与文字或者图片拴在一起。每一个链接都要检查,确保它跳转到正确的目的地,并在正确的窗口中打开。如果没有网站的说明书,就需要测试跳转是否正确。
超级链接一定要明显,文字链接一般有下划线,而鼠标指针经过任何类型的超级链接一文字或图片时应该发生变化(常常变成手形指针)。
如果链接打开电子邮件信息,就填写内容并发送,要确保能够得到回应。
查找孤页,它是网站的一部分,但是不能通过超级链接访问,因为网页作者忘记把它挂接上。这样就需要向网站设计人员索取网页清单,与自制的状态图进行比较。
图片中可能出现的许多软件缺陷在易用性测试时被掩盖下来,但是利用简单的黑盒测试方法可以检查一些明显的地方。
例如,所有图片都被正确载人和显示了吗?如果图片丟失或者名称不对,就无法载入,网页将在放置图片的位置显示错误。
如果网页中文本和图片交织在一起,要保证文字正确地环绕在图片周围。改变浏览器窗口的大小,看环绕是否有问题。
载入网页时的性能如何?网页是否有太多图片,导致传输和显示的数据量巨大,从而使网站速度过慢?用缓慢的电话拨号上网替代本地高速局域网时结果会怎样?
表单是指网页中用于输入和选择信息的文本框、列表框和其他域。这是Mac潜在开发人员的注册表单,含有用于输入姓名和电子邮件地址的域。
测试表单就像测试常规软件程序的域一样,域的大小正确吗?是否接受正确数据,拒绝错误数据?在最后按Enter键时正确确认了吗?可选域是否真正可选并且要求的那个是否真正做到?如果输入9999999999999999999会怎样?
我们已经熟悉了黑盒和白盒测试,而另外一种测试灰盒测试( gray-box testing) 是两者的结合一因此而得名。
灰盒测试把黑盒测试和白盒测试的界限打乱了。仍然把软件当做黑盒来测试,但是通过简单查看(不是像白盒测试那样完整地查看)软件内部工作机制作为补充。网页特点使其非常适合进行灰盒测试。大多数网页由HTML(超文本标记语言)创建。
HTML发展到现在,有了成百上千种标签和选项,从清单14-1的HTML语句可以得到证明。但是,归根结底,HTML只是随意的具有旧文字处理程序风格的标记语言。HTML与程序的区别在与HTML不能够执行或者运行,只能确定文字和图片在屏幕上显示的方式。
由于HTML很容易被测试员查看,因此可以利用这点来对测试进行补充。对于黑盒测试员,这是开始转向白盒测试的大好机会。首先从学习建立自己的简单网页开始。了解常用的基本HTML标记。查看多种网页上的HTML语句,查看应用了哪些技术,以及这些技术在网页上面是如何把各种元素构建起来的。一旦熟悉了HTML,就能够以全新的方式查看测试的网页,并提高测试效率。
以文字和图片形式构成的诸多静态内容的网页。这些静态内容一般由HTML直接创建。同时,网页还包括可自定义和动态改变的内容。请记住,HTML不是编程语言一它只是文字和图片的标记系统。创建这些附加的动态特性需要用可以执行和支持判断分支结构的程序代码来补充。
这里不可能深人到使用白盒技术测试网站的所有细节,但是要利用白盒方法,一些特性的测试可能更为高效。当然,它们也可以当做黑盒子来测试,但是潜在复杂性是,要真正找出重要的缺陷,要求对网站的系统结构和编程知识有一定的了解:
●动态内容。动态内容是根据当前条件发生变化的文字和图片一例如,日期时间、用户喜好或者特定用户操作。在HTML中嵌入JavaScript之类的简单脚本语言可以对这些内容编程,这称为客户端( client-side)编程。如果是这样,在检查脚本和查看HTML时可以运用灰盒测试技术。为了提高执行效率,大多数动态内容编程在网站服务器上进行,这称为服务器端(server-side) 编程,需要具有Web服务器的访问权限才能查看源代码。
●数据库驱动的网页。许多显示分类目录或者货物清单的电子商务网页是数据库驱动的。HTML提供Web内容的简单布局,而图片、文字说明、价格信息等则从网站服务器上的数据库中提取出来插人到网页中。
●用编程方法创建的网页。许多网页,特别是包含动态内容的网页是用编程方法创建的一也就是说,HTML,甚至可能编程都是由软件创建的。网页设计者可能在数据库中输入数据项,把各种元素拖放到布局程序中,单击按钮,从而产生显示网页的HTML。虽然看上去有点吓人,但是这实际上与计算机语言编译器创建机器码没有什么差别。如果测试此类系统,就必须检查这样产生的HTML与设计的想法是否一致。
●服务器性能和加载。流行的网站每天可能要接受数百万次点击。每一次点击都要从网站
的服务器下载数据到浏览者的计算机上。如果测试一系统的性能和负载能力,就必须找
到一种方法来模拟数百万个连接和下载。
●安全性。正如前--章讲的那样,网站安全性问题常常在新闻中报道,诸如有黑客试图利
用各种新型方法获得网站内部数据的访问权。金融、医疗和其他包含个人数据的网站风
险特别大,需要密切了解服务器技术来测试其安全性。
假设要测试一个网站。需要考虑可能会影响网站运行和外观的硬件和软件配置。以下是熏要若虑的内容清单:
●硬件平台。是Mac机、PC机、PDA、 MSNTV、 还是无线保真(WiFi) 手表?每一台硬件设备都有自己的操作系统、屏幕布局、通信软件等。每种设备都会影响网站在屏幕上的外观。
●浏览器软件和版本。Web浏览器及版本都有多种。有些只能在一 种硬件平台上运行,而有些可以在多种平台上运行。其中一些例子是AOL 9.0, Firefox 1.0, Internet Explorer5.0和6.0,Pocket IE, Netscape 7.2和Opera 7.54。
●浏览器插件。许多浏览器可以接受插件或者扩展来获得附加功能。其中一个例子是播放某些音频或者视频文件的功能。
●浏览器选项。大多数Web浏览器允许大量自定义。图14-7给出了一个这样的例子。可以选择安全性选项,选择文字标签如何处理,决定是否启用插件等。每个选项都对网站运行有潜在的影响一因而都是
一个需要考虑的测试情形。
●视频分辨率和色深。许多平台可以在各种屏幕分辨率和颜色模式下显示。例如,运行Windows的PC机屏幕尺寸可以是640x480、800 x 600、1024 x 768、1280 x 1024或者更大。移动设备的屏幕很小,分辨率就完全不同。网站可能在--种分辨率下显示异样,甚至显示错误,但是在另一种分辨率下就不会。文字和图片可能换行位置不同、截掉-一部分,或者根本不显示。
●文字大小。是否知道用户可以更改浏览器中使用的文字大小?站点可以使用非常小或者非常大的文字吗?当站点在分辨率很低、文字很大的小屏幕上运行,结果会怎样?
●调制解调器速率。够用不能说成是性能。总有一天所有人都会具有与设计者查看网站数据一样快的高速连接。在此之前,必须测试站点以不同的调制解调器速率连接时工作是否顺利。
Jakob Nielsen (www.useit.com) 是网站设计和易用性研究方面令人尊敬的专家,他对网站易用性进行深人的研究。以下清单摘自他的《Top Ten Mistakes in Web Design>:
●盲目使用不成熟的新技术。网站不应该靠吹嘘采用最新Web技术来吸引用户。这样可能会吸引-些不用脑子的人,但是主流用户会更加关心有用的内容以及站点为客户提供良好服务的能力。使用未发布的最新、最棒技术肯定会使用户受到打击;如果他们的系统在访问该网站时崩溃,那么可以断言大部分人不会再回来了。除非从事因特网产品和服务销售业务,否则最好等到该技术具有-些使用经验之后再采用。当桌面印刷刚开始流行时,人们在文档中放20种不同的字体,要设法避免在Web中出现类似的设计。
●滚动文字、滚动块和不停运行的动画。不要让网页上有不停移动的元素。移动的图像对人类的视觉太过刺激。网页不应该像纽约城的时代广场那样不断刺激人们的感官一让用户安安静静地看文字吧!
●滚动显示的长页面。当一个页面出现时,用户通常不喜欢滚动查看屏幕上看不见的信息。所有重要的内容和导航选项应该位于页面顶端。最近研究表明,与早期的Web应用相比,用户越来越喜欢滚动查看了,但是在导航页上减少滚动仍然是好的建议。
●非标准的链接颜色。指向用户未曾看过的页面的超级链接应该是蓝色;指向已经看过的页面的链接应该是紫色或者红色。不要乱用这些颜色,因为大多数Web浏览器使用的少有几个标准导航辅助之- -就是要能了解哪个链接已经点击过。告诉用户链接颜色的含义关键是一致性。
●过期信息。开发小组应该有一个Web“园丁”一随 眷网站变化除草和栽花。遗憾的是,大多数小组宁肯花时间创建新内容也不愿意进行维护。实际上,维护是加强网站内容的经济之道,因为许多老的网页保持着原有的关联,应该与新的网页建立链接。当然,某些网页在终止日期之后最好从服务器上彻底删掉。
●下载时间过长。传统的人为因素规范指出,0.1秒是用户感觉系统反应迅速的极限; 1秒是用户思路不间断的极限; 10秒是 用户完全丧失兴趣的最长响应时间。在Web上,用户已经被磨练地能够忍受更长时间了,对于一些网页最长可接受时间增加到15秒。但是,不要以此为目标一把目标定得更短一些。
●缺少导航支持。不要假设用户也知道站点的内容和站点设计者-一样多。 他们总是难以找到信息,因此需要以在结构和位置上给人强烈感觉的形式进行支持。站点设计应该从很好地了解信息空间的结构开始,并把结构明确地传达给用户。为用户提供站点地图,使其清楚目前的位置,以及可以到达哪里。站点还应该具有良好的搜索特性,因为即使最好的导航支持也不一定够用。
●孤页。所有网页-定要包含本身所属网站的明确指示,因为用户可能不经过主页而直接访问网页。同样的原因,每个网页都应该与主页链接,以及它在信息空间结构的位置指示。
●复杂的网站地址(URL)。像URL这样的机器寻址虽然永远不会显露在用户界面上,但是,经研究发现用户实际上在设法分析网页的URL,以推断网站的结构。用户这样做是因为觖少导航支持(见前述)和不明网页在当前Web浏览器中的位置。因此,URL应该包含反映网站内容的本质的便于人们阅读的名称。
此外,用户还常常会输人URL,因此网站设计者应该设法减少输人风险,诸如全部使用小写的短名称,且不用特殊的字符(许多人不知道怎样输入~ )。
●使用框架。框架是允许在一个网页中显示其他网页的HTML技术,框架由此得名一与图文框类似。把网页分割为框架可能会使用户迷惑,因为框架打破了网页的基本用户模式。突然之间当前网页不能加书签( 书签指向另一个框架集),也不能返回了,URL不再有效,打印输出发生困难。更糟糕的是,用户操作的预见性消失了一-用户随时随地单击一一个链接:谁知道会显示什么信息?许多网站设计者为了避免这些问题,放弃了使用框架,而只是简单地打开另外一个窗口。
参考书籍:软件测试原书第二版