标签归档:web测试

常用的网站功能测试方法

网站功能测试就是对产品的各功能进行验证,根据功能测试用例,逐项测试,检查产品是否达到用户要求的功能。常用的测试方法如下: 1、页面链接检查: 每一个链接是否都有对应的页面,并且页面之间切换工具,如LinkBotPro、File-AIDCS、HTML Link Validater、Xenu等工具。LinkBotPro不支持中文,中文字符显示为乱码;HTML Link Validater只能测试以Html或者htm结尾的网页链接;Xenu无需安装,支持asp、do、jsp等结尾的网页,同时能够生成html格式的测试报告。 2、相关性检查:删除/增加一项会不会对其他项产生影响,如果产生影响,这些影响是否都正确检查按钮的功能是否正确 如新建、编辑、删除、关闭、返回、保存、导入等功能是否正确。 3、字符类型检查:在应该输入指定类型的内容的地方输入其他类型的内容(如在应该输入整型的地方输入其他字符类型),看系统是否检查字符类型。 1)标点符号检查:输入内容包括各种标点符号,特别是空格,各种引号,回车键。看系统处理是否正确。 2)特殊字符检查:输入特殊符号,如@、#、$、%、!等,看系统处理是否正确。 3)字符串长度检查: 输入超出需求所说明的字符串长度的内容, 看系统是否检查字符串长度。 4、中文字符处理:在可以输入中、英文的系统输入中文,看会否出现乱码或出错。 检查信息的完整性 在查看信息和更新信息时,查看所填写的信息是不是全部更新,更新信息和添加信息是否一致。 5、信息重复:在一些需要命名,且名字应该唯一的信息输入重复的名字或ID,看系统有没有处理,会否报错,重名包括是否区分大小写,以及在输入内容的前后输入空格,系统是否作出正确处理。 6、检查删除功能:在一些可以一次删除多个信息的地方,不选择任何信息,按“delete”,看系统如何处理,会否出错;然后选择一个和多个信息,进行删除,看是否正确处理。 7、检查添加和修改是否一致:检查添加和修改信息的要求是否一致,例如添加要求必填的项,修改也应该必填;添加规定为整型的项,修改也必须为整型 8、检查修改重名:修改时把不能重名的项改为已存在的内容,看会否处理,报错.同时,也要注意,会不会报和自己重名的错 9、重复提交表单:一条已经成功提交的纪录,返回后再提交,看看系统是否做了处理。对于Web系统检查多次使用返回键的情况 在有返回键的地方,返回到原来页面,重复多次,看会否出错 10、搜索检查:有搜索功能的地方输入系统存在和不存在的内容,看搜索结果是否正确.如果可以输入多个搜索条件,可以同时添加合理和不合理的条件,看系统处理是否正确。 11、输入信息位置:注意在光标停留的地方输入信息时,光标和所输入的信息会否跳到别的地方。 12、上传下载文件检查:上传下载文件的功能是否实现,上传文件是否能打开。对上传文件的格式有何规定,系统是否有解释信息,并检查系统是否能够做到。下载文件能否打开或者保存,下载的文件是否有格式要求,如需要特殊工具才可以打开等。 13、必填项检查:应该填写的项没有填写时系统是否都做了处理,对必填项是否有提示信息,如在必填项前加“*”;对必填项提示返回后,焦点是否会自动定位到必填项。 14、快捷键检查:是否支持常用快捷键,如Ctrl+C、 Ctrl+V、 Backspace等,对一些不允许输入信息的字段,如选人,选日期对快捷方式是否也做了限制。 15、回车键检查:在输入结束后直接按回车键,看系统处理如何,会否报错。 16、刷新键检查:在Web系统中,使用浏览器的刷新键,看系统处理如何,会否报错。 17、回退键检查:在Web系统中,使用浏览器的回退键,看系统处理如何,会否报错。对于需要用户验证的系统,在退出登录后,使用回退键,看系统处理如何;多次使用回退键,多次使用前进键,看系统如何处理。 18、直接URL链接检查:在Web系统中,直接输入各功能页面的URL地址,看系统如何处理,对于需要用户验证的系统更为重要。 19、空格检查:在输入信息项中,输入一个或连串空格,查看系统如何处理。如对于要求输入整型、符点型变量的项中,输入空格,既不是空值,又不是标准输入。 20、输入法半角全角检查:在输入信息项中,输入半角或全角的信息,查看系统如何处理。如对于要求输入符点型数据的项中,输入全角的小数点(“。”或“.”,如4.5);输入全角的空格等。 21、密码检查:一些系统的加密方法采用对字符Ascii码移位的方式,处理密码加密相对较为简单,且安全性较高,对于局域网系统来说,此种方式完全可以起到加密的作用,但同时,会造成一些问题,即大于128的Ascii对应的字符在解密时无法解析,尝试使用“uvwxyz”等一些码值较大的字符作为密码,同时,密码尽可能的长,如17位密码等,造成加密后的密码出现无法解析的字符。 22、用户检查:任何一个系统,都有各类不同的用户,同样具有一个或多个管理员用户,检查各个管理员之间是否可以相互管理,编辑、删除管理员用户。同时,对于一般用户,尝试删除,并重建同名的用户,检查该用户其它信息是否重现。同样,提供注销功能的系统,此用户再次注册时,是否作为一个新的用户。 23、系统数据检查:这是功能测试最重要的,如果系统数据计算不正确,那么功能测试肯定是通不过的。数据检查根据不同的系统,方法不同。对于业务管理平台,数据随业务过程、状态的变化保持正确,不能因为某个过程出现垃圾数据,也不能因为某个过程而丢失数据。 … 继续阅读

