1、关于正保集团软件测试文档鉴于公司开发的多数产品都是基于web开发的,现在也趋向于逐渐用java去代替其他开发脚本。在这里着重从java开发站点的角度,结合正保公司特点,把正保集团软件测试分为以下几个部分: 功能测试功能测试就是对产品的各功能进行验证,根据功能测试用例,逐项测试,检查产品是否达到用户要求的功能。针对Web应用的常用测试方法如下: 1. 页面链接检查:每一个链接是否都有对应的页面,并且页面之间切换正确。 2. 相关性检查:删除/增加一项会不会对其他项产生影响,如果产生影响,这些影响是否都正确。 3. 检查按钮的功能是否正确:如update, cancel, delete, save
2、等功能是否正确。 4. 字符串长度检查: 输入超出需求所说明的字符串长度的内容, 看系统是否检查字符串长度,会不会出错。 5. 字符类型检查: 在应该输入指定类型的内容的地方输入其他类型的内容(如在应该输入整型的地方输入其他字符类型),看系统是否检查字符类型,会否报错。 6. 标点符号检查: 输入内容包括各种标点符号,特别是空格,各种引号,回车键。看系统处理是否正确。 7. 中文字符处理: 在可以输入中文的系统输入中文,看会否出现乱码或出错。 8. 检查带出信息的完整性: 在查看信息和update信息时,查看所填写的信息是不是全部带出。带出信息和添加的是否一致9. 信息重复: 在一些需要命名,
3、且名字应该唯一的信息输入重复的名字或ID,看系统有没有处理,会否报错,重名包括是否区分大小写,以及在输入内容的前后输入空格,系统是否作出正确处理。 10. 检查删除功能:在一些可以一次删除多个信息的地方,不选择任何信息,按“delete”,看系统如何处理,会否出错;然后选择一个和多个信息,进行删除,看是否正确处理。 11. 检查添加和修改是否一致: 检查添加和修改信息的要求是否一致,例如添加要求必填的项,修改也应该必填;添加规定为整型的项,修改也必须为整型。 12. 检查修改重名:修改时把不能重名的项改为已存在的内容,看会否处理,报错。同时,也要注意,会不会报和自己重名的错。 13. 重复提交
4、表单:一条已经成功提交的纪录,back后再提交,看看系统是否做了处理。 14. 检查多次使用back键的情况: 在有back的地方,back,回到原来页面,再back,重复多次,看会否出错。 15. search检查: 在有search功能的地方输入系统存在和不存在的内容,看search结果是否正确。如果可以输入多个search条件,可以同时添加合理和不合理的条件,看系统处理是否正确。1、链接测试链接是Web应用系统的一个主要特征,它是在页面之间切换和指导用户去一些不知道地址的页面的主要手段。链接测试可分为三个方面: 首先,测试所有链接是否按指示的那样确实链接到了该链接的页面; 其次,测试所链
5、接的页面是否存在; 最后,保证Web应用系统上没有孤立的页面,所谓孤立页面是指没有链接指向该页面,只有知道正确的URL地址才能访问。2、表单测试当用户给Web应用系统管理员提交信息时,就需要使用表单操作,例如用户注册、登陆、信息提交等。在这种情况下,我们必须测试提交操作的完整性,以校验提交给服务器的信息的正确性。例如:用户填写的出生日期与职业是否恰当,填写的所属省份与所在城市是否匹配等。如果使用了默认值,还要检验默认值的正确性。如果表单只能接受指定的某些值,则也要进行测试。例如:只能接受某些字符,测试时可以跳过这些字符,看系统是否会报错。3、Cookies测试Cookies通常用来存储用户信息
6、和用户在某应用系统的操作,当一个用户使用Cookies访问了某一个应用系统时,Web服务器将发送关于用户的信息,把该信息以Cookies的形式存储在客户端计算机上,这可用来创建动态和自定义页面或者存储登陆等信息。如果Web应用系统使用了Cookies,就必须检查Cookies是否能正常工作。测试的内容可包括Cookies是否起作用,是否按预定的时间进行保存,刷新对Cookies有什么影响等。4、设计语言测试Web设计语言版本的差异可以引起客户端或服务器端严重的问题,例如使用哪种版本的HTML等。当在分布式环境中开发时,开发人员都不在一起,这个问题就显得尤为重要。除了HTML的版本问题外,不同的
7、脚本语言,例如Java、JavaScript、ActiveX、VBScript或Perl等也要进行验证。5、数据库测试在Web应用技术中,数据库起着重要的作用,数据库为Web应用系统的管理、运行、查询和实现用户对数据存储的请求等提供空间。在Web应用中,最常用的数据库类型是关系型数据库,可以使用SQL对信息进行处理。在使用了数据库的Web应用系统中,一般情况下,可能发生两种错误,分别是数据一致性错误和输出错误。数据一致性错误主要是由于用户提交的表单信息不正确而造成的,而输出错误主要是由于网络速度或程序设计问题等引起的,针对这两种情况,可分别进行测试。网站功能测试就是对产品的各功能进行验证,根据
8、功能测试用例,逐项测试,检查产品是否达到用户要求的功能。常用的测试方法如下: 1、页面链接检查: 每一个链接是否都有对应的页面,并且页面之间切换工具。2、相关性检查:删除/增加一项会不会对其他项产生影响,如果产生影响,这些影响是否都正确检查按钮的功能是否正确 如新建、编辑、删除、关闭、返回、保存、导入等功能是否正确。 3、字符类型检查:在应该输入指定类型的内容的地方输入其他类型的内容(如在应该输入整型的地方输入其他字符类型),看系统是否检查字符类型。 1)标点符号检查:输入内容包括各种标点符号,特别是空格,各种引号,回车键。看系统处理是否正确2)特殊字符检查:输入特殊符号,如、#、$、%、!等
9、,看系统处理是否正确。3)字符串长度检查: 输入超出需求所说明的字符串长度的内容, 看系统是否检查字符串长度。4、中文字符处理:在可以输入中、英文的系统输入中文,看会否出现乱码或出错。检查信息的完整性 在查看信息和更新信息时,查看所填写的信息是不是全部更新,更新信息和添加信息是否一致。5、信息重复:在一些需要命名,且名字应该唯一的信息输入重复的名字或ID,看系统有没有处理,会否报错,重名包括是否区分大小写,以及在输入内容的前后输入空格,系统是否作出正确处理。6、检查删除功能:在一些可以一次删除多个信息的地方,不选择任何信息,按“删除”,看系统如何处理,会否出错;然后选择一个和多个信息,进行删除
10、,看是否正确处理。7、检查添加和修改是否一致:检查添加和修改信息的要求是否一致,例如添加要求必填的项,修改也应该必填;添加规定为整型的项,修改也必须为整型8、检查修改重名:修改时把不能重名的项改为已存在的内容,看会否处理,报错.同时,也要注意,会不会报和自己重名的错9、重复提交表单:一条已经成功提交的纪录,返回后再提交,看看系统是否做了处理。对于Web系统检查多次使用返回键的情况 在有返回键的地方,返回到原来页面,重复多次,看会否出错10、搜索检查:有搜索功能的地方输入系统存在和不存在的内容,看搜索结果是否正确.如果可以输入多个搜索条件,可以同时添加合理和不合理的条件,看系统处理是否正确。11
11、、输入信息位置:注意在光标停留的地方输入信息时,光标和所输入的信息会否跳到别的地方。12、上传下载文件检查:上传下载文件的功能是否实现,上传文件是否能打开。对上传文件的格式有何规定,系统是否有解释信息,并检查系统是否能够做到。下载文件能否打开或者保存,下载的文件是否有格式要求,如需要特殊工具才可以打开等。13、必填项检查:应该填写的项没有填写时系统是否都做了处理,对必填项是否有提示信息,如在必填项前加“*”;对必填项提示返回后,焦点是否会自动定位到必填项。14、快捷键检查:是否支持常用快捷键,如Ctrl+C、 Ctrl+V、 Backspace等,对一些不允许输入信息的字段,如选人,选日期对快
12、捷方式是否也做了限制。15、回车键检查:在输入结束后直接按回车键,看系统处理如何,会否报错。16、刷新键检查:在Web系统中,使用浏览器的刷新键,看系统处理如何,会否报错。 17、回退键检查:在Web系统中,使用浏览器的回退键,看系统处理如何,会否报错。对于需要用户验证的系统,在退出登录后,使用回退键,看系统处理如何;多次使用回退键,多次使用前进键,看系统如何处理。18、直接URL链接检查:在Web系统中,直接输入各功能页面的URL地址,看系统如何处理,对于需要用户验证的系统更为重要。19、空格检查:在输入信息项中,输入一个或连串空格,查看系统如何处理。如对于要求输入整型、符点型变量的项中,输
13、入空格,既不是空值,又不是标准输入。20、输入法半角全角检查:在输入信息项中,输入半角或全角的信息,查看系统如何处理。如对于要求输入符点型数据的项中,输入全角的小数点(“。”或“”,如);输入全角的空格等。21、密码检查:一些系统的加密方法采用对字符Ascii码移位的方式,处理密码加密相对较为简单,且安全性较高,对于局域网系统来说,此种方式完全可以起到加密的作用,但同时,会造成一些问题,即大于128的Ascii对应的字符在解密时无法解析,尝试使用“uvwxyz”等一些码值较大的字符作为密码,同时,密码尽可能的长,如17位密码等,造成加密后的密码出现无法解析的字符。22、用户检查:任何一个系统,
14、都有各类不同的用户,同样具有一个或多个管理员用户,检查各个管理员之间是否可以相互管理,编辑、删除管理员用户。同时,对于一般用户,尝试删除,并重建同名的用户,检查该用户其它信息是否重现。同样,提供注销功能的系统,此用户再次注册时,是否作为一个新的用户。23、系统数据检查:这是功能测试最重要的,如果系统数据计算不正确,那么功能测试肯定是通不过的。数据检查根据不同的系统,方法不同。对于业务管理平台,数据随业务过程、状态的变化保持正确,不能因为某个过程出现垃圾数据,也不能因为某个过程而丢失数据。24、系统可恢复性检查:以各种方式把系统搞瘫,测试系统是否可正常迅速恢复。GUI基本测试内容 图形用户界面(
15、 GUI )对软件测试提出了有趣的挑战,因为 GUI 开发环境有可复用的构件,开发用户界面更加省时而且更加精确。同时, GUI 的复杂性也增加了,从而加大了设计和执行测试用例的难度。因为现在 GUI 设计和实现有了越来越多的类似,所以也就产生了一系列的测试标准。下列问题可以作为常见 GUI 测试的指南: 窗口: 窗口是否基于相关的输入和菜单命令适当地打开? 窗口能否改变大小、移动和滚动? 窗口中的数据内容能否用鼠标、功能键、方向键和键盘访问? 当被覆盖并重新调用后,窗口能否正确地再生? 需要时能否使用所有窗口相关的功能? 所有窗口相关的功能是可操作的吗? 是否有相关的下拉式菜单、工具条、滚动条
16、、对话框、按钮、图标和其他控制可为窗口使用,并适当地显示? 显示多个窗口时,窗口的名称是否被适当地表示? 活动窗口是否被适当地加亮? 如果使用多任务,是否所有的窗口被实时更新? 多次或不正确按鼠标是否会导致无法预料的副作用? 窗口的声音和颜色提示和窗口的操作顺序是否符合需求? 窗口是否正确地被关闭? 下拉式菜单和鼠标操作: 菜单条是否显示在合适的语境中? 应用程序的菜单条是否显示系统相关的特性(如时钟显示)? 下拉式操作能正确工作吗? 菜单、调色板和工具条是否工作正确? 是否适当地列出了所有的菜单功能和下拉式子功能? 是否可以通过鼠标访问所有的菜单功能? 文本字体、大小和格式是否正确? 是否能
17、够用其他的文本命令激活每个菜单功能? 菜单功能是否随当前的窗口操作加亮或变灰? 菜单功能是否正确执行? 菜单功能的名字是否具有自解释性? 菜单项是否有帮助,是否语境相关? 在整个交互式语境中,是否可以识别鼠标操作? 如果要求多次点击鼠标,是否能够在语境中正确识别? 光标、处理指示器和识别指针是否随操作恰当地改变? 数据项: 字母数字数据项是否能够正确回显,并输入到系统中? 图形模式的数据项(如滚动条)是否正常工作? 是否能够识别非法数据? 数据输入消息是否可理解?性能测试Apache JMeter工具 1)简介JMeter一个100的纯Java桌面应用,它是 Apache组织的开放源代码项目,
18、它是功能和性能测试的工具。JMeter可以用于测试静态或者动态资源的性能(文件、Servlets、Perl脚本、Java对象、数据库和查询、ftp服务器或者其他资源)。2)Jmeter的下载地址:http:/jakarta.apache.org/jmeter/usermanual/index.html3)Apache JMeter 的特性:a) 能够对HTTP和FTP服务器进行压力和性能测试, 也可以对任何数据库进行同样的测试(通过JDBC)。b) 完全的可移植性和100 纯Java。c) 完全 Swing 和轻量组件支持(预编译的JAR使用 javax.swing.*)包。d) 完全多线程
19、框架允许通过多个线程并发取样和 通过单独的线程组对不同的功能同时取样。e) 精心的GUI设计允许快速操作和更精确的计时。f) 缓存和离线分析/回放测试结果。g) 高可扩展性:h) 可链接的取样器允许无限制的测试能力。i) 各种负载统计表和可链接的计时器可供选择。j) 数据分析和可视化插件提供了很好的可扩展性以及 以及个性化。k) 具有提供动态输入到测试的功能(包括Javascrpt)。l) 支持脚本变成的取样器(在1.9.2及以上版本支持BeanShell)。二、 JMeter可以做哪些方面的测试 原先Jemer是为Web/HTTP测试而设计的,但是它已经扩展以支持各种各样的测试模块。它和用于
20、HTTP和SQL数据库(使用JDBC)的模块一起运送。它可以用来测试静止资料库或者活动资料库中的服务器的运行情况,可以用来模拟对服务器或者网络系统加以重负荷以测试它的抵抗力,或者用来分析不同负荷类型下的所有运行情况。它也提供了一个可替换的界面用来定制数据显示,测试同步及测试的创建和执行。三、具体事例1)测试环境:硬件配置 软件环境测试时间 2004 年 5 月 25 日服务器 P4 512M 内存 Oracle 10g+Tomcat5.5客户端 P4 512M 内存 Jmeter测试内容 khxx_xg.jsp 接受用户参数、调用 javabean 、输出相关信息。2)安装启动JMeter请将
21、下载的.zip文件解压缩到C:/JMeter目录下。现在,请使用C:/JMeter/bin下面的jmeter.bat批处理文件来启动JMeter的可视化界面,下面的工作都将在这个可视化界面界面上进行操作。图1就是Jmeter的可视化界面。 以下为我的测试计划的内容:1、右键单击测试计划,选择添加-线程组在线程组里设置负载信息,即线程属性。我向测试计划中增加相关负载设置是Jmeter需要模拟十个请求者,每个请求者在测试过程中并发请求,并且连续请求10次。线程数: 10Ramp-up period(inseconds): 0循环次数: 10说明:线程数代表发送请求的用户数目,Ramp-up per
22、iod(inseconds)代表每个请求发生的总时间间隔,单位是秒。假如我的请求数目是5,而这个参数是10,那么每个请求之间的间隔就是105,也就是2秒。如果设置为0就代表并发请求。Loop Count代表请求发生的重复次数,如果选择后面的forever(默认),那么 请求将一直继续,如果不选择forever,而在输入框中输入数字,那么请求将重复 指定的次数,如果输入0,那么请求将执行一次。2、添加HTTP默认请求值右键单击线程组,选择添加-配置元件-HTTP默认请求值,以下是我设置的信息:说明名称: HTTP 默认请求值 该元素的名称服务器名称或IP:localhost 被测试服务器的 IP
23、或者名字端口号: 8080 服务器提供服务的端口号,我用的服务器是 Tomcat,所以端口号是8080协议: http 发送测试请求时使用的协议路径: /hrbin/hg_admin/khxx_xg.jsp 默认的起始位置。3、添加HTTP请求右键单击线程组,选择添加-Sampler-HTTP请求,以下是我设置的信息说明名称: HTTP 默认请求值 该元素的名称服务器名称或IP:localhost 被测试服务器的IP或者名字端口号: 8080 服务器提供服务的端口号,我用的服务器是Tomcat,所以端口号是8080协议: http 发送测试请求时使用的协议路径: /hrbin/hg_admin
24、/khxx_xg.jsp 默认的起始位置。因为我测试的是查询,故添加了一个同请求一起发送的参数(in_id=dsgds):4、添加监听器,存放测试结果。右键单击测试计划,选择测试计划-添加-监听器-聚合报告你也可以选择用表格查看结果、图形结果、查看结果树等。4)运行测试单击运行,选择启动。 四、 测试结果的分析说明说明:Label: 每个 JMeter 的 element (例如 HTTP Request )都有一个 Name 属性,这里显示的就是 Name 属性的值#Samples: 表示你这次测试中一共发出了多少个请求,我的测试计划模拟 10 个用户,每个用户迭代 10 次,因此这里显示
25、100Average: 平均响应时间 默认情况下是单个 Request 的平均响应时间,当使用了 Transaction Controller 时,也可以以 Transaction 为单位显示平均响应时间Median: 中位数,也就是 50 用户的响应时间90% Line: 90 用户的响应时间Min: 最小响应时间Max: 最大响应时间Error%: 本次测试中出现错误的请求的数量 / 请求的总数Throughput: 吞吐量 默认情况下表示每秒完成的请求数( Request per Second ),当使用了 Transaction Controller 时,也可以表示类似 LoadRun
26、ner 的 Transaction per Second 数KB/Sec: 每秒从服务器端接收到的数据量,相当于 LoadRunner 中的 Throughput/Sec我分别模拟10、25、50、75和100个用户并发访问该页面,根据报告所得测试结果作出如下统计。注:时间单位是ms用户数 #Samples Average Median 90%Line Min Max Error% Throughput KB/Sec10 642 672 688 125 125 719 00.0 14.8/sec 221.1525 250 1620 1687 1750 250 1781 00.0 14.5/se
27、c 217.1450 500 3319 3438 3578 281 3657 00.0 14.2/sec 212.0275 750 4887 5109 5584 328 7094 00.0 14.5/sec 216.67100 1000 6244 6485 6672 250 6844 00.0 15.1/sec 225.43一般情况下,当用户能够在2秒以内得到响应时,会感觉系统的响应很快;当用户在2-5秒之间得到响应时,会感觉系统的响应速度还可以;当用户在5-10秒以内得到响应时,会感觉系统的响应速度很慢,但是还可以接受;而当用户在超过10秒后仍然无法得到响应时,会感觉系统糟透了,或者认为系统
28、已经失去响应,而选择离开这个Web站点,或者发起第二次请求。故该系统的用户信息查询信息页面的在10到25人并发访问时,系统响应速度很快,25人到50人并发访问时速度还可以,50人到100人并发访问就比较慢了。JMeter 是 Apache 组织的开放源代码项目,它是功能和性能测试的工具,100%的用java实现,最新的版本是1.9.1。本文中作者将向大家介绍如何使用 JMeter 进行测试。JMeter是Apache组织的开放源代码项目,它是功能和性能测试的工具,100%的用java实现,最新的版本是1.9.1,大家可以到 http:/jakarta.apache.org/jmeter/ind
29、ex.html下载源代码和查看相关文档。 JMeter作用领域JMeter可以用于测试静态或者动态资源的性能(文件、Servlets、Perl脚本、java对象、数据库和查询、ftp服务器或者其他的资源)。JMeter用于模拟在服务器、网络或者其他对象上附加高负载以测试他们提供服务的受压能力,或者分析他们提供的服务在不同负载条件下的总性能情况。你可以用JMeter提供的图形化界面分析性能指标或者在高负载情况下测试服务器/脚本/对象的行为。回页首使用JMeter测试Web应用接下来的章节里,作者将详细的演示如何使用JMeter来测试Web应用的完整过程。2.1 测试环境作者使用了Tomcat作为
30、Web服务器进行测试,被测试的内容是一个jsp文件和一个servlet,jsp文件调用JavaBean、打印相关信息,servlet接受用户参数、调用javabean、输出相关信息。详细的内容请参考作者提供的JMeter.war的内容。2.2 安装启动JMeter大家可以到通过现在,请使用%JMeter%/bin下面的jmeter.bat批处理文件来启动JMeter的可视化界面,下面的工作都将在这个可视化界面界面上进行操作。下面的图片是JMeter的可视化界面的屏幕截图。图一: JMeter打开时的屏幕截图2.3 建立测试计划(Test Plan)测试计划描述了执行测试过程中JMeter的执行
31、过程和步骤,一个完整的测试计划包括一个或者多个线程组(Thread Groups)、逻辑控制(Logic Controller)、实例产生控制器(Sample Generating Controllers)、侦听器(Listener)、定时器(Timer)、比较(Assertions)、配置元素(Config Elements)。打开JMeter时,它已经建立一个默认的测试计划,一个JMeter应用的实例只能建立或者打开一个测试计划。现在我们开始填充一个测试计划的内容,这个测试计划向一个jsp文件和一个servlet发出请求,我们需要JMeter模拟五个请求者(也就是五个线程),每个请求者连续
32、请求两次,下面的章节介绍了详细的操作步骤。2.4 增加负载信息设置这一步,我们将向测试计划中增加相关负载设置,是Jmeter知道我们需要模拟五个请求者,每个请求者在测试过程中连续请求两次。详细步骤如下:1. 选中可视化界面中左边树的Test Plan节点,单击右键,选择AddThread Group,界面右边将会出现他的设置信息框。2. Thread Group有三个和负载信息相关的参数: Number of Threads: 设置发送请求的用户数目 Ramp-up period: 每个请求发生的总时间间隔,单位是秒。比如你的请求数目是5,而这个参数是10,那么每个请求之间的间隔就是105,也
33、就是2秒 Loop Count: 请求发生的重复次数,如果选择后面的forever(默认),那么 请求将一直继续,如果不选择forever,而在输入框中输入数字,那么请求将重复 指定的次数,如果输入0,那么请求将执行一次。 根据我们演示例子的设计,我们应该将Number of Threads设置为5,Ramp-up period设置为0(也就是同时并发请求),不选中forever,在Loop Count后面的输入框中输入2,设置后的屏幕截图如下:图二:设置好参数的Thread Group。2.5 增加默认Http属性(可选)实际的测试工作往往是针对同一个服务器上Web应用展开的,所以Jmete
34、r提供了这样一种设置, 在默认Http属性设置需要被测试服务器的相关属性,以后的http请求设置中就可以忽略这些相同参数的设置,减少设置参数录入的时间。我们这里将采用这种属性。你可以通过下面的步骤来设置默认http属性:1. 选中可视化界面中左边树的Test Plan节点,单击右键,选择Addconfig elementhttp request defaults,界面右边将会出现他的设置信息框。2. 默认http属性的主要参数说明如下: protocal:发送测试请求时使用的协议 server name or ip:被测试服务器的ip地址或者名字 path: 默认的起始位置。比如将path设置
35、为jmeter,那么所有的http请求的url中都将增加jmeter路径。 port number: 服务器提供服务的端口号 我们的测试计划将针对本机的Web服务器上的Web应用进行测试,所以protocal应该是http,ip使用localhost,因为这个web应用发布的context路径是jmeter,所以这里的path设置为jmeter,因为使用Tomcat服务器,所以port number是8080。设置后的屏幕截图如下:图三: 测试计划中使用的默认Http参数2.6 增加Http请求现在我们需要增加http请求了,他也是我们测试的内容主体部分。你可以通过下面的步骤来增加性的http
36、请求:1. 选中可视化界面中左边树的Thread Group节点,单击右键,选择Addsamplerhttp request,界面右边将会出现他的设置信息框。2. 他的参数和2.5中介绍的http属性差不多,增加的属性中有发送http时方法的选择,你可以选择为get或者post。我们现在增加两个http 请求,因为我们设置了默认的http属性,所以和默认http属性中相同的属性不再重复设置。设置后的屏幕截图如下:图四:设置好的jsp测试请求图五:设置好的Servlet测试请求(带参数)2.7 增加Listener增加listener是为了记录测试信息并且可以使用Jmeter提供的可视化界面查看
37、测试结果,里面有好几种结果分析方式可供选择,你可以根据自己习惯的分析方式选择不同的结果显示方式,我们这里使用表格的形式来查看和分析测试结果。你可以通过下面的步骤来增加listener:1. 选中可视化界面中左边树的Test Plan节点,单击右键,选择Addlistenerview result in table,界面右边将会出现他的设置信息和结果显示框。2. 你可以设置界面上面的filename属性设置将测试结果保存到某个文件中界面下面将使用表格显示测试结果,表格的第一列sampleno显示请求执行的顺序和编号,url显示请求发送的目标,samplems列显示这个请求完成耗费的时间,最后的s
38、uccess列显示改请求是否成功执行。界面的最下面你还可以看到一些统计信息,最关心的应该是Average吧,也就是相应的平均时间。2.8 开始执行测试计划现在你可以通过单击菜单栏run - Start开始执行测试计划了。下面这两个图是作者第一次、第二次执行该测试计划的结果图:图六:第一次执行后的结果显示图七:第二次执行的结果显示大家可以看到第一次执行时的几个大时间值均来自于jsp request,这可以通过下面的理由进行解释:jsp执行前都需要被编译成.class文件。所以第二次的结果才是正常的结果。回页首总结JMeter用于进行供能或者性能测试,通过使用JMeter提供的供能,我们可以可视化
39、的制定测试计划:包括规定使用什么样的负载、测试什么内容、传入的参数,同时,他提供了好多种图形化的测试结果显示方式,使我们能够简单的开始测试工作和分析测试结果。本文中,作者根据自己的使用经验,详细演示了如何使用JMeter来进行Web测试的全部过程,简单的介绍了JMeter提供测试结果的图形化显示界面中相关参数的含义。希望能够帮助大家学会使用JMeter的基本知识,同时,大家可以参考这个过程和JMeter的帮助文档来实现对java对象、数据库等的测试过程。安全测试1. 数据验证流程:一个好的web系统应该在IE端,server端,DB端都应该进行验证。但有不少程序偷工减料,script验证完了,
40、就不管了;app server对数据长度和类型的验证与db server的不一样,这些都会引发问题。有兴趣的可参看一下script代码,设计一些case,这可是你作为一个高级测试人员的优秀之处哦。我曾修改了页面端的script代码,然后提交了一个form,引发了一个系统的重大漏洞后门2. 数据验证类型: 如果web server端提交sql语句时,不对提交的sql语句验证,那么一个黑客就可暗喜了。他可将提交的sql语句分割,后面加一个delete all或drop database的之类语句,能将你的数据库内容删个精光!我这一招还没实验在internet网站上,不知这样的网站有没有,有多少个。
41、反正我负责的那个web系统曾经发现这样的问题。3. 网络加密,数据库加密不用说了吧。WEB软件最常碰到的BUG为:1、SQL INJETION2、对文件操作相关的模块的漏洞3、COOKIES的欺骗4、本地提交的漏洞SQL INJETION的测试方法原理:如有一新闻管理系统用文件news.asp再用参数读取数据库里的新闻譬如如果直接用rs.open select * from news where id= &cstr(request(id),conn,1,1数据库进行查询的话即上面的URL所读取的文章是这样读取的select * from news where id=1懂得SQL语言的就知道这条
42、语言的意思是在news读取id为1的文章内容。但是在SQL SERVER里select是支持子查询和多句执行的。如果这样提交URL的话 1=(select count(*) from adminwhere left(name,1)=a)SQL语句就变成了select * news where id=1 and 1=(select count(*)from admin where left(name,1)=a)意思是admin表里如果存在字段字为name里左边第一个字符是a的就查询news表里id为1的内容,news表里id为1是有内容的,从逻辑上的角度来说就是1&P。只要P为真,表达式就为真,
43、页面会返回一个正确的页面。如果为假页面就会报错或者会提示该id的文章不存在。黑客利用这点就可以慢慢得试用后台管理员的用户和密码。附录资料:从 XML 生成可与 Ajax 共同使用的 JSON时下,非常流行使用 JavaScript 代码为数据驱动的 Web 应用程序添加互动性。若能将数据编码成 JavaScript Object Notation(JSON)的格式,您就可以更轻松地通过 JavaScript 语言使用它。通过本文,发掘使用 XSLT V2 从 XML 数据生成 JSON 的几种不同方法。几年前,许多开发人员很看好 XML、XSLT、Extensible HTML (XHTML)
44、和其他一些基于标记的语言。现在,Asynchronous JavaScript and XML(AJAX)成了新的热点,人们又将目光转向了使用 JavaScript 代码的数据驱动的富 Internet 应用程序。但是开发人员是否已经消除了 XML 和这一新技术之间的鸿沟呢?当然,您可以在 Web 客户机中使用 XML 解析器来读取数据,但这种做法会带来两个问题。第一,出于安全方面的原因,XML 数据只能从与此页面相同的那个域中读取。这虽然不是什么大的限制因素,但它的确会引起部署方面的问题,还会阻碍 DHTML 小部件的创建。第二,读取和解析 XML 会非常慢。另一种做法是让服务器执行 XML
45、 的解析工作,方法是设置服务器,使之向浏览器发送以 JavaScript 代码或时下流行的 JavaScript Object Notation(JSON)编码的数据。本文将展示如下三种使用 XSLT V2 语言和 Saxon XSLT V2 处理器从 XML 数据生成 JSON 的技巧: l 简单编码 l 通过函数调用加载数据 l 编码对象 JSON 简介要学习如何将数据编码成 JSON(它只是 JavaScript 的一个子集),最好的方法是从数据开始。清单 1 显示了书籍列表的一个示例 XML 数据集。清单 1. 基本的图形化图书馆 Code Generation in Action JackHerrington Manning PHP Hacks JackHerrington OReilly Podcasting H