1、登录 2、添加 3、查询 4、删除 1、登录 ①用户名和密码都符合要求(格式上的要求) ②用户名和密码都不符合要求(格式上的要求) ③用户名符合要求,密码不符合要求(格式上的要求) ④密码符合要求,用户名不符合要求(格式上的要求) ⑤用户名或密码为空 ⑥数据库中不存在的用户名,不存在的密码 ⑦数据库中存在的用户名,错误的密码 ⑧数据库中不存在的用户名,存在的密码 ⑨输入的数据前存在空格 ⑩输入正确的用户名密码 以后按[enter]是否能登陆 2、添加 ①要添加的数据项均合理,在界面保存成功后,检查数据库中是否添加了相应的数据:select查询 ②留出一个必填数据为空 ③按照边界值等价类设计测试用例的原则设计其他输入项的测试用例:数据组合测试 ④不符合要求的地方要有错误提示 ⑤是否支持table键 ⑥按enter是否能保存 ⑦若提示不能保存,也要察看数据库里是否多了一条数据 3、删除 ①删除一个数据库中存在的数据,然后查看数据库中是否删除(界面删除一条数据,查看数据库中是否删除) ②[url=]删除一个数据库中并不存在的数据,看是否有错误提示,并且数据库中没有数据被删除[/url]file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image005.gif A.输入条件的约束有以下4类: ① E约束(异):a和b中至多有一个可能为1,即a和b不能同时为1。 ② I约束(或):a、b和c中至少有一个必须是1,即 a、b 和c不能同时为0。 ③ O约束(唯一);a和b必须有一个,且仅有1个为1。 ④ R约束(要求):a是1时,b必须是1,即不可能a是1时b是0。 B.输出条件约束类型 输出条件的约束只有M约束(强制):若结果a是1,则结果b强制为0。 5. 采用因果图法设计测试用例的步骤: 1) 分析软件规格说明描述中, 那些是原因(即输入条件或输入条件的等价类),那些是结果(即输出条件), 并给每个原因和结果赋予一个标识符。 2) 分析软件规格说明描述中的语义,找出原因与结果之间, 原因与原因之间对应的关系,根据这些关系,画出因果图。 3) 由于语法或环境限制, 有些原因与原因之间,原因与结果之间的组合情况不可能出现,为表明这些特殊情况, 在因果图上用一些记号表明约束或限制条件。 4) 把因果图转换为判定表。 5) 把判定表的每一列拿出来作为依据,设计测试用例。 网站测试的主要方面 1[url=]功能测试[/url] 对于网站的测试而言,每一个独立的功能模块需要单独的[url=]测试用例[/url]的设计导出,主要依据为《需求规格说明书》及《详细设计说明书》,对于应用程序模块需要设计者提供基本路径测试法的测试用例。 ● 链接测试 链接是Web应用系统的一个主要特征,它是在页面之间切换和指导用户去一些不知道地址的页面的主要手段。链接测试可分为三个方面: 1)测试所有链接是否按指示的那样确实链接到了该链接的页面; 2)测试所链接的页面是否存在; 3)保证Web应用系统上没有孤立的页面,所谓孤立页面是指没有链接指向该页面,只有知道正确的URL地址才能访问。 链接测试可以自动进行,现在已经有许多工具可以采用。链接测试必须在集成测试阶段完成,也就是说,在整个Web应用系统的所有页面开发完成之后进行链接测试。 Xenu------主要测试链接的正确性的工具 可惜的是对于动态生成的页面的测试会出现一些错误。 ●表单测试 当用户给Web应用系统管理员提交信息时,就需要使用表单操作,例如用户注册、登陆、信息提交等。在这种情况下,我们必须测试提交操作的完整性,以校验提交给服务器的信息的正确性。例如:用户填写的出生日期与职业是否恰当,填写的所属省份与所在城市是否匹配等。如果使用了默认值,还要检验默认值的正确性。如果表单只能接受指定的某些值,则也要进行测试。例如:只能接受某些字符,测试时可以跳过这些字符,看系统是否会报错。 要测试这些程序,需要验证服务器能正确保存这些数据,而且后台运行的程序能正确解释和使用这些信息。 B/S结构实现的功能可能主要的就在这里,提交数据,处理数据等如果有固定的操作流程可以考虑自动化测试工具的录制功能,编写可重复使用的脚本代码,可以在测试、回归测试时运行以便减轻测试人员工作量。 我们对UM子系统中各个功能模块中的各项功能进行逐一的测试,主要[url=]测试方法[/url]为:边界值测试、等价类测试,以及异常类测试。测试中要保证每种类型都有2个以上的典型数值的输入,以确保测试输入的全面性。 ●Cookies测试 Cookies通常用来存储用户信息和用户在某应用系统的操作,当一个用户使用Cookies访问了某一个应用系统时,Web服务器将发送关于用户的信息,把该信息以Cookies的形式存储在客户端计算机上,这可用来创建动态和自定义页面或者存储登陆等信息。 如果Web应用系统使用了Cookies,就必须检查Cookies是否能正常工作而且对这些信息已经加密。测试的内容可包括Cookies是否起作用,是否按预定的时间进行保存,刷新对Cookies有什么影响等。 ●设计语言测试 Web设计语言版本的差异可以引起客户端或服务器端严重的问题,例如使用哪种版本的HTML等。当在分布式环境中开发时,开发人员都不在一起,这个问题就显得尤为重要。除了HTML的版本问题外,不同的脚本语言,例如[url=]Java[/url]、JavaScript、 ActiveX、VBScript或Perl等也要进行验证。 ●数据库测试 在Web应用技术中,数据库起着重要的作用,数据库为Web应用系统的管理、运行、查询和实现用户对数据存储的请求等提供空间。在Web应用中,最常用的数据库类型是关系型数据库,可以使用SQL对信息进行处理。 在使用了数据库的Web应用系统中,一般情况下,可能发生两种错误,分别是数据一致性错误和输出错误。数据一致性错误主要是由于用户提交的表单信息不正确而造成的,而输出错误主要是由于网络速度或程序设计问题等引起的,针对这两种情况,可分别进行测试。 2性能测试 网站的性能测试对于网站的运行而言异常重要,但是目前对于网站的性能测试做的不够,我们在进行系统设计时也没有一个很好的基准可以参考,因而建立网站的性能测试的一整套的测试方案将是至关重要的。 网站的性能测试主要从三个方面进行:连接速度测试、负荷测试(Load)和压力测试(Stress).连接速度测试指的是打开网页的响应速度测试。负荷测试指的是进行一些边界数据的测试,压力测试更像是恶意测试,压力测试倾向应该是致使整个系统崩溃。 ●连接速度测试 用户连接到Web应用系统的速度根据上网方式的变化而变化,他们或许是电话拨号,或是宽带上网。当下载一个程序时,用户可以等较长的时间,但如果仅仅访问一个页面就不会这样。如果Web系统响应时间太长(例如超过5秒钟),用户就会因没有耐心等待而离开。 另外,有些页面有超时的限制,如果响应速度太慢,用户可能还没来得及浏览内容,就需要重新登陆了。而且,连接速度太慢,还可能引起数据丢失,使用户得不到真实的页面。 ●负载测试 负载测试是为了测量Web系统在某一负载级别上的性能,以保证Web系统在需求范围内能正常工作。负载级别可以是某个时刻同时访问Web系统的用户数量,也可以是在线数据处理的数量。例如:Web应用系统能允许多少个用户同时在线?如果超过了这个数量,会出现什么现象?Web应用系统能否处理大量用户对同一个页面的请求? ●压力测试 负载测试应该安排在Web系统发布以后,在实际的网络环境中进行测试。因为一个企业内部员工,特别是项目组人员总是有限的,而一个Web系统能同时处理的请求数量将远远超出这个限度,所以,只有放在Internet上,接受负载测试,其结果才是正确可信的。 进行压力测试是指实际破坏一个Web应用系统,测试系统的反映。压力测试是测试系统的限制和故障恢复能力,也就是测试Web应用系统会不会崩溃,在什么情况下会崩溃。黑客常常提供错误的数据负载,直到Web应用系统崩溃,接着当系统重新启动时获得存取权。 压力测试的区域包括表单、登陆和其他信息传输页面等。 采用的[url=]测试工具[/url]: 性能测试可以采用相应的工具进行自动化测试,我们目前采用如下工具 ab -----Apache 的测试工具 OpenSTA—开发系统测试架构 3 接口测试 在很多情况下,web 站点不是孤立。Web 站点可能会与外部服务器通讯,请求数据、验证数据或提交订单。 ●服务器接口 第一个需要测试的接口是浏览器与服务器的接口。测试人员提交事务,然后查看服务器记录,并验证在浏览器上看到的正好是服务器上发生的。测试人员还可以查询数据库,确认事务数据已正确保存。 ●外部接口 有些 web 系统有外部接口。例如,网上商店可能要实时验证信用卡数据以减少欺诈行为的发生。测试的时候,要使用 web 接口发送一些事务数据,分别对有效信用卡、无效信用卡和被盗信用卡进行验证。如果商店只使用 Visa 卡和 Mastercard 卡, 可以尝试使用 Discover 卡的数据。(简单的客户端脚本能够在提交事务之前对代码进行识别,例如3 表示 American Express,4 表示 Visa,5 表示Mastercard,6 代表Discover。)通常,测试人员需要确认软件能够处理外部服务器返回的所有可能的消息。 ●错误处理最容易被测试人员忽略的地方是接口错误处理。通常我们试图确认系统能够处理所有错误,但却无法预期系统所有可能的错误。尝试在处理过程中中断事务,看看会发生什么情况?订单是否完成?尝试中断用户到服务器的网络连接。尝试中断 web 服务器到信用卡验证服务器的连接。在这些情况下,系统能否正确处理这些错误?是否已对信用卡进行收费?如果用户自己中断事务处理,在订单已保存而用户没有返回网站确认的时候,需要由客户代表致电用户进行订单确认。 4 可用性测试 可用性/易用性方面目前我们只能采用手工测试的方法进行评判,而且缺乏一个很好的评判基准进行,此一方面需要大家共同讨论。 ●导航测试 导航描述了用户在一个页面内操作的方式,在不同的用户接口控制之间,例如按钮、对话框、列表和窗口等;或在不同的连接页面之间。通过考虑下列问题,可以决定一个Web应用系统是否易于导航:导航是否直观?Web系统的主要部分是否可通过主页存取?Web系统是否需要站点地图、搜索引擎或其他的导航帮助? 在一个页面上放太多的信息往往起到与预期相反的效果。Web应用系统的用户趋向于目的驱动,很快地扫描一个Web应用系统,看是否有满足自己需要的信息,如果没有,就会很快地离开。很少有用户愿意花时间去熟悉Web应用系统的结构,因此,Web应用系统导航帮助要尽可能地准确。 导航的另一个重要方面是Web应用系统的页面结构、导航、菜单、连接的风格是否一致。确保用户凭直觉就知道Web应用系统里面是否还有内容,内容在什么地方。 Web应用系统的层次一旦决定,就要着手测试用户导航功能,让最终用户参与这种测试,效果将更加明显。 ●图形测试 在Web应用系统中,适当的图片和动画既能起到广告宣传的作用,又能起到美化页面的功能。一个Web应用系统的图形可以包括图片、动画、边框、颜色、字体、背景、按钮等。图形测试的内容有: (1)要确保图形有明确的用途,图片或动画不要胡乱地堆在一起,以免浪费传输时间。Web应用系统的图片尺寸要尽量地小,并且要能清楚地说明某件事情,一般都链接到某个具体的页面。 (2)验证所有页面字体的风格是否一致。 (3)背景颜色应该与字体颜色和前景颜色相搭配。 (4)图片的大小和质量也是一个很重要的因素,一般采用JPG或GIF压缩。 ●内容测试 内容测试用来检验Web应用系统提供信息的正确性、准确性和相关性。 信息的正确性是指信息是可靠的还是误传的。例如,在商品价格列表中,错误的价格可能引起财政问题甚至导致法律纠纷;信息的准确性是指是否有语法或拼写错误。这种测试通常使用一些文字处理软件来进行,例如使用Microsoft Word的“拼音与语法检查”功能;信息的相关性是指是否在当前页面可以找到与当前浏览信息相关的信息列表或入口,也就是一般Web站点中的所谓“相关文章列表”。 ●整体界面测试 整体界面是指整个Web应用系统的页面结构设计,是给用户的一个整体感。例如:当用户浏览Web应用系统时是否感到舒适,是否凭直觉就知道要找的信息在什么地方?整个Web应用系统的设计风格是否一致? 对整体界面的测试过程,其实是一个对最终用户进行调查的过程。一般Web应用系统采取在主页上做一个调查问卷的形式,来得到最终用户的反馈信息。 对所有的可用性测试来说,都需要有外部人员(与Web应用系统开发没有联系或联系很少的人员)的参与,最好是最终用户的参与。 5 兼容性测试 需要验证应用程序可以在用户使用的机器上运行。如果您用户是全球范围的,需要测试各种操作系统、浏览器、视频设置和 modem 速度。最后,还要尝试各种设置的组合。 ●平台测试 市场上有很多不同的操作系统类型,最常见的有Windows、Unix、Macintosh、Linux等。Web应用系统的最终用户究竟使用哪一种操作系统,取决于用户系统的配置。这样,就可能会发生兼容性问题,同一个应用可能在某些操作系统下能正常运行,但在另外的操作系统下可能会运行失败。 因此,在Web系统发布之前,需要在各种操作系统下对Web系统进行兼容性测试。 ●浏览器测试 浏览器是Web客户端最核心的构件,来自不同厂商的浏览器对Java,、JavaScript、ActiveX、 plug-ins或不同的HTML规格有不同的支持。例如,ActiveX是Microsoft的产品,是为Internet Explorer而设计的,JavaScript是Netscape的产品,Java是Sun的产品等等。另外,框架和层次结构风格在不同的浏览器中也有不同的显示,甚至根本不显示。不同的浏览器对安全性和Java的设置也不一样。 测试浏览器兼容性的一个方法是创建一个兼容性矩阵。在这个矩阵中,测试不同厂商、不同版本的浏览器对某些构件和设置的适应性。采用测试工具: 通过白盒测试或者黑盒测试导出的测试用例,采用相应的工具进行测试,可以采用OpenSTA进行测试,此测试工具可以采用不同的浏览器进行测试。 ●视频测试 页面版式在 640x400、600x800 或 1024x768 的分辨率模式下是否显示正常? 字体是否太小以至于无法浏览? 或者是太大? 文本和图片是否对齐? ●Modem/连接速率测试 是否有这种情况,用户使用 28.8 modem下载一个页面需要 10 分钟,但测试人员在测试的时候使用的是 T1 专线? 用户在下载文章或演示的时候,可能会等待比较长的时间,但却不会耐心等待首页的出现。最后,需要确认图片不会太大。 ●打印机测试 用户可能会将网页打印下来。因此网页在设计的时候要考虑到打印问题,注意节约纸张和油墨。有不少用户喜欢阅读而不是盯着屏幕,因此需要验证网页打印是否正常。有时在屏幕上显示的图片和文本的对齐方式可能与打印出来的东西不一样。测试人员至少需要验证订单确认页面打印是正常的。 ●组合测试 最后需要进行组合测试。600x800 的分辨率在 MAC 机上可能不错,但是在 IBM 兼容机上却很难看。在 IBM 机器上使用 Netscape 能正常显示,但却无法使用 Lynx 来浏览。如果是内部使用的 web 站点,测试可能会轻松一些。如果公司指定使用某个类型的浏览器,那么只需在该浏览器上进行测试。如果所有的人都使用 T1 专线,可能不需要测试下载施加。(但需要注意的是,可能会有员工从家里拨号进入系统) 有些内部应用程序,开发部门可能在系统需求中声明不支持某些系统而只支持一些那些已设置的系统。但是,理想的情况是,系统能在所有机器上运行,这样就不会限制将来的发展和变动。 6 安全测试 Web应用系统的安全性测试区域主要有: ●目录设置 Web 安全的第一步就是正确设置目录。每个目录下应该有 index.html 或 main.html 页面,这样就不会显示该目录下的所有内容。如果没有执行这条规则。那么选中一幅图片,单击鼠标右键,找到该图片所在的路径“…com/objects/images”。然后在浏览器地址栏中手工输入该路径,发现该站点所有图片的列表。这可能没什么关系。但是进入下一级目录 “…com/objects” ,点击 jackpot。在该目录下有很多资料,其中有些都是已过期页面。如果该公司每个月都要更改产品价格信息,并且保存过期页面。那么只要翻看了一下这些记录,就可以估计他们的边际利润以及他们为了争取一个合同还有多大的降价空间。如果某个客户在谈判之前查看了这些信息,他们在谈判桌上肯定处于上风。 ●登录 现在的Web应用系统基本采用先注册,后登陆的方式。因此,必须测试有效和无效的用户名和密码,要注意到是否大小写敏感,可以试多少次的限制,是否可以不登陆而直接浏览某个页面等。 ●Session Web应用系统是否有超时的限制,也就是说,用户登陆后在一定时间内(例如15分钟)没有点击任何页面,是否需要重新登陆才能正常使用。 ●日志文件 为了保证Web应用系统的安全性,日志文件是至关重要的。需要测试相关信息是否写进了日志文件、是否可追踪。 ●加密 当使用了安全套接字时,还要测试加密是否正确,检查信息的完整性。 ●安全漏洞 服务器端的脚本常常构成安全漏洞,这些漏洞又常常被黑客利用。所以,还要测试没有经过授权,就不能在服务器端放置和编辑脚本的问题。 目前网络安全问题日益重要,特别对于有交互信息的网站及进行电子商务活动的网站尤其重要。目前我们的测试没有涵盖网站的安全性的测试,我们拟定采用工具来测定。 工具如下 SAINT------- SecurityAdministrator’s Integrated Network Tool 此工具能够测出网站系统的相应的安全问题,并且能够给出安全漏洞的解决方案,不过是一些较为常见的漏洞解决方案。7 代码合法性测试 代码合法性测试主要包括2个部分:程序代码合法性检查与显示代码合法性检查。 ●程序代码合法性检查 程序代码合法性检查主要标准为《intergrp小组编程规范》,目前采用由SCM管理员进行规范的检查,未来期望能够有相应的工具进行测试。 ●显示代码合法性检查 显示代码的合法性检查,主要分为Html、JavaScript、Css代码检查,目前采用HTML代码检查------采用CSEHTML Validator进行测试JavaScript、Css也可以在网上下载相应的测试工具。 8 文档测试●产品说明书属性检查清单 1)完整.是否有遗漏和丢失,完全吗?单独使用是否包含全部内容 2)准确.既定解决方案正确吗?目标明确吗? 有没有错误? 3)精确、不含糊、清晰.描述是否一清二楚? 还是自说自话?容易看懂和理解吗?4)一致.产品功能能描述是否自相矛盾,与其他功能有没有冲突 5)贴切.描述功能的陈述是否必要?有没有多余信息?功能是否原来的客户要求? 6)合理.在特定的预算和进度下,以现有人力,物力和资源能否实现?7)代码无关.是否坚持定义产品,而不是定义其所信赖的软件设计,架构和代码 8)可测试性.特性能否测试?测试员建立验证操作的测试程序是否提供足够的信息? ●产品说明书用语检查清单1)说明。 对问题的描述通常表现为粉饰没有仔细考虑的功能----可归结于前文所述的属性.从产品说明书上找出这样的用语,仔细审视它们在文中是怎样使用的.产品说明书可能会为其掩饰和开脱,也可能含糊其词----无论是哪一种情况都可视为软件缺陷. 2)总是,每一种,所有,没有,从不.如果看到此类绝对或肯定的,切实认定的叙述,软件测试员就可以着手设计针锋相对的案例. 3)当然,因此,明显,显然,必然.这些话意图诱使接受假定情况.不要中了圈套. 4)某些,有时,常常,通常,惯常,经常,大多,几乎.这些话太过模糊.“有时”发生作用的功能无法测试. 5)等等,诸如此类,依此类推.以这样的词结束的功能清单无法测试.功能清单要绝对或者解释明确,以免让人迷惑,不知如何推论. 6)良好,迅速,廉价,高效,小,稳定.这些是不确定的说法,不可测试.如果在产品说明书中出现,就必须进一步指明含义. 7)已处理,已拒绝,已忽略,已消除.这些廉洁可能会隐藏大量需要说明的功能. 8)如果...那么...(没有否则).找出有“如果...那么...”而缺少配套的“否则”结构的陈述.想一想“如果”没有发生会怎样. 相关的测试工具 · OpenSTA
主要做性能测试的负荷及压力测试,使用比较方便,可以编写测试脚本,也可以先行自动生成测试脚本,而后对于应用测试脚本进行测试。· SAINT
网站安全性测试,能够对于指定网站进行安全性测试,并可以提供安全问题的解决方案。· CSE HTML Validator
一个有用的对于HTML代码进行合法性检查的工具· Ab(Apache Bench)
Apache自带的对于性能测试方面的工具,功能不是很多,但是非常实用。· Crash-me
Mysql自带的测试数据库性能的工具,能够测试多种数据库的性能黑盒测试用例设计 黑盒测试(Black-box Testing,又称为功能测试或数据驱动测试)是把测试对象看作一个黑盒子。利用黑盒测试法进行动态测试时,需要测试软件产品的功能,不需测试软件产品的内部结构和处理过程。 采用黑盒技术设计测试用例的方法有:等价类划分、边界值分析、错误推测、因果图和综合策略。 黑盒测试注重于测试软件的功能性需求,也即黑盒测试使软件工程师派生出执行程序所有功能需求的输入条件。黑盒测试并不是白盒测试的替代品,而是用于辅助白盒测试发现其他类型的错误。 黑盒测试试图发现以下类型的错误: 1)功能错误或遗漏; 2)界面错误; 3)数据结构或外部数据库访问错误; 4)性能错误; 5)初始化和终止错误。 一、黑盒测试的测试用例设计方法 · 等价类划分方法 · 边界值分析方法 · 错误推测方法 · 因果图方法 · 判定表驱动分析方法 · 正交实验设计方法 · 功能图分析方法 等价类划分: 是把所有可能的输入数据,即程序的输入域划分成若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例。该方法是一种重要的,常用的黑盒测试用例设计方法。 1) 划分等价类: 等价类是指某个输入域的子集合。在该子集合中,各个输入数据对于揭露程序中的错误都是等效的。并合理地假定:测试某等价类的代表值就等于对这一类其它值的测试。因此,可以把全部输入数据合理划分为若干等价类,在每一个等价类中取一个数据作为测试的输入条件,就可以用少量代表性的测试数据。取得较好的测试结果。等价类划分可有两种不同的情况:有效等价类和无效等价类。 有效等价类:是指对于程序的规格说明来说是合理的,有意义的输入数据构成的集合。利用有效等价类可检验程序是否实现了规格说明中所规定的功能和性能。 无效等价类:与有效等价类的定义恰巧相反。 设计测试用例时,要同时考虑这两种等价类。因为,软件不仅要能接收合理的数据,也要能经受意外的考验。这样的测试才能确保软件具有更高的可靠性。 2)划分等价类的方法:下面给出六条确定等价类的原则。 ① 在输入条件规定了取值范围或值的个数的情况下,则可以确立一个有效等价类和两个无效等价类。 ② 在输入条件规定了输入值的集合或者规定了“必须如何”的条件的情况下,可确立一个有效等价类和一个无效等价类。 ③ 在输入条件是一个布尔量的情况下,可确定一个有效等价类和一个无效等价类。 ④ 在规定了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理的情况下,可确立n个有效等价类和一个无效等价类。 ⑤ 在规定了输入数据必须遵守的规则的情况下,可确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。 ⑥ 在确知已划分的等价类中各元素在程序处理中的方式不同的情况下,则应再将该等价类进一步的划分为更小的等价类。 3)设计测试用例:在确立了等价类后,可建立等价类表,列出所有划分出的等价类: 输入条件 有效等价类 无效等价类 然后从划分出的等价类中按以下三个原则设计测试用例: ① 为每一个等价类规定一个唯一的编号。 ② 设计一个新的测试用例,使其尽可能多地覆盖尚未被覆盖地有效等价类,重复这一步。直到所有的有效等价类都被覆盖为止。 ③ 设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类,重复这一步。直到所有的无效等价类都被覆盖为止。 边界值分析法 边界值分析方法是对等价类划分方法的补充。 (1)边界值分析方法的考虑: 长期的测试工作经验告诉我们,大量的错误是发生在输入或输出范围的边界上,而不是发生在输入输出范围的内部。因此针对各种边界情况设计测试用例,可以查出更多的错误。 使用边界值分析方法设计测试用例,首先应确定边界情况。通常输入和输出等价类的边界,就是应着重测试的边界情况。应当选取正好等于,刚刚大于或刚刚小于边界的值作为测试数据,而不是选取等价类中的典型值或任意值作为测试数据。 (2)基于边界值分析方法选择测试用例的原则: 1)如果输入条件规定了值的范围,则应取刚达到这个范围的边界的值,以及刚刚超越这个范围边界的值作为测试输入数据。 2)如果输入条件规定了值的个数,则用最大个数,最小个数,比最小个数少一,比最大个数多一的数作为测试数据。 3)根据规格说明的每个输出条件,使用前面的原则1)。 4)根据规格说明的每个输出条件,应用前面的原则2)。 5)如果程序的规格说明给出的输入域或输出域是有序集合,则应选取集合的第一个元素和最后一个元素作为测试用例。 6)如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构的边界上的值作为测试用例。 7)分析规格说明,找出其它可能的边界条件。 错误推测法 错误推测法: 基于经验和直觉推测程序中所有可能存在的各种错误, 从而有针对性的设计测试用例的方法。 错误推测方法的基本思想: 列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据他们选择测试用例。例如, 在单元测试时曾列出的许多在模块中常见的错误。 以前产品测试中曾经发现的错误等, 这些就是经验的总结。 还有, 输入数据和输出数据为0的情况。 输入表格为空格或输入表格只有一行。 这些都是容易发生错误的情况。 可选择这些情况下的例子作为测试用例。 因果图方法前面介绍的等价类划分方法和边界值分析方法,都是着重考虑输入条件,但未考虑输入条件之间的联系, 相互组合等。考虑输入条件之间的相互组合,可能会产生一些新的情况。 但要检查输入条件的组合不是一件容易的事情, 即使把所有输入条件划分成等价类,他们之间的组合情况也相当多。因此必须考虑采用一种适合于描述对于多种条件的组合,相应产生多个动作的形式来考虑设计测试用例。 这就需要利用因果图(逻辑模型)。 因果图方法最终生成的就是判定表。 它适合于检查程序输入条件的各种组合情况。利用因果图生成测试用例的基本步骤: (1) 分析软件规格说明描述中, 那些是原因(即输入条件或输入条件的等价类),那些是结果(即输出条件),并给每个原因和结果赋予一个标识符。 (2) 分析软件规格说明描述中的语义。找出原因与结果之间,原因与原因之间对应的关系。 根据这些关系,画出因果图。 (3) 由于语法或环境限制, 有些原因与原因之间,原因与结果之间的组合情况不不可能出现。为表明这些特殊情况, 在因果图上用一些记号表明约束或限制条件。 (4) 把因果图转换为判定表。(5) 把判定表的每一列拿出来作为依据,设计测试用例。 从因果图生成的测试用例(局部,组合关系下的)包括了所有输入数据的取TRUE与取FALSE的情况,构成的测试用例数目达到最少,且测试用例数目随输入数据数目的增加而线性地增加。 前面因果图方法中已经用到了判定表。判定表(DECisionTable)是分析和表达多逻辑条件下执行不同操作的情况下的工具。在程序设计发展的初期,判定表就已被当作编写程序的辅助工具了。由于它可以把复杂的逻辑关系和多种条件组合的情况表达得既具体又明确。 判定表驱动分析方法判定表通常由四个部分组成。 条件桩(ConDItion STub):列出了问题得所有条件。通常认为列出得条件的次序无关紧要。 动作桩(Action Stub):列出了问题规定可能采取的操作。这些操作的排列顺序没有约束。 条件项(Condition Entry):列出针对它左列条件的取值。在所有可能情况下的真假值。 动作项(Action Entry):列出在条件项的各种取值情况下应该采取的动作。 规则:任何一个条件组合的特定取值及其相应要执行的操作。在判定表中贯穿条件项和动作项的一列就是一条规则。显然,判定表中列出多少组条件取值,也就有多少条规则,既条件项和动作项有多少列。 判定表的建立步骤:(根据软件规格说明) ① 确定规则的个数。假如有n个条件。每个条件有两个取值(0,1),故有种规则。 ② 列出所有的条件桩和动作桩。③ 填入条件项。 ④ 填入动作项。等到初始判定表。 ⑤ 简化、合并相似规则(相同动作)。 B.Beizer 指出了适合使用判定表设计测试用例的条件: ① 规格说明以判定表形式给出,或很容易转换成判定表。 ② 条件的排列顺序不会也不影响执行哪些操作。 ③ 规则的排列顺序不会也不影响执行哪些操作。 ④ 每当某一规则的条件已经满足,并确定要执行的操作后,不必检验别的规则。 ⑤ 如果某一规则得到满足要执行多个操作,这些操作的执行顺序无关紧要。 黑盒测试的优点 1、基本上不用人管着,如果程序停止运行了一般就是被测试程序CRASh了 2、设计完测试例之后,下来的工作就是爽了,当然更苦闷的是确定crash原因 黑盒测试的缺点 1、结果取决于测试例的设计,测试例的设计部分来势来源于经验,OUSPG的东西很值得借鉴 2、没有状态转换的概念,目前一些成功的例子基本上都是针对PDU来做的,还做不到针对被测试程序的状态转换来作 3、就没有状态概念的测试来说,寻找和确定造成程序crash的测试例是个麻烦事情,必须把周围可能的测试例单独确认一遍。而就有状态的测试来说,就更麻烦了,尤其不是一个单独的tEStcase造成的问题。这些在堆的问题中表现的更为突出。 黑盒测试(功能测试)工具的选择 那么,如何高效地完成功能测试?选择一款合适的功能测试工具并培训一支高素质的工具使用队伍无疑是至关重要的。尽管现阶段存在少数不采用任何功能测试工具,从事功能测试外包项目的软件服务企业。短期来看,这类企业盈利状况尚可,但长久来看,它们极有可能被自动化程度较高的软件服务企业取代。 目前,用于功能测试的工具软件有很多,针对不同架构软件的工具也不断推陈出新。这里重点介绍的是其中一个较为典型自动化测试工具,即Mercury公司的WinRunner。 WinRunner是一种用于检验应用程序能否如期运行的企业级软件功能测试工具。通过自动捕获、检测和模拟用户交互操作,WinRunner能识别出绝大多数软件功能缺陷,从而确保那些跨越了多个功能点和数据库的应用程序在发布时尽量不出现功能性故障。 WinRunner的特点在于: 与传统的手工测试相比,它能快速、批量地完成功能点测试;能针对相同测试脚本,执行相同的动作,从而消除人工测试所带来的理解上的误差; 此外,它还能重复执行相同动作,测试工作中最枯燥的部分可交由机器完成; 它支持程序风格的测试脚本,一个高素质的测试工程师能借助它完成流程极为复杂的测试,通过使用通配符、宏、条件语句、循环语句等,还能较好地完成测试脚本的重用;它针对于大多数编程语言和Windows技术,提供了较好的集成、支持环境,这对基于Windows平台的应用程序实施功能测试而言带来了极大的便利。 WinRunner的工作流程大致可以分为以下六个步骤:1.识别应用程序的GUI 在WinRunner中,我们可以使用GUI Spy来识别各种GUI对象,识别后,WinRunner会将其存储到GUI Map File中。它提供两种GUI Map File模式: Global GUI Map File和GUI Map File per Test。其最大区别是后者对每个测试脚本产生一个GUI文件,它能自动建立、存储、加载,推荐初学者选用这种模式。但是,这种模式不易于描述对象的改变,其效率比较低,因此对于一个有经验的测试人员来说前者不失为一种更好的选择,它只产生一个共享的GUI文件,这使得测试脚本更容易维护,且效率更高。 2.建立测试脚本 在建立测试脚本时,一般先进行录制,然后在录制形成的脚本中手工加入需要的TSL(与C语言类似的测试脚本语言)。录制脚本有两种模式: Context Sensitive和Analog,选择依据主要在于是否对鼠标轨迹进行模拟,在需要回放时一般选用Analog。在录制过程中这两种模式可以通过F2键相互切换。 只要看看现代软件的规模和功能点数就可以明白,功能测试早已跨越了单靠手工敲敲键盘、点点鼠标就可以完成的阶段。而性能测试则是控制系统性能的有效手段,在软件的能力验证、能力规划、性能调优、缺陷修复等方面都发挥着重要作用。 3.对测试脚本除错(debug) 在WinRunner中有专门一个Debug TOOlbar用于测试脚本除错。可以使用step、pause、breakpoint等来控制和跟踪测试脚本和查看各种变量值。 4.在新版应用程序执行测试脚本 当应用程序有新版本发布时,我们会对应用程序的各种功能包括新增功能进行测试,这时当然不可能再来重新录制和编写所有的测试脚本。我们可以使用已有的脚本,批量运行这些测试脚本测试旧的功能点是否正常工作。可以使用一个call命令来加载各测试脚本。还可在call命令中加各种TSL脚本来增加批量能力。 5.分析测试结果 分析测试结果在整个测试过程中最重要,通过分析可以发现应用程序的各种功能性缺陷。当运行完某个测试脚本后,会产生一个测试报告,从这个测试报告中我们能发现应用程序的功能性缺陷,能看到实际结果和期望结果之间的差异,以及在测试过程中产生的各类对话框等。 6.回报缺陷(defect) 在分析完测试报告后,按照测试流程要回报应用程序的各种缺陷,然后将这些缺陷发给指定人,以便进行修改和维护。 常用的功能测试方法 功能测试就是对产品的各功能进行验证,根据功能测试用例,逐项测试,检查产品是否达到用户要求的功能。常用的测试方法如下: 1、页面链接检查:每一个链接是否都有对应的页面,并且页面之间切换正确。 2、相关性检查:删除/增加一项会不会对其他项产生影响,如果产生影响,这些影响是否都正确。 3、检查按钮的功能是否正确:如update, cancel,delete, SAve等功能是否正确。 4、字符串长度检查: 输入超出需求所说明的字符串长度的内容,看系统是否检查字符串长度,会不会出错。 5、字符类型检查: 在应该输入指定类型的内容的地方输入其他类型的内容(如在应该输入整型的地方输入其他字符类型),看系统是否检查字符类型,会否报错。6、标点符号检查: 输入内容包括各种标点符号,特别是空格,各种引号,回车键。看系统处理是否正确。 7、中文字符处理: 在可以输入中文的系统输入中文,看会否出现乱码或出错。 8、检查带出信息的完整性: 在查看信息和update信息时,查看所填写的信息是不是全部带出。,带出信息和添加的是否一致 9、信息重复: 在一些需要命名,且名字应该唯一的信息输入重复的名字或ID,看系统有没有处理,会否报错,重名包括是否区分大小写,以及在输入内容的前后输入空格,系统是否作出正确处理。 10、检查删除功能:在一些可以一次删除多个信息的地方,不选择任何信息,按”delete”,看系统如何处理,会否出错;然后选择一个和多个信息,进行删除,看是否正确处理。 11、检查添加和修改是否一致: 检查添加和修改信息的要求是否一致,例如添加要求必填的项,修改也应该必填;添加规定为整型的项,修改也必须为整型。 12、检查修改重名:修改时把不能重名的项改为已存在的内容,看会否处理,报错。同时,也要注意,会不会报和自己重名的错。 13、重复提交表单:一条已经成功提交的纪录,back后再提交,看看系统是否做了处理。 14、检查多次使用back键的情况: 在有back的地方,back,回到原来页面,再back,重复多次,看会否出错。 15、search检查:在有search功能的地方输入系统存在和不存在的内容,看search结果是否正确。如果可以输入多个search条件,可以同时添加合理和不合理的条件,看系统处理是否正确。 16、输入信息位置: 注意在光标停留的地方输入信息时,光标和所输入的信息会否跳到别的地方。17、上传下载文件检查:上传下载文件的功能是否实现,上传文件是否能打开。对上传文件的格式有何规定,系统是否有解释信息,并检查系统是否能够做到。 18、必填项检查:应该填写的项没有填写时系统是否都做了处理,对必填项是否有提示信息,如在必填项前加* 19、快捷键检查:是否支持常用快捷键,如Ctrl+C Ctrl+V Backspace等,对一些不允许输入信息的字段,如选人,选日期对快捷方式是否也做了限制。 20、回车键检查: 在输入结束后直接按回车键,看系统处理如何,会否报错。 Web测试中的界面测试用例设计 一、文本框、按钮等控件测试 1、文本框的测试 如何对文本框进行测试: a、输入正常的字母或数字; b、输入已存在的文件的名称; c、输入超长字符。例如在“名称”框中输入超过允许边界个数的字符,假设最多255个字符,尝试输入256个字符,检查程序能否正确处理; d、输入默认值,空白,空格; e、若只允许输入字母,尝试输入数字;反之,尝试输入字母; f、利用复制,粘贴等操作强制输入程序不允许的输入数据; g、输入特殊字符集,例如,NUL及 等; h、输入超过文本框长度的字符或文本,检查所输入的内容是否正常显示; i、输入不符合格式的数据,检查程序是否正常校验,如程序要求输入年月日格式为yy/mm/dd,实际输入yyyy/mm/dd,程序应该给出错误提示。 在测试过程中所用到的测试方法: a、输入非法数据; b、输入默认值; c、输入特殊字符集; d、输入使缓冲区溢出的数据; e、输入相同的文件名; 2、命令按钮控件的测试 测试方法: a、点击按钮正确响应操作。如单击确定,正确执行操作;单击取消,退出窗口; b、对非法的输入或操作给出足够的提示说明,如输入月工作天数为32时,单击“确定”后系统应提示:天数不能大于31; c、对可能造成数据无法恢复的操作必须给出确认信息,给用户放弃选择的机会; 3、单选按钮控件的测试 测试方法: a、一组单选按钮不能同时选中,只能选中一个; b、逐一执行每个单选按钮的功能。分别选择了“男”、“女”后,保存到数据库的数据应该相应的分别为“男”、“女”; c、一组执行同一功能的单选按钮在初始状态时必须有一个被默认选中,不能同时为空。 4、up-down控件文本框的测试 测试方法: a、直接输入数字或用上下箭头控制,如在“数目”中直接输入10,或者单击向上的箭头,使数目变为10; b、利用上下箭头控制数字的自动循环,如当最多数字为253时,单击向上箭头,数目自动变为1;反之亦适用; c、直接输入超边界值,系统应该提示重新输入; d、输入默认值,空白。如“插入”数目为默认值,点击“确定”;或删除默认值,使内容为空,单击“确定”进行测试; e、输入字符。此时系统应提示输入有误。 5、组合列表框的测试 测试方法: a、条目内容正确,其详细条目内容可以根据需求说明确定; b、逐一执行列表框中每个条目的功能; c、检查能否向组合列表框输入数据。 6、复选框的测试 测试方法: a、多个复选框可以被同时选中; b、多个复选框可以被部分选中; c、多个复选框可以都不被选中; d、逐一执行每个复选框的功能。 7、列表框控件的测试 测试方法: a、条目内容正确:同组合列表框类似,根据需求说明书确定列表的各项内容正确,没有丢失或错误; b、列表框的内容较多时要使用滚动条; c、列表框允许多选时,要分别检查shift选中条目,按ctrl选中条目和直接用鼠标选中多项条目的情况; 8、滚动条控件的测试 要注意一下几点: a、滚动条的长度根据显示信息的长度或宽度及时变换,这样有利于用户了解显示信息的位置和百分比,如word中浏览100页文档,浏览到50页时,滚动条位置应处于中间; b、拖动滚动条,检查屏幕刷新情况,并查看是否有乱码; c、单击滚动条; d、用滚轮控制滚动条; e、滚动条的上下按钮。 9、各种控件在窗体中混和使用时的测试 a、控件间的相互作用; b、tab键的顺序,一般是从上到下,从左到右; c、热键的使用,逐一测试; d、enter键和esc键的使用。 在测试中,应遵循由简入繁的原则,先进行单个控件功能的测试,确保实现无误后,再进行多个控件的的功能组合的测试。 ps:密码输入框测试时要特别注意进行字母大写输入的测试。 二、查找替换操作 案例演示:打开word中的“替换”对话框。 测试本功能有通过测试和失败测试两种情况: 通过测试: a、输入内容直接查找、或查找全部; b、在组合框中寻找已经查找过的内容、再次查找并确认文档的内容正确,如已经查找过“测试用例”、再次进入不用重新输入查找内容、直接在文档中搜寻就可以。 失败测试: a、输入过长或过短的查询字符串。如假设查询的字符串长度为1到255,那么,输入0、1、2、256、255和254进行测试; b、输入特殊字符集。如在word中^g代表图片、^代表分栏符、可以输入这类特殊字符测试;替换测试大体相同。 关于编辑操作窗口的功能测试的用例: a、关闭查找替换窗口。不执行任何操作、直接退出; b、附件和选项测试。假如设定“精确搜寻”、“向后”搜索等附件选项等等来测试; c、控件间的相互作用。如搜寻内容为空时、按钮“搜寻全部”、“搜寻”、“全部替换”、“替换”都为灰色。 d、热键、Tab键。回车键的使用。 插入操作 1、插入文件 测试的情况: a、插入文件; b、插入图像; c、在文档中插入文档本身; d、移除插入的源文件; e、更换插入的源文件的内容。 2、链接文件 测试方法: a、插入链接文件; b、在文档中链接文档本身; c、移除插入的源文件: d、更换插入的源文件的内容。 3、插入对象 要测试的内容: a、插入程序允许的对象、如在word中插入excel工作表; b、修改所插入对象的内容。插入的对象仍能正确显示; c、卸载生成插入对象的程序、如在word中插入excel工作表后卸载excel、工作表仍正常使用。 编辑操作 编辑操作包括剪切、复制、粘贴操作。 测试剪切操作的方法 a、对文本、文本框、图文框进行剪切; b、剪切图像; c、文本图像混合剪切。 复制操作方法与剪切类似。 测试时,主要是对粘贴操作的测试方法是: a、粘贴剪切的文本、文本框及图文框; b、粘贴所剪切的图像; c、剪切后,在不同的程序中粘贴; d、多次粘贴同一内容,如剪切后,在程序中连续粘贴3次; e、利用粘贴操作强制输入程序所不允许输入的数据。 三、界面测试用例的设计方法 1、窗体 测试窗体的方法: a、窗体大小,大小要合适,控件布局合理; b、移动窗体。快速或慢速移动窗体,背景及窗体本身刷新必须正确; c、缩放窗体,窗体上的控件应随窗体的大小变化而变化; d、显示分辨率。必须在不同的分辨率的情况下测试程序的显示是否正常。 进行测试时还要注意状态栏是否显示正确,工具栏的图标执行操作是否有效,是否与菜单懒中图标显示一致;错误信息内容是否正确、无错别字且明确等等。 2、控件 测试方法: a、窗体或控件的字体和大小要一致; b、注意全角、半角混合; c、无中英文混合。 四、菜单 进行测试时要注意: a、选择菜单是否可以正常工作、并与实际执行内容一致; b、是否有错别字; c、快捷键是否重复; d、热键是否重复; e、快捷键与热键操作是否有效; f、是否存在中英文混合; g、菜单要与语境相关、如、不同权限的用户登陆一个应用程序、不同级别的用户可以看到不同级别的菜单并使用不同级别的功能; h、鼠标右键快捷菜单。 特殊属性 a、安装界面应有公司介绍或产品介绍、有公司的图标; b、主界面及大多数界面最好有公司图标; c、选择“帮助”->“关于”命令、应看见相关版权和产品信息。 代替测试用例的检查表 2004年底在大连出差的时候,帮一个项目做测试,顺便写下这个检查表,这个检查表对测试的初学者积累经验比较有用,实际对于有经验的测试人员尤其对于测试业务管理信息系统,基本上大量的测试不需要再编写测试用例,当然对业务流程、复杂逻辑还是要设计详细的测试用例的。如果你测试的系统是有大量人机交互的业务管理信息系统,而且你又比较懒惰,那就可以使用这个检查表检查了。 因此我总结了这类系统中常用的测试的检查项,供当时项目组的测试人员使用,现在再次整理出来发于博客。 1 针对测试组长或测试经理 1.1测试管理工作检查表: 1. 检查每轮测试开始时测试环境是否准备好(包括软件硬件、测试基本数据等); 2. 确保测试环境(数据和程序)与开发分离,除了测试组之外其他人不能更新测试环境的数据和程序; 3. 每轮测试根据上一轮的情况和总体测试计划做分工调整; 4. 检查case库的填报情况,抽查执行过的case; 5. 检查BUG提交情况,抽查提交的BUG是否规范; 6. 每天晚上统计BUG情况,填写每天的BUG报告; 7. 根据每天的测试情况,决定是否开发组要发布新的BUILD; 8. 每轮测试结束后填写测试总结。 2 下面是针对测试执行人员的: 2.1输入、编辑功能的验证检查点: 1. 必输项是否有红星标记,如果不输入提示是否跟相应的Label对应,提示的顺序是否跟Form输入域的排列次序一致; 2. 输入的特殊字符是否能正确处理:`~!@#$%^&*()_+-={}[]|:;”’<>,./?; |