发表在 软件测试 | 标签为 , | 一条评论

Cross-site scripting(XSS)

定义:Cross-site scripting(XSS),是一种经常出现在Web应用中的计算机安全漏洞,它允许恶意Web用户将代码植入到提供给其它用户使用的页面中。比如,包括HTML代码和客户端脚本的页面。为不和层叠样式表(CSS)的缩写混淆,通常将跨站脚本缩写为XSS。攻击者一般会利用XSS漏洞旁路掉访问控制——例如同源策略(same origin policy)或发起phishing攻击,网页挂马,cookie窃取等。 上面的定义有点别扭不好理解,让我们回忆一下SQL Injection是把恶意的代码注入的数据库并且执行该SQL语句,最后返回相应数据,所以SQL Injection是作用于数据库的,而XSS是通过发送恶意的代码到服务,让服务器把恶意代码发送到其他用户浏览器中,最后劫持用户浏览器,所以XSS是作用于用户的。 1.1.2 正文 XSS主要攻击方式有两种: 一种就像SQL Injection攻击一样,我把一段脚本注入到服务器上,用户访问方法服务器的某个URL,这个URL就会把远端的js注入进来,这个js有可能自动进行很多操作。比如这次事件中的帮你发微博,帮你发站内消息等。注入有很多方法,比如:提交表单,更改URL参数,上传图片,设置签名,等等。 另一类则是来自外部的攻击,主要指的自己构造XSS 跨站漏洞网页或者寻找非目标机以外的有跨站漏洞的网页。如当我们要渗透一个站点,我们自己构造一个跨站网页放在自己的服务器上,然后通过结合其它技术,如社会工程学等,欺骗目标服务器的管理员打开。这一类攻击的威胁相对较低,至少Ajax 要发起跨站调用是非常困难的(你可能需要hack浏览器)。 现在让我们通过具体的例子来看看XSS攻击是如何发生的,假设现在有一个招聘网站www.examplejob.com,它提供在该网站已注册的用户发布招聘信息和发送招聘信息到注册用户的功能。 图1 发布正常招聘信息 通过该网站的发布招聘信息功能,我们把招聘信息发送到该网站的服务器中,然后服务器会把信息发送到注册用户中,这样我们就实现了发布信息的目的了,然而当一些不怀好意好意的用户他们很可能利用该网站存在的漏洞对用户进行攻击。 图2发布恶意招聘信息 如上图所示,不怀好意好意的用户会把恶意代码,如:JavaScript, VBScript, ActiveX, HTML或 Flash等,把它们嵌入到发布的信息中去,然后发送到服务器中,如果服务器没有很好的校验信息,直接把信息转发到用户,这将导致一场XSS攻击灾难。 通过上面的示意例子我们发现XSS攻击和SQL Injection存在着相同点,它们是通过注恶意代码进行攻击的,不同点是它们攻击对象不尽相同。 XSS是通过注入恶意代码,如:JavaScript, VBScript, ActiveX, HTML, 或 Flash等来劫持用户浏览器,进而通过构造恶意的URL。 通过构造恶意URL攻击 假设现在有一个网站,它提供链接到www.examplejob.com网站的链接,这样链接再普通不过了,但大家有没有思考过这些外部链接可能存在危险呢? 图3 正常页面跳转 通过上图,可以看到状态栏告诉我们这个链接将跳转到http://www.exmplejob.com,为了更加直观地分析XSS攻击,我们直接在地址栏中添加url参数实现跳转,示意代码如下: 页面实现: You … 继续阅读

发表在 自动化测试 | 标签为 , , | 一条评论

Selenium 中文API

概念 Selenium 通过命令进行驱动。Selenium 可归纳为三种“风格”:动作、辅助和断言。每一个命令调用就是下表中的一行。 命令 目标 值 动作(Actions)命令一般用于操作应用程序的状态。它们通过如”点击链接”和”选择选项”的方式进行工作。如果一个动作执行失败,或是有错误,当前的测试将会停止执行。 许多动作可以被包含后缀”并等待”的方式进行调用,例如,”点击并等待”。这个后缀告知Selenium,该命令将使浏览器向服务器产生一个请求,并使得Selenium等待加载一个新的页面。 辅助(Accessors)用于检查应用程序的状态并将结果存储在变量中。例如”storeTitle”。它们同样可用于自动生成断言。 断言(Assertions)类似于辅助,但它们可以验证应用程序的状态是否同所期望的相一致。例如包括”确认页面标题为X”和”验证该复选框是否被勾选”。 所有的Selenium断言可以被用于三种模式:”assert”, “verify”,和”waitfor”。 例如,你可以”assertText”,”verifyText”,及”waitforText”。当”assert”失败时,该测试将终止。当”verify”失败时,该测试将继续执行,并将错误记入日志。这就允许了通过单条”assert”确保应用程序在正确的页面上,而通过一系列的”verify”断言测试表单上的区域值,标签等。 “waitfor”命令用于等待某些条件变为真(可用于Ajax应用程序的测试)。如果该条件已经为真,他们将立即成功执行。反之,如果该条件不为真,则将失败并暂停测试,直到超过当前所设定的超时时间(参照后面的setTimeout动作)。 元素定位器(Element Locators)告诉Selenium是向HTML中的哪一个元素发送命令。许多命令需要一个如”target”属性的元素定位器。这其中包括”elementId”和”document. forms[0].element”。在接下来的部分将更详细的描述它们。 式样(Patterns)由于多种因素被使用着,如指定一个输入域的期望值,或识别一个选择选项。Selenium支持许多类型的式样,其中包括正则表达式,所有这些将在接下来的章节中进行更详细的描述。 定义一个类用于运行Selenium命令。 元素定位器(Element Locators) 元素定位器(Element Locators)告诉Selenium是向HTML中的哪一个元素发送命令。一个定位器的格式如下: locatorType = argument 我们支持如下写法用于定位元素: ·identifier=id :根据指定的@id属性选择元素。如果没有匹配的值,则选择第一个@name属性为id的元素。(参照后面) ·id=id :根据指定的@id属性选择元素。 ·name=name :选择第一个根据指定的@name所查找到的元素。 〇 username 〇 name=username 这里的name可以作为可选项跟在一个或多个元素过滤器的后面,通过空格进行分隔。如果没有指定过滤类型,则假定为value。 〇 name=flavour … 继续阅读

发表在 实用工具, 自动化测试 | 标签为 , , | 留下评论

selenium(入门 )

selenium(入门 ) 一.Selenium是什么? Selenium 是ThroughtWorks 公司一个强大的开源Web 功能测试工具系列, 1. Selenium 可以使用录制工具录制脚本,测试页面。 2. Selenium 可以生成类html 代码,java 代码,ruby 代码等。 3. Selenium 录制工具根据id 属性定位html 元素 4.Selenium IDE 仅支持Selenium 语言。 5.Selenium RC 支持很多语言,如:C#,Java,Python,Ruby 等。 二.需要的软件 1, 安装Firefox,Selenium IDE 插件,Firebug 插件。 2, 解压Selenium 的selenium-remote-control 包,得到一个服务器。 3, … 继续阅读

发表在 自动化测试 | 标签为 , | 留下评论