Z5 xperia z5 免解锁roott的话哪些功能会失效

冰清 日志(4) - 冰清的个人空间 - 51Testing软件测试网 51Testing软件测试网-中国软件测试人的精神家园
这个冰清的学习天地,以后我会把自己觉得重要的学习资料和大家一起分享。
下图是程序的最终效果,包含了数据的显示,添加,修改,删除这几项数据库操作的常用功能。 
  我的调试环境是xp,mysql版本是mysql4.0.23   1.安装Mysql的ODBC驱动
&&& 从上驱动程序
&&& 地址:/downloads/connector/odbc/3.51.html#win32
&&& 我是的 ZIP/Setup.EXE
&&& 到本机之后从zip包中解压出setup.exe文件,双击安装,没什么可说的,完全的傻瓜式安装   2.设置ODBC数据源
&&& 配置MySQL的ODBC数据源有两种方法
&&& 第一种:手工设置
&&& 比较麻烦,但是确是比较的办法。   步骤如下:
&&& 开始 -& 控制面板 -& 管理工具 -& 数据源 (ODBC),双击数据源(ODBC)之后会出来如下的界面 
  点击右上角的"添加"按钮之后会出现如下的界面 
  可以看到,我们刚才安装的驱动程序已经出现在列表中了,选中它,然后单击完成,此时会出来下面的界面 
  按上图所示,填写好各项连接所需要的信息点击“Test”可以进行,如果出现sucessful字样就表示成功了
一直都想去好好的考个证,但是一直都由于自己的懒惰,一直都没有实现!好好想了下,发觉自己在这两年时间里还真的没有对自己的能力做一个很好的提高,所以决定以考软件评测来好好提高下自己的能力!
&TestLinkWebTestLinkBugzillaMantisJiraTestLinkTestLink1.6.0
TestLinkTestLink1.6.0
PHPApacheMySQLwindows
&&&&&& TestLink1.6.0TestLinkMySQL4.1.xphp4.3.xphp5WebserverApache1.3.x2.0.xIIS3phpMySQLTestLink1.6.0phpMySQLPHP5.1.1MySQL5.0.18Apache2.0.551.6.0TestLinkWinXPTestLinkPHP4.4.1MySQL4.1.16Apache2.0.55
Apache2.0.55
&&&&&& Apache2.0.55Apache2.0.55
&&&&& &Apacheweb80Apache
Apache&ApacheDir& \Apache2\conf\httpd.conf808080
ApacheApachehtpp://yoursiteApache
&&&&&& PHPIISPWSXitamiPHP
&&&&& &PHP4.4.1php4.4.1
PHP4PHP5PHP4
C:\PHPC:\Program Files\PHP web
dllssapi C:\PHP
l&sapi/php4activescrīpt.dll& - Activescrīpt
l sapi/php4apache2.dll - Apache 2.0.x
PHP PATHCGIwebphp4ts.dll PHP
Windows NT2000XP
php.iniEveryone
php.ini-recommendedc:\phpphp.ini
OmniHTTPd doc_root
doc_root = c:\inetpub\wwwroot // for IIS/PWS
doc_root = c:\apache\htdocs // for Apache
DLLcd C:\php PHP regsvr32 php4activescrīpt.dll DLLActivescrīpt test.wsf
&job id="test"&
&&&&scrīpt language="ActivePHP"&
&&&&& $Wscrīpt-&Echo("Hello World!");
&& &/scrīpt&
Hello World!"
PHPApache Apache Apache
httpd.conf Apache 2.0 PHP
# 对 PHP 4 用这两行:
LoadModule php4_module "c:/php/php4apache2.dll"
# 别忘了从 sapi 目录中把 php4apache2.dll 拷贝出来!
AddType application/x-httpd-php .php&
# 配置 php.ini 的路径
PHPIniDir "C:/php"
c:/php/ LoadModule
php4apache2.dll php4apache.dll
c:\directory\file.ext
c:/directory/file.ext
&!-- begin of test.php--&
&& &?php phpinfo(); ?&
&!--end of scrīpt--&
test.php PHP php c:\php\test.php &1.txtPHP
http://yoursite/test.php PHP
Sessionphp.inisession.save_path = C:\windows\temp UNIXWindows
MySQL4.1.16
&&&&&& MySQL4.1.16MySQL4.1.16
&&&&& &MySQL
TestLink1.6.0
&&&&&& TestLink1.6.0TestLink1.6.0
TestLink1.6.0
Webserverphp4MySQL
TestLinkApache2htdocstestlink&
&&&&&& TestLink<SPAN style="FONT-FAMILY: 宋体; mso-ascii-
【IT168技术文档】TestLink是基于Web的,开源的测试管理和执行系统。 它可以让测试团队在创建和管理测试用例的同时,在测试计划中对测试用例进行组织。 TestLink可以和Bugzilla、Mantis、Jira等缺陷管理工具进行集成。 因为前面我使用了Mantis缺陷管理工具,所以我这里是与Mantis进行集成。 本文的描述适用于在windows上的安装。 1. 介绍 TestLink目前最新的版本是1.6.2,它的运行需要一些应用程序的支持。 我的环境配置为:MySQL5.0.19+php5.1.2+Webserver(Apache2.0.55)+Mantis1.0.1。 下面我对这些应用程序的安装与配置步骤分别进行描述。 2. 安装Apache2.0.55 3. 安装php 把 php.ini 中的session.save_path值修改为C:\windows\temp 4. 安装MySQL 5. 安装Mantis1.0.1 请参阅/yudiexin/blog/cns!EC46C!169.entry 6. 安装TestLink1.6.0 TestLink1.6.0的安装包可在TestLink网站http://testlink.sourceforge.net/docs/testLink.php 下载。 1.6.2版本的下载地址为:http://osdn.dl.sourceforge.net/sourceforge/testlink/testlink-1.6.2.zip 在安装TestLink1.6.2前,需要完成以下步骤: 6.1. 安装运行所需要的环境:Webserver、php5和MySQL。可以参照前面的介绍进行安装。 6.2. 将TestLink安装包解压缩到Apache2的htdocs目录下,并重命名为testlink 6.3. TestLink的安装有两种方式,一是自动安装,二是手工安装的方式。 A 自动安装 A.1 在浏览器输入访问地址http://yoursite/testlink/install/index.php, 如:http://localhost/testlink/install/index.php A.2 选择new install,在进入的页面中,输入登录MySQL的用户名和密码, 如root,如果没有为TestLink新建一个专用的用户,也可以输入初始用户root。 但是因为root权限过多,所以,建议为TestLink新建专用的用户, 并为该用户赋予ALTER、SELECT、INSERT、UPDATE、INDEX、CREATE、DELETE和DROP权限。 A.3 提示安装成功。系统为testlink创建一个默认管理员账号,用户名和密码为:admin/admin。 你可以使用这个账号访问TestLink 小结: 在自动安装过程中,安装程序主要做了以下事情:检查web server的参数、php配置、数据库版本、 创建数据库和表,并导入初始数据、在完成安装后,系统会为testlink创建一个数据库配置文件config_db.inc.php。 B 手工安装 你也可以通过手工的方式来完成TestLink的安装。安装步骤如下: B.1. 我安装了MySQL Control Center ,点击进入控制台直接创建新的数据库 B.2. 在新创建的数据库中,打开 query 窗口,将testlink-1.6.2\install\sql 下的testlink_create_tables.sql、testlink_create_default_data.sql 文件的内容先后拷贝到query 窗口执行,这样testlink数据库中的表就建好了。 B.3. 为TestLink新建一个专用的用户,在 MySQL Control Center 的add user 窗口中 新建用户testlink,密码testlink,把它与testlink数据库关联起来。 B.4. 创建TestLink数据库配置文件。参照下面的代码创建&testlinkdir&/config_db.inc.php文件 &?php // Automatically Generated by TestLink Installer define('DB_TYPE', 'mysql'); define('DB_USER', 'testlink'); define('DB_PASS', 'testlink'); define('DB_HOST', 'localhost'); define('DB_NAME', 'testlink'); ?& B.5. 打开浏览器,输入:http://localhost/testlink/index.php,可以打开TestLink登陆界面。 7. 无论是自动安装还是手工安装,安装成功后,要将安装目录下的install目录移走,并在系统中修改admin的初始密码。 8. 修改配置文件 &testlink installation directory&/config.inc.php - 主要的配置文件,后面会做详细介绍 a.数据库的编码 define('DB_SUPPORTS_UTF8', TRUE) 修改为 define('DB_SUPPORTS_UTF8', FALSE) b.TestLink 中文显示 define('TL_TPL_CHARSET', DB_SUPPORTS_UTF8 ? 'UTF-8' : 'ISO-8859-1'); //define('TL_TPL_CHARSET', 'gb2312'); // Chinese charset 修改为: //define('TL_TPL_CHARSET', DB_SUPPORTS_UTF8 ? 'UTF-8' : 'ISO-8859-1'); define('TL_TPL_CHARSET', 'gb2312'); // Chinese charset c.与缺陷管理工具的集成配置 define('TL_INTERFACE_BUGS', 'NO') 修改为 define('TL_INTERFACE_BUGS', 'MANTIS') 修改 &testlink installation directory&/cfg/ 下的 mantis.cfg.php 文件 define('BUG_TRACK_DB_HOST', 'localhost'); define('BUG_TRACK_DB_NAME', 'bugtracker'); mantis 安装时配置的数据库名 define('BUG_TRACK_DB_USER', 'root'); define('BUG_TRACK_DB_PASS', 'root'); define('BUG_TRACK_HREF', "http://localhost/mantis/"); define('BUG_TRACK_ENTER_BUG_HREF',"http://localhost/mantis/"); 所指向的mantis的链接 这样就OK了。
1.jmeter 的架构跟loadrunner原理一样,都是通过中间代理,监控&收集并发客户端发现的指令,把他们生成脚本,再发送到应用服务器,再监控服务器反馈的结果的一个过程.2.分布式中间代理功能在Jmeter中也有,这个分布式分理是指可设置多台代理在不同PC中,通过远程进行控制,即通过使用多台机器运行所谓的 Agent
Load Generator 3.Jmeter 安装简单,只需要解压jmeter文件包到C盘上就可以了,其实是没有安装.要是你想执行调试测试脚本,前提是:装上jdk和netbean插件.而loadrunner安装包有1G多,在一台P3.0,1G内存的PC上安装要一个多小时.要是装过较旧的盗版还不能再装新版,解决办法倒是有,但麻烦且花时间.4.Jmeter 没有IP欺骗功能,IP欺骗是指在一PC台上多个IP地址来分配给并发用户.这个功能对于模拟较真实的客户环境来说,是较有用.loadrunner有此功能.5.Jmeter也提供了一个利用本地Proxy Server(代理服务器)来录制生成测试脚本的功能,但是这个功能并不好用,测试对象的个别参数却要手工增加上去,还得附带装个IE代理,如GoogleToolbarDownloader这些插件来捕捉参数.6.jmeter的报表较少,对于要分析测试性能不足以作为依据.如要知道服务器或应用程序服务的CPU,memory等参数,得在相关服务器上另外写脚本记录服务器的性能.JMeter官方站点: 最新JMeter版本:
&本文介绍了 JMeter 相关的基本概念。并以 JMeter 为例,介绍了使用它来完成最常用的三种类型,即 Web 、数据库服务器和消息中间件,压力测试的方法、步骤以及注意事项。&&&&&&&& 讲到测试,人们脑海中首先浮现的就是针对软件正确性的测试,即常说的功能测试。但是软件仅仅只是功能正确是不够的。在实际开发中,还有其它的非功能因素也起着决定性的因素,例如软件的响应速度。影响软件响应速度的因素有很多,有些是因为算法不够高效;还有些可能受用户并发数的影响。
&&&&&&&&&&& 在众多类型的中,压力测试正是以软件响应速度为测试目标,尤其是针对在较短时间内大量并发用户的访问时,软件的抗压能力。本文以 JMeter 为例,介绍了如何使用它来完成常用的压力测试:Web 测试、数据库测试和 JMS 测试。
&&&&&&&&&&& JMeter 最早是为了测试 Tomcat 的前身 JServ 的执行效率而诞生的。到目前为止,它的最新版本是2.1.1,它的测试能力也不再仅仅只局限于对于Web服务器的测试,而是涵盖了数据库、JMS、Web Service、LDAP等多种对象的测试能力。在最新的 2.1.1 中,它还提供了对于 JUNIT 的测试。
&&&&&&&&&&& JMeter 的安装非常简单,从官方网站上,解压之后即可使用。运行命令在%JMETER_HOME%/bin 下,对于 windows 用户来说,命令是 jmeter.bat。运行前请检查JMeter 的文档,查看是否具备相关的运行条件。对于最新版(即2.1.1),需要JDK的版本要求是JDK 1.4。
&&&&&&&&&&& JMeter 的主要测试组件总结如下:
&&& 1. 测试计划是使用 JMeter 进行测试的起点,它是其它 JMeter 测试元件的容器。
&&& 2. 线程组代表一定数量的并发用户,它可以用来模拟并发用户发送请求。实际的请求内容在Sampler中定义,它被线程组包含。
&&& 3. 监听器负责收集测试结果,同时也被告知了结果显示的方式。
&&& 4. 逻辑控制器可以自定义JMeter发送请求的行为逻辑,它与Sampler结合使用可以模拟复杂的请求序列。
&&& 5. 断言可以用来判断请求响应的结果是否如用户所期望的。它可以用来隔离问题域,即在确保功能正确的前提下执行压力测试。这个限制对于有效的测试是非常有用的。
&&& 6. 配置元件维护Sampler需要的配置信息,并根据实际的需要会修改请求的内容。
&&& 7. 前置处理器和后置处理器负责在生成请求之前和之后完成工作。前置处理器常常用来修改请求的设置,后置处理器则常常用来处理响应的数据。
&&& 8. 定时器负责定义请求之间的延迟间隔。
&&& JMeter的使用非常的容易,在 ON.com 上的文章 Using JMeter 提供了一个非常好的入门。
&&& 常用测试
&&&&&&&&&&& 压力测试不同于功能测试,软件的正确性并不是它的测试重点。它所看重的是软件的执行效率,尤其是短时间内访问用户数爆炸性增长时软件的响应速度,压力测试往往是在功能测试之后进行的。在实际的开发过程中,软件潜在的效率瓶颈一般都是那些可能有多个用户同时访问的节点。
&&&&&&&&&&& 就目前
EE 的平台下开发的软件来说,这种节点通常可能是:Web 服务器、数据库服务器和 JMS 服务器。它们都是请求主要发生的地点,请求频率较其它的节点要高,而且处于请求序列的关键路径之上。如果它们效率无法提高的话,对于整个软件的效率有致命的影响。而且在这些节点上一般都会发生较大规模的数据,有时其中还包含有业务逻辑处理,它们正是在进行压力测试时首先需要考虑的。
&&& 本文以这三种节点为例,介绍如何使用 JMeter 来完成针对于它们的压力测试。
&&& Web 服务器
&&&&&&&&&&& 对于大多数的项目来说,并不会自行开发一个Web服务器,因此Web服务器压力测试的对象实际就是--发布到Web服务器中的软件。最简单的Web测试计划只需要三个 JMeter 的测试元件,如下图:&&&&&&&&&&
&&&&&&& 其中:
&&& 在线程组中定义线程数、产生线程发生的时间和测试循环次数。 在http请求中定义服务器、端口、和方法、请求路径等。 表格监听器负责收集和显示结果。 这种设置对于包含了机制的 web 应用是不够的,典型的 web 应用一般都会:
&&& 1. 有一个登录页,它是整个应用的入口。当用户登录之后,应用会将用户相关的信息放到 session 中。
&&& 2. 有一个 filter,它拦截请求,检查每个请求相关的 session 中是否包含有用户安全信息。如果没有,那么请求被重定向到登录页,要求用户提供安全信息。
&&&&&&&&&&& 在这种配置下应用上面的测试计划,那么除了登录页之外的其它请求都将因为缺少用户安全信息,而使请求实际定位到登录页。如果不加断言,那么在监听器看来所有的请求都是成功。而实际上,这些请求最终都没有到达它们应该去的地方。显然,这种测试结果不是我们所期望的。
&&& 为了成功的测试,至少有2种方法:
&&& 方法一,去掉程序的安全设置,如filter,使得不需要用户安全信息也能访问受限内容; 方法二,不修改程序,使用JMeter提供的"Http URL重写修饰符"或"Http Cookie管理器"。 对于第一种方法,有其局限性:
&&&&&&&&&&& 需要修改程序配置,如去掉web.xml中关于安全filter的设置。需要维护多个版本的web.xml,如压力测试和功能测试分别各自的web.xml,增加了维护成本,而且有可能会在测试之后忘记将web.xml修改回来。&&&&&&&& 对于一些需要用户安全信息的页面无能为力,如某些业务审计操作需要用户安全信息来记录。因为缺少这样的信息,注定了测试的失败。如果解决为了这个问题进一步的修改程序,那么因为存在多个版本的程序,那么其维护难度将大大增加。&&&&&&&& 虽然,第二种方法配置难度增加了,但是它不用修改程序。而且还可将测试计划保存成文件,以便重复使用。因此,选用第二种方法是较为理想的做法。下面以一个简化的例子说明使用方法二的配置步骤。
1. 例子由以下几个文件组成:
&&&&&&&&&&& AuthorizenFilter.java,过滤器负责检验session中是否存在用户信息。如果没有,那么就转向到 login.jsp。它的主要方法 doFilter 内容如下:
&&& public void doFilter(ServletRequest request,&&&&&&&&&&&&&&&&&&&&& ServletResponse response,&&&&&&&&&&&&&&&&&&&&& FilterChain chain)&&&&&&&&&&&&&&&&&&&&& throws IOException, ServletException {&&&& HttpServletRequest req = (HttpServletRequest)&&&& HttpServletResponse res = (HttpServletResponse)&&&& HttpSession session= req.getSession();&&&& User user = (User)session.getAttribute("user");&&&& if(null == user){&&&&&&&& String uri= req.getRequestURI();&&&&&&&& //如果请求页是登录页,不转向&&&&&&&& if( uri.equalsIgnoreCase("/gWeb/login.jsp")){&&&&&&&&&&&& chain.doFilter(request, response);&& } else{&&&&&&&&&&&& res.sendRedirect("/gWeb/login.jsp");&& }& }else{&&&&&&&& chain.doFilter(request, response);&&&& }&&& }
&&& User.java,用户类负责记录用户的信息。为了简化,这里的登录操作只允许指定用户名和密码。主要内容如下:
&&& public class User{& private S& private S& public User(String user, String pwd) {&& this.user =&& this.pwd =& }& public boolean login(){&& return user.equals("foxgem") && pwd.equals("");& }& public String getUser() {&&& }& public void setUser(String user) {&& this.user =& }}
&&& Login.jsp 和welcome.jsp。其中 login.jsp 负责生成 User 对象,并调用 User 的login。当 login 返回为 true 时转向到 welcome.jsp。其验证部分的代码:
&&& &%&& if( request.getParameter("Submit") != null) {&&& User ur= new User( request.getParameter("user"), request.getParameter("pwd"));&&&&&& if( ur.login()){&&&&&&&& session.setAttribute("user", ur);&&&&&&&&& response.sendRedirect("/gWeb/welcome.jsp");&&&&&& } else{&&&&&&&&& session.setAttribute( "LOGIN_ERROR_MSG", "无效的用户,可能原因:用户不存在或被禁用。");&&&&&&&&& response.sendRedirect("/gWeb/index.jsp");&&&&&&&&&&&&&&& }&& }%&
&&& web.xml,配置 filter 拦截所有访问 JSP 页面的请求:
&&& &filter&&&&& &filter-name&authorizen&/filter-name&&&&& &filter-class&org.foxgem.jmeter.AuthorizenFilter&/filter-class& &/filter& &filter-mapping&&&&& &filter-name&authorizen&/filter-name&& &url-pattern&*.jsp&/url-pattern& &/filter-mapping&
&&& 2. 创建如下结构的Web测试计划:
其中主要测试元件说明如下:
&&&&&&&&&&& http请求默认值负责记录请求的默认值,如服务器、、端口等。&&&&&&&& 第一个http请求,请求login.jsp,并附加验证所需要的参数(user=foxgem,pwd=,Submit=Submit);其包含的响应断言验证url中包含"welcome.jsp",这一点可以从程序中反应。&&&&&&&& 第二个http请求,请求是welcome.jsp;其包含的响应断言验证响应文本中包含"foxgem",它是welcome.jsp页面逻辑的一部分。&&&&&&&& http cookie管理器负责管理整个测试过程中使用的cookie,它不需要设置任何属性。&&&&&&&& 循环控制器设置发送第二个请求的循环次数,表格监听器负责收集和显示第二个请求的测试结果。&&&&&&&& 启动测试计划之后,执行的顺序是:首先,第一个请求登录页进行登录;成功登录之后,使用循环控制器执行第二个请求。请求welcome.jsp时,响应断言用来验证是否确实是welocme.jsp来处理请求,而不是因为其它页。在这个测试计划中需要注意的是http cookie管理器。正是由于它的作用,使得第二个请求能顺利的发送到welcome.jsp进行处理,而不是因为缺少用户安全信息转发到login.jsp。
&&&&&&&&&&& 在这个例子中,我们并没有在程序中使用cookie(使用的是session),那么http cookie管理器怎么会起作用呢?这是因为在servlet/jsp规范中对于session的状态跟踪有2种方式:
&&&&&&&&&&& 使用cookie,保留和传递sessionid。它不要求程序对于url有什么特殊的处理,但是要求浏览器允许cookie。在这个例子中,就是这种情形。&&&&&&&& 使用url重写,每次显式的在浏览器和服务器之间传递sessionid。它要求程序对url进行编码,对浏览器没有要求。&&&&&&&& 对于第二种情形,可以使用JMeter前置管理器中的http url重写修饰符来完成。对于Tomcat,Session参数是jsessionid,路径扩展使用";"。使用url编码时需要注意,必须将浏览器的cookie功能关闭。因为url编码函数,如encodeURL,会判断是否需要将sessionid编码到url中。当浏览器允许cookie时,就不会进行编码。
&&&&&&&&&&& 如果cookie而不是session来保存用户安全信息,那么直接使用http cookie管理器就行了。此时,需要将使用的cookie参数和值直接写到管理器中,由它负责管理。对于其它的cookie使用,也是如此操作。
&&&&&&&&&&& 登录问题解决之后,对于 Web 服务器的测试就没什么难点了。剩下的就是根据实际需要,灵活运用相关的测试组件搭建编写的测试计划。(当然,对于安全问题还有其它的使用情景。在使用时需要明确:JMeter 是否支持,如果支持使用哪种测试组件解决。)
&&& 数据库服务器
&&&&&&&&&&& 数据库服务器在大多数企业项目中是不可缺少的,对于它进行压力测试是为了找出:数据库对象是否可以有效地承受来自多个用户的访问。这些对象主要是:索引、触发器、过程和锁。通过对于sql语句和过程的测试,JMeter 可以间接的反应数据库对象是否需要优化。
&&&&&&&&&&& JMeter 使用 JDBC 发送请求,完成对于数据库的测试。一个数据库测试计划,建立如下结构即可:
&&& 其中:
&&&&&&&&&&& JDBC连接配置,负责配置数据库连接相关的信息。如:数据库url、数据库驱动类名、用户名和密码等等。在这些配置中,"绑定到池的变量名"(Variable Name Bound to Pool)是一个非常重要的属性,这个属性会在JDBC请求中被引用。通过它, JDBC请求和JDBC连接配置建立关联。(测试前,请将所需要的数据库驱动放到JMeter的classpath中)。 JDBC请求,负责发送请求进行测试。 图形结果,收集显示测试结果。&&&&&&&& 在实际的项目中,至少有2种类型的JDBC请求需要关注:select语句和存储过程。前者反应了select语句是否高效,以及表的索引等是否需要优化;后者则是反应存储过程的算法是否高效。它们如果效率低下,必然会带来响应上的不尽如人意。对于这两种请求,JDBC请求的配置略有区别:
&&& Select语句
&&&&&&& 如果对于,如果测试的是函数,那么也可以使用select语句来进行配置,此时可以使用:select 函数(入参) from dual形式的语句来测试,其中dual是oracle的关键字,表示哑表。对于其它厂商的数据库产品,请查找手册。
&&&&&&& MOM 作为消息数据的平台,也是影响应用执行效率的潜在环节。在 Java 程序中,是通过 JMS 与 MOM 进行交互的。作为 Java 实现的压力测试工具,JMeter 也能使用 JMS 对应用的消息交换和相关的数据处理能力进行测试。这一点应该不难理解,因为在整个测试过程中,JMeter 测试的重点应该是消息的产生者和消费者的本身能力,而不是 MOM本身。
根据 JMS 规范,消息交换有2种方式:发布/订阅和点对点。JMeter针对这两种情形,分别提供了不同的Sampler进行支持。以下MOM我们使用ActiveMQ 3.2.1,分别描述这两种消息交换方式是如何使用 JMeter 进行测试。
1. 测试前的准备(两种情况都适用)
&&&&&&& JMeter 虽然能使用 JMS 对 MOM 进行测试,但是它本身并没有提供JMS需要使用的包。因此,在测试之前需要将这些包复制到 %JMETER_HOME%/lib 下。对于 ActiveMQ 来说,就是复制 %ACTIVEMQ_HOME%/lib。%ACTIVEMQ_HOME%/optional 是可选包,可根据实际情况来考虑是否复制。
&&&&&&& JMeter 在测试时使用了 JNDI,为了提供 JNDI 提供者的信息,需要提供 jndi.properties。同时需要将 jndi.properties 放到 JMeter 的 classpath 中,建议将它与 bin下的 ApacheJMeter.jar 打包在一起。对于 ActiveMQ,jndi.properties 的示例内容如下:
java.naming.factory.initial = org.activemq.jndi.ActiveMQInitialContextFactory java.naming.provider.url = ://localhost:61616
#指定connectionFactory的jndi名字,多个名字之间可以逗号分隔。 #以下为例: #对于topic,使用(TopicConnectionFactory)context.lookup("connectionFactry") #对于queue,(QueueConnectionFactory)context.lookup("connectionFactory") connectionFactoryNames = connectionFactory
#注册queue,格式: #queue.[jndiName] = [physicalName] #使用时:(Queue)context.lookup("jndiName"),此处是MyQueue queue.MyQueue = example.MyQueue
#注册topic,格式: # topic.[jndiName] = [physicalName] #使用时:(Topic)context.lookup("jndiName"),此处是MyTopic topic.MyTopic = example.MyTopic &
2. 发布/订阅
&&&&&&& 在实际测试时,发布者和订阅者并不是需要同时出现的。例如,有时我们可能想测试单位时间内消息发布者的消息产生量,此时就不需要消息发布者,只需要订阅者就可以了。本例为了说明这两种Sampler的使用,因此建立如下的测试计划:
&&&&&&&&&&&
&&&&&&& 其中JMS Publisher和JMS Subscriber的属性:选择"使用jndi.properties",连接工厂是connectionFactory,主题是MyTopic,其它使用默认配置。对于JMS Publisher,还需提供测试用的文本消息。
&&&&&&& 启动ActiveMQ,运行测试计划。如果配置正确,那么与ActiveMQ成功连接之后,在JMeter的后台会打印出相关信息。在测试过程中,JMeter 后台打印可能会出现java.lang.InterruptedException 信息,这个是正常现象,不会影响测试过程和结果。这一点可以从 bin 下的 jmeter.log 看出。
&&&&&&& 对于点对点,JMeter只提供了一种Sampler:JMS Point-to-Point。在例子中,建立如下图的测试计划:
&&&&&&&&&&&
&&&&&&& 其中:Communication style是Request Only。对于另一种风格:Request Response,会验证收到消息的JMS Header中的JMSCorrelationID,以判断是否是对请求消息的响应。
&&&&&&& 本文介绍了如何使用JMeter完成最常用的三种类型服务器的压力测试,这三种类型的压力测试涵盖了很大一部分的使用情形,然而需要记住的是工具毕竟是工具。效果好不好,关键还是在于使用的人。而且,对于压力测试,测试计划的好坏是关键。针对不同的情况,分析后有针对的进行测试,比起拿枪乱打、无的放矢显然要高效得多。
在使用SQLServer的过程中,用户遇到的最多的问题莫过于连接失败了。一般而言,有以下两种连接
Server 的方式:5V7t3g&?*@106738&&& 一是利用 SQL Server 自带的客户端工具,如企业管理器、查询分析器、事务探查器等。{/wY#c xv} {106738&&& 二是利用用户自己开发的客户端程序,如ASP 脚本、VB程序等,客户端程序中又是利用 ODBC 或者 OLE DB 等连接 SQL Server。下面,我们将就这两种连接方式,具体谈谈如何来解决连接失败的问题。
&&& 一、客户端工具连接失败51Testing软件测试网)AC"vtP&&& 在使用 SQL Server 自带的客户端工具(以企业管理器为例)连接 SQL Server时,最常见的错误有如下一些:
1、SQL Server 不存在或访问被拒绝51Testing软件测试网2EL'aj U&#8209;j`ConnectionOpen (Connect())51Testing软件测试网9A,}JW6Z&ja2、用户@#sa@#登录失败。原因:未与信任 SQL Server 连接相关联/rgO'HLK4AL#U1067383、超时已过期f)h8J5V`Mne&mV106738下面我们依次介绍如何来解决这三个最常见的连接错误。
第一个错误"SQL Server 不存在或访问被拒绝"通常是最复杂的,错误发生的原因比较多,需要检查的方面也比较多。一般说来,有以下几种可能性:
1、SQL Server名称或IP地址拼写有误;
2、服务器端网络配置有误;
3、客户端网络配置有误。
要解决这个问题,我们一般要遵循以下的步骤来一步步找出导致错误的原因。
首先,检查网络物理连接:
   ping <服务器IP地址>'A1L6e!` A%l2g106738 51Testing软件测试网/KRO+?5pssv  或者
   ping <服务器名称>51Testing软件测试网%C/D`N.Y~3h9t&
如果 ping <服务器IP地址>失败,说明物理连接有问题,这时候要检查硬件设备,如网卡、HUB、路由器等。还有一种可能是由于客户端和服务器之间安装有防火墙软件造成的,比如 ISA Server。
防火墙软件可能会屏蔽对 ping、telnet 等的响应,因此在检查连接问题的时候,我们要先把防火墙软件暂时关闭,或者打开所有被封闭的端口。
如果ping <服务器IP地址>成功而 ping <服务器名称>失败,则说明名字解析有问题,这时候要检查 DNS 服务是否正常。
有时候客户端和服务器不在同一个局域网里面,这时候很可能无法直接使用服务器名称来标识该服务器,这时候我们可以使用HOSTS文件来进行名字解析,具体的方法是:
1、使用记事本打开HOSTS文件(一般情况下位于C:\WINNT\system32\drivers\etc)。
2、添加一条IP地址与服务器名称的对应记录,如:
    172.168.10.24 myserverJ s-\O+`&#&
也可以在 SQL Server 的客户端网络实用工具里面进行配置,后面会有详细说明。
其次,使用 telnet 命令检查SQL Server服务器状态:
   telnet <服务器IP地址> 1433,I"r.J tW106738&
如果命令执行成功,可以看到屏幕一闪之后光标在左上角不停闪动,这说明 SQL Server 服务器工作正常,并且正在监听1433端口的 TCP/IP 连接;如果命令返回"无法打开连接"的错误信息,则说明服务器端没有启动 SQL Server 服务,也可能服务器端没启用 TCP/IP 协议,或者服务器端没有在 SQL Server 默认的端口1433上监听。
接着,我们要到服务器上检查服务器端的网络配置,检查是否启用了命名管道,是否启用了 TCP/IP 协议等等。我们可以利用 SQL Server 自带的服务器网络使用工具来进行检查。
点击:程序 -> Microsoft SQL Server -> 服务器网络使用工具。
从这里我们可以看到服务器启用了哪些协议。一般而言,我们启用命名管道以及 TCP/IP 协议。
点中 TCP/IP 协议,选择"属性",我们可以来检查 SQK Server 服务默认端口的设置
一般而言,我们使用 SQL Server 默认的1433端口。如果选中"隐藏服务器",则意味着客户端无法通过枚举服务器来看到这台服务器,起到了保护的作用,但不影响连接。
检查完了服务器端的网络配置,接下来我们要到客户端检查客户端的网络配置。我们同样可以利用 SQL Server 自带的客户端网络使用工具来进行检查,所不同的是这次是在客户端来运行这个工具。
点击:程序 -> Microsoft SQL Server -> 客户端网络使用工具
从这里我们可以看到客户端启用了哪些协议。一般而言,我们同样需要启用命名管道以及 TCP/IP 协议。
点击 TCP/IP 协议,选择"属性",可以检查客户端默认连接端口的设置,该端口必须与服务器一致。
单击"别名"选项卡,还可以为服务器配置别名。服务器的别名是用来连接的名称,连接参数中的服务器是真正的服务器名称,两者可以相同或不同。我们可以使用myserver来代替真正的服务器名称sql2kcn-02,并且使用网络库 Named Pipes。别名的设置与使用HOSTS文件有相似之处。
通过以上几个方面的检查,错误 1 发生的原因基本上可以被排除。下面我们再详细描述如何来解决错误 2。
当用户尝试在查询分析器里面使用sa来连接SQL Server,或者在企业管理器里面使用sa来新建一个SQL Server注册时,经常会遇到如图 2 所示的错误信息。
该错误产生的原因是由于SQL Server使用了"仅 Windows"的身份验证方式,因此用户无法使用SQL Server的登录帐户(如 sa )进行连接。解决方法如下所示:
1、 在服务器端使用企业管理器,并且选择"使用 Windows 身份验证"连接上 SQL Server;
2、 展开"SQL Server组",鼠标右键点击SQL Server服务器的名称,选择"属性",再选择"安全性"选项卡;
3、 在"身份验证"下,选择"SQL Server和 Windows ";
4、 重新启动SQL Server服务。
在以上解决方法中,如果在第 1 步中使用"使用 Windows 身份验证"连接 SQL Server 失败,那么我们将遇到一个两难的境地:首先,服务器只允许了 Windows 的身份验证;其次,即使使用了 Windows 身份验证仍然无法连接上服务器。
这种情形被形象地称之为"自己把自己锁在了门外",因为无论用何种方式,用户均无法使用进行连接。实际上,我们可以通过修改一个注册表键值来将身份验证方式改为 SQL Server 和 Windows 混合验证,步骤如下所示:
1、点击"开始"-"运行",输入regedit,回车进入注册表编辑器;
2、依次展开注册表项,浏览到以下注册表键:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer]*{5emrB106738&
3、在屏幕右方找到名称"LoginMode",双击编辑双字节值;
4、将原值从1改为2,点击"确定";
5、关闭注册表编辑器;
6、重新启动SQL Server服务。
此时,用户可以成功地使用sa在企业管理器中新建SQL Server注册,但是仍然无法使用Windows身份验证模式来连接SQL Server。这是因为在 SQL Server 中有两个缺省的登录帐户:BUILTIN\Administrators 以及<机器名>\Administrator 被删除。要恢复这两个帐户,可以使用以下的方法:
1、打开企业管理器,展开服务器组,然后展开服务器;
2、展开"安全性",右击"登录",然后单击"新建登录";
3、在"名称"框中,输入 BUILTIN\Administrators;
4、在"服务器角色"选项卡中,选择"System Administrators" ;
5、点击"确定"退出;
6、使用同样方法添加 <机器名>\Administrator 登录。
以下注册表键
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer\LoginModetu*z5iRq106738&
值决定了SQL Server将采取何种身份验证模式。该值为1,表示使用Windows 身份验证模式;该值为2,表示使用混合模式(Windows 身份验证和 SQL Server 身份验证)。
看完如何解决前两个错误的方法之后,让我们来看一下第三个错误。
如果遇到第三个错误,一般而言表示客户端已经找到了这台服务器,并且可以进行连接,不过是由于连接的时间大于允许的时间而导致出错。这种情况一般会发生在当用户在Internet上运行企业管理器来注册另外一台同样在Internet上的服务器,并且是慢速连接时,有可能会导致以上的超时错误。有些情况下,由于局域网的网络问题,也会导致这样的错误。
要解决这样的错误,可以修改客户端的连接超时设置。默认情况下,通过企业管理器注册另外一台SQL Server的超时设置是 4 秒,而查询分析器是 15 秒(这也是为什么在企业管理器里发生错误的可能性比较大的原因)。具体步骤为:
1、在企业管理器中,选择菜单上的"工具",再选择"选项";
2、在弹出的"SQL Server企业管理器属性"窗口中,点击"高级"选项卡;
3、在"连接设置"下的"登录超时(秒)"右边的框中输入一个比较大的数字,如 20。
查询分析器中也可以在同样位置进行设置。
二、应用程序连接失败
以上的三种错误信息都是发生在 SQL Server 自带的客户端工具中,在应用程序中我们也会遇到类似的错误信息,例如:
Microsoft OLE DB Provider for SQL Server (0x)`6T6o hV[0l106738[DBNETLIB][ConnectionOpen (Connect()).]Specified SQL server not found.
Microsoft OLE DB Provider for SQL Server (0x)51Testing软件测试网 n+nnX&A1n用户 @#sa@# 登录失败。原因: 未与信任 SQL Server 连接相关联。
Microsoft OLE DB Provider for ODBC Drivers 错误 @#@#.51Testing软件测试网5vG;~2@;pod[Microsoft][ODBC SQL Server Driver]超时已过期.7mv:x Vgq&#8209;H+nU106738&
首先,让我们来详细看以下的示意图来了解一下使用 ODBC 和使用 OLE DB 连接 SQL Server 有什么不同之处。
在实际使用中,应用程序创建和使用各种 ADO 对象,ADO 对象框架调用享用的 OLE DB 提供者。
为了访问 SQL Server ,OLE DB 提供了两种不同的方法:用于 SQL Server 的 OLE DB 提供者以及用于 ODBC 的 OLE DB 提供者。这两种不同的方法对应于两种不同的连接字符串,标准的连接字符串写法如下所示:
1、使用用于 SQL Server 的 OLE DB 提供者:
使用 SQL Server 身份验证:
oConn.Open "Provider=" & _;JKx(nl V106738"Data Source=myServerN" & _k V,SJ G1k@ xmPJ106738"Initial Catalog=myDatabaseN" & _51Testing软件测试网$E$i_$A cn"User Id=myU" & _u R'd{r106738"Password=myPassword"51Testing软件测试网M:m8TE @cu3f&51Testing软件测试网:vp5I1z`sn\%`7S使用 Windows 身份验证(信任连接):
oConn.Open "Provider=" & _51Testing软件测试网C3aq[J5B:L8m j h:cT"Data Source=myServerN" & _51Testing软件测试网5X;|hF0x"v!Y"Initial Catalog=myDatabaseN" & _51Testing软件测试网sx|z NL @"Integrated Security=SSPI"FQ0^c&c"I1A_106738&
&&& 2、使用用于 ODBC 的 OLE DB 提供者(不使用 ODBC 数据源):
使用 SQL Server 身份验证:
oConn.Open "Driver={SQL Server};" & _51Testing软件测试网:_\(Vy,rl ~"Server=MyServerN" & _UH4i*|2fH"F6c N2g*z4|106738"Database=myDatabaseN" & _%N.Xwa t106738"Uid=myU" & _PsYd!O1V&#8209;j Z@@106738"Pwd=myPassword"51Testing软件测试网t&#8209;DJ4h o8M0z&
<SPAN style="FONT-SIZE: 14 COLOR: #8d8d8d; FONT-FAMILY: 宋体; mso-ascii-theme-font: minor- mso-fareast-theme-font: minor- mso-hansi-theme-font: minor- mso-bidi-font-family: A mso-
ODBC(开放数据库互连):是Microsoft引进的一种早期数据库接口技术。它实际上是ADO的前身。早期的数据库连接是非常困难的. 每个数据库的格式都不一样,开发者得对他们所开发的每种数据库的底层API有深刻的了解. 因此,能处理各种各样数据库的通用的API就应运而生了. 也就是现在的ODBC(Open Database Connectivity), ODBC是人们在创建通用API的早期产物. 有许多种数据库遵从了这种标准,被称为ODBC兼容的数据库. OLEDB(对象链接和嵌入数据库)位于ODBC层与应用程序之间. 在你的ASP页面里,ADO是位于OLEDB之上的"应用程序". 你的ADO调用先被送到OLEDB,然后再交由ODBC处理. 你可以直接连接到OLEDB层,如果你这么做了,你将看到服务器端游标(recordset的缺省的游标,也是最常用的游标)性能的提升. 用odbc连接数据库: odbc中提供三种dsn,它们的区别很简单:用户dsn只能用于本用户。系统dsn和文件dsn的区别只在于连接信息的存放位置不同:系统dsn存放在odbc储存区里,而文件dsn则放在一个文本文件中。 它们的创建方法就不说了。 在asp中使用它们时,写法如下: A.sql server: 用系统dsn: connstr="DSN= UID= PWD=DATABASE=dbname" 用文件dsn: connstr="FILEDSN=UID= PWD=DATABASE=dbname" 还可以用连接字符串(从而不用再建立dsn): connstr="DRIVER={SQL SERVER};SERVER=UID=PWD=xxx" B.access: 用系统dsn: connstr="DSN=dsnname" (或者为:connstr="DSN=UID=PWD=xxx") 用文件dsn: connstr="FILEDSN=xx" 还可以用连接字符串(从而不用再建立dsn): connstr="DRIVER={Microsoft Access Driver};DBQ=d:\abc\abc.mdb" 用oledb连接数据库: A.sql server: connstr="PROVIDER=SQLOLEDB; DATA SOURCE=UID=PWD=DATABASE=dbname" B.access: connstr="PROVICER=MICROSOFT.JET.OLEDB.4.0; DATA SOURCE=c:\abc\abc.mdb" 值得注意的是,OLE DB对ODBC的兼容性,允许OLE DB访问现有的ODBC数据源。其优点很明显,由于ODBC相对OLE DB来说使用得更为普遍,因此可以获得的ODBC驱动程序相应地要比OLE DB的要多。这样不一定要得到OLE DB的驱动程序,就可以立即访问原有的数据系统。 提供者位于OLE DB层,而驱动程序位于ODBC层。如果想使用一个ODBC数据源,需要使用针对ODBC的OLE DB提供者,它会接着使用相应的ODBC驱动程序。如果不需要使用ODBC数据源,那么可以使用相应的OLE DB提供者,这些通常称为本地提供者(native provider)。 可以清楚地看出使用ODBC提供者意味着需要一个额外的层。因此,当访问相同的数据时,针对ODBC的OLE DB提供者可能会比本地的OLE DB提供者的速度慢一些。
经常用办公的朋友可能会遇到这样或那样的问题,对其中一些问题,始终不得其解,现将较为常见的问题及解决的方法告知,以此共勉。
  1.如何禁止Word自动编号
  我们在使用编号或项目符号时,许多段落都自动加上了编号或项目符号,而有时我们并不希望这样。出现这种情况,是因为用户打开了“自动编号列表”或“自动项目符号列表”这一功能。要取消已经生成的多余的项目符号,只须按一下“Ctrl+Z”组合键就可以了。用户可以通过如下步骤来取消编号或项目符号的自动列表功能:
  (1) 单击“格式”菜单中的“自动更正”命令。
  (2)在出现的自动更正对话框中选取“自动套用格式”选项卡。取消“键入时自动应用”选项组中的“自动编号列表”或“自动项目符号列表”选项即可。
  2.如何让文档中的每个章节拥有各自的页眉页脚
  (1)将光标置于使用不同页眉页脚的章节之间。
  (2)单击“插入”菜单中的“分隔符”命令。此时Word将弹出“分隔符”对话框。
  (3)在“分节符”选项组中选择自己需要的分节符类型。
  (4)重复步骤1~3,使各个不同的章节之间都有分节符。
  (5)插好分节符后,就可以为不同的章节指定不同的页眉页脚了。
  3.怎么看不见Word中绘制的线条
  在用Word提供的绘图功能时怎么也看不见绘制的线条。出现这种现象的原因是将Word绘图功能中线宽设置为0了。这时只要更改相应的线宽即可。
  4.Word文件中的图形变成了大红叉怎么办
  插入Word中的图片,有时会无法显示,代之出现的是一个醒目的大红叉。没有比这更加糟糕的事情了。出现这种情况时,有时图片已经损坏,无法再恢复了,有时后还是可以恢复的。下面介绍出现大红叉的一些原因:
  (1)资源或内存空间不够。
  (2)有的图片是从Internet下载的JPEG或GIF格式,包含一些非常复杂的格式选项,如动画,声音等,而Word只能识别一些简单的格式。
  (3)系统设置的临时文件夹无效。
  (4)系统允许打开的文件数太少。
  下面的一些措施可以减少或避免Word图片中红叉的出现:
  (1)加大内存,最好不要少于64MB。
  (2)将插入图片的格式更改过来。
  (3)通过以下所示的步骤来取消文档的快速保存功能:单击“工具”菜单中的“选项”命令,在随后出现的对话框中选取“保存”选项卡,在“保存选项”选项组中清除快速保存功能。
  (4)最好采用“粘贴”命令插入图片,如果采用“链接”命令插入图片,当图片的位置发生变化时,DOC文件会受到影响。
  (5)文档体积不能太大。
  (6)增加系统可以打开的临时文件数目。这是因为Word打开文档时,插人文档中的图形将作为一个临时文件打开,这些临时文件放在系统默认的TEMP目录下面。而系统可以打开临时文件的数量是有限制的,这个限制取决于CONFIG.SYS中的语句FILES等于的数值,绝大多数的用户根本没有注意到这个问题,而直接使用系统设置的默认值。
  (7)对于那些含有复杂格式的图片,最好在放入 Word之前将那些Word不能识别的复杂格式去掉。如对于GIF文件,将 GIF 89A格式转存为 CIS GIF87或 87A。对于JPEG格式的文件,取消它的重绘功能,存为更加简单的格式。
&写长文档的时候最害怕遇到什么?假设写了一篇300页的文档,里面的各种插图也超过100张了,在写的时候,插图已经被标上了“图1”、“图2”之类的标号。但BOSS看过后告诉你,有两张图之间还需要插入一张图。这可好,新插入一张图后,后面所有图的标号都要顺延1了,如果是在文章末尾插入新图,那工作量还小一些;但如果是在文章开头处新插入,呵呵,有得忙了。
  另一种情况,假设在写一篇文章,里面很多表格。最后如果希望在文章末尾为所有表格创建一个索引,这样读者根据索引可以用页数定位到相应的表格,你会怎么做?直接手工创建索引吗?那如果文章后期还要编辑,页码发生了变动,难道再挨个更新页码?
  如果在文章的正文中需要引用,例如“如果想了解有关xxx的详细信息,请参考本文第x页xxx节的相关内容”,这时候你会怎样做?手工创建索引?那以后如果页数变化了,或者章节的编号名称变化了,难道再挨个手工更新?
  呵呵,Word虽然让文档的处理工作简化了不少,但如果你对Word不够熟,可能依然会做很多重复性的工作。我以前就被这些问题困扰着,直到现在了解了Word的题注和交叉引用功能,呵呵,茅塞顿开。原来我以前都是在抱着金碗要饭呢。好的方法自然要给大家介绍一下了。这些技巧适合Word XP/等几乎所有较新的版本,只不过可能在细节上有所不同。下文会以Word 2007为例进行介绍。
  图片、表格等元素的插入
  在很多文档中,都要求在插入了图片或者表格后还要显示相应的标号以及一些简短的描述,例如这样:
  这时候最笨的方法就是在插入图片或者表格之后,另起一行,然后设置和图片或表格同样的对齐方式,然后手工输入所有信息。试试看这样做吧:
  对于图片,将图片插入文档后,用鼠标右键单击图片,选择“插入题注”,随后可以看到下图所示的界面。
  首先,在“题注”一栏显示的是插入后的题注的内容。“标签”下拉菜单可以用于选择题注的类型,例如如果插入的是图片,可以选择“图表”,或者根据插入的内容类型选择“表格”,“公式”。如果觉得Word自带的几种标签类型不太贴切,单击“新建标签”按钮即可新建自己需要内容的标签。随后可以在“位置”下拉菜单选择题注出现的位置,可选的位置是项目的上方或下方,可以根据世纪需要选择。经过上述简单的设置,单击“确定”,Word就会自动为我们创建好题注。
  如果是表格需要插入题注,只需要选中整个表格,然后用鼠标右键单击,会出现同样的选项
  为什么要这样做?这样做比手工输入还麻烦,有什么必要?其实就是上文提到的第一个例子。如果你创作的是短文档,页数不超过10页,其中没有插图或者只有很少的插图,确实没必要这样做。但如果有上百张插图,如果日后需要在两张图片中增加图片,那么只要所有图标都使用题注的方式进行了标识,那么新插入的图片以及后面图片的题注中的图片编号都会被自动更新。也就是说,如果在“图10”前面插入了一张图片,那么原来的“图10”就会自动变为“图11”,后面的图片一样会自动更新
元素的交叉引用
  如果我在写文档的时候需要提及某个内容,例如“如果想了解有关xxx的详细信息,请参考本文第x页xxx节的相关内容”,这时候方便起见可以使用交叉引用功能。以我现在正在写的一本书为例吧,如果在介绍Windows的安全性时提到了Windows安全中心,那么正常情况下,我应该在这里添加一句“关于安全中心的详细信息,请参考本书第x页xxx节的内容”。因为随着编辑,书稿中每部分内容的页数以及节编号都有可能发生改变,因此直接手工输入就是一个最笨的办法。这时候可以使用交叉引用。在正文中输入了“关于安全中心的详细信息,请参考本书第”字样后,打开Word 2007的“插入”工具栏,然后单击“交叉引用”按钮,随后可以看到下图所示界面。
  因为我要引用的是本文档中其他段落的标题和页数,因此首先需要在“引用类型”下拉菜单中选择“标题”,接着本书的所有标题都会出现在下面的列表中(这种列表仅适用于通过样式创建的具有结构的标题)。接着,因为需要先显示被引用内容的页数,因此在“引用内容”下拉菜单中选择“页数”,插入一个交叉引用。随后,紧接着输入一个“页”字,然后再次插入一个内容为“标题文字”或者其他内容的交叉引用。这样,引用好的内容就变成下面这样了:
  注意图中灰色背景的内容,这就是交叉引用的“域”。这些内容会随着文档结构的变化产生变化。例如,如果在插入这个引用的时候,安全中心一节的内容位于文档的36页,同时章节编号和名称是“1.4 安全中心”,但经过编辑这部分内容被放到了文档的46页,章节编号和名称变成了“1.5 Windows安全中心”,那么所有通过这种方法插入的交叉引用的页数和章节名称也会自动发生变化。或者我们可以用鼠标右键单击这些灰色区域,选择“更新域”,强制进行手工更新。
  创建图表目录
  好了,文档编写完了,我们还需要在文档的末尾对文中出现的所有图片和表格或者其他内容列一个目录出来,方便读者的快速定位,这时候,如果你的图片或表格都按照上文介绍的方法添加了题注,那么解决起来很简单。
  将鼠标插入点放置在需要创建图片或表格目录的位置,打开Word2007的“引用”工具栏,单击“插入图表目录”按钮,随后可以看到下图所示的对话框。
  首先,从“题注标签”下拉菜单中选择你要创建索引的内容对应的题注,例如“图表”、“图”,或者其他你按照上文方法插入的题注,然后选择好其他选项,并单击确定,呵呵,搞定收工。
在此列出A、B、C三类网络子网数目与子网掩码的转换表,以供参考。
子网数目 占用位数    子网掩码    子网中主机数 2     1    255.128.0.0    8,388,606 4     2    255.192.0.0    4,194,302 8     3    255.224.0.0    2,097,150 16     4    255.240.0.0    1,048,574 32     5    255.248.0.0    524,286 64     6    255.252.0.0    262,142 128    7    255.254.0.0    131,070 128    8    255.255.0.0    65,534
子网数目 占用位数    子网掩码    子网中主机数 2     1    255.255.128.0   32,766 4     2    255.255.192.0   16,382 8     3    255.255.224.0   8,190 16     4    255.255.240.0   4,094 32     5    255.255.248.0   2,046 64     6    255.255.252.0   1,022 128    7    255.255.254.0   510 256    8    255.255.255.0   254
子网数目 占用位数    子网掩码    子网中主机数 2     1    255.255.255.128   126 4     2    255.255.255.192   62 8     3    255.255.255.224   30 16     4    255.255.255.240   14 32     5    255.255.255.248   6 64     6    255.255.255.252   2
1、是否支持格式化类型2、不同情况下LED灯的情况(文件传输,删除文件,格式化)3、U盘的加锁功能是否正常4、传输文件时,断电或拔掉,U盘中的数据是否丢失5、传输文件时,Cancel后,文件传输是否停止6、存储不同格式的文件,是否能正确显示7、U盘中塞满图片,浏览时的反应速度是否正常8、在U盘中观看大型的影视文件,看读盘会不会hang up9、不同的应用程序打开U盘中的文件是否正确10、不同的系统是否可以正确识别出U盘11、U盘的盘符是否正确12、网络共享时,其它用户是否能找到该U盘13、U盘容量显示是否正确14、传输速度的测试(USB1.0和2.0)15、是否支持热插拔16、是否便于携带17、U盘通过USB线连接电脑,传输是否正常18、U盘满后,住U盘copy文件时是否正确提示19、安装好U盘驱动后,U盘是否正确工作20、U盘的外观,重量21、U盘在极端的工作温度范围内,是否正常工作22、U盘的已用空间和可用空间显示是否正确23、系统中是否正确显示U盘的型号24、更换别的USB插口,U盘是否正常工作25、U盘未格式化之前,是否充许存储文件26、U盘制作成引导盘后,是否能正确引导系统27、U盘的防震功能28、U盘格式化后,U盘中的数据是否丢失29、在系统中移除U盘,U盘的盘符是否消失U盘的插拔识别U盘的容量U盘的读写U盘文件的加密解密格式化U盘U盘的读写速度U盘多盘符在U盘上创建、修改、删除文件U盘的超时向U盘复制大文件(U盘空间够大或者不够大)操作系统的兼容性(XP自带U盘驱动,自己编写的U盘驱动能否被成功安装?)U盘与虚拟磁盘驱动的冲突
邮件服务器是一种Internet服务软件产品,支撑着Internet众多网络服务的是各种服务协议。在选择邮件服务器产品时,要重点考虑其支持服务协议方面的能力,因为它是衡量产品性能的重要指标。与邮件服务器产品有关的网络服务协议主要有以下6个,其中我们重点介绍和我们关系最密切的两个:1.SMTP 协议  SMTP协议 (Simple Mail Transfer Protocol,简单邮件传输协议)是最早出现的,也是被普遍使用的最基本的Internet邮件服务协议。正如它的名称,SMTP协议支持的功能确实比较简单,并且有安全方面的缺陷。经过它传递的所有电子邮件都是以普通正文形式进行的。它不能够传输诸如图像等非文本信息。在网络上明码传输文本信息意味着任何人都可以在中途截取并复制这些邮件,甚至对邮件内容进行窜改。邮件在传输过程中可能丢失。别有用心的人也很容易以冒名顶替的方式伪造邮件。为了克服上述缺陷,后来出现了ESMTP (Extended SMTP,扩展的SMTP协议)。2.POP3 协议  POP 协议(Post Office Protocol,邮局协议)是一种允许用户从邮件服务器收发邮件的协议。它有2种版本,即POP2和POP3,都具有简单的电子邮件存储转发功能。POP2与POP3本质上类似,都属于离线式工作协议,但是由于使用了不同的协议端口,两者并不兼容。与 SMTP协议相结合,POP3是目前最常用的电子邮件服务协议。  POP3除了支持离线工作方式外,还支持在线工作方式。在离线工作方式下,用户收发邮件时,首先通过POP3客户程序登录到支持POP3协议的邮件服务器,然后发送邮件及附件;接着,邮件服务器将为该用户收存的邮件传送给POP3客户程序,并将这些邮件从服务器上删除;最后,邮件服务器将用户提交的发送邮件,转发到运行SMTP协议的计算机中,通过它实现邮件的最终发送。在为用户从邮件服务器收取邮件时,POP3是以该用户当前存储在服务器上全部邮件为对象进行*作的,并一次性将它们下载到用户端计算机中。一旦客户的邮件下载完毕,邮件服务器对这些邮件的暂存托管即告完成。使用POP3,用户不能对他们贮存在邮件服务器上的邮件进行部分传输。离线工作方式适合那些从固定计算机上收发邮件的用户使用。  当使用POP3在线工作方式收发邮件时,用户在所用的计算机与邮件服务器保持连接的状态下读取邮件。用户的邮件保留在邮件服务器上。3.IMAP4 协议 (Internet Message Access Protocol,Internet消息访问协议)  为用户提供了有选择地从邮件服务器接收邮件的功能、基于服务器的信息处理功能和共享信箱功能。4.HTTP 协议和 HTML 语言  支持这个协议的邮件服务器可以提供基于Web的电子邮件收发服务。借助HTML语言,管理员可以自己定义和编写面向用户的电子邮件服务网页。这样,用户可以使用任何Web浏览器,通过Internet在任何地点收发电子邮件。系统管理员也可以使用Web浏览器,实现对邮件服务器的远程管理*作。5.MIME 协议  多用途 Internet邮件扩展 (Multipurpose Internet Mail Extensions)协议。作为对SMTP协议的扩充,MIME规定了通过SMTP协议传输非文本电子邮件附件的标准。6.LDAP 协议  轻量目录访问协议 (Lightweight Directory Access Protocol)。通过将相关的内容存放在统一的目录之下,目录服务为用户提供了基于客户/服务器工作方式的信息查询手段。
什么是升级测试?比如说你们公司开发的产品现已经发布的是V1.0,由于被发现存在缺陷,这时就需开发Patch或Hot Fix,并进行升级测试,然后发布V1.1。
升级测试听起来似乎挺平常的,但它其实也是中比较重要的一部分,它通常包括以下内容:
当发布一个系统的新版本时,程序代码肯定是被修改过了,安装测试的目的是确保安装完成后修改过的文件被复制到了正确的位置,比如说某个文件夹包含了所有更新的HTML文件,这时就要检查相关的CSS文件夹下的文件是不是更新了,如果只更新了HTML而没更新CSS,那么相应的颜色/字体就不能正确地显示。
如果公司研发过程比较规范,安装测试通常是在员的配合下完成的。首先,是文件夹级的测试,检查安装过程中复制到系统中的文件夹的时间戳是否变化;其次,检查被修改过的文件的大小,并和之前的版本进行比较,当然,这分两种测试,如果是,测试人员要打开相应的文件确认新代码和改过的代码,如果是,那就要检查文件大小应与旧版本的不同。
数据库测试
很多情况下,系统的升级都是伴随着数据库脚本的更新,数据库测试通常也是由DBA人员或在DBA的配合下进行。升级前要停止数据库并做备份,然后执行升级脚本,之后测试人员需要查看数据库,并检查库中被修改的记录是否正确。如果升级脚本是在库中创建一个新的Table或是新的Relation,那么数据库测试应该关注对空库的测试,比如先建一个空库V1.0,只包含一些空的Table和Relation,而不包含任何数据,然后测试人员执行升级脚本,并查看日志文件里是否有报错,如果没有报错一切ok,则通过应用程序连到数据库上执行一些用例来确保数据的Inset或Update都是正确的。
当安装测试和数据库测试都通过之后,进行应用测试,有两种方法:
方法一:先配一个空的数据库(即除了一些必需的初始化数据再没有数据),然后把应用程序升级一下,执行业务流程测试看系统是否能够正常运行。
方法二:也是先配好数据库,但库里存有一些实际数据,然后把程序升级一下(比如从V1.0升至V1.1),运行应用程序,检查那些已有的数据在V1.1上是否也能被正确的展现和使用,最后执行业务流程测试看系统是否能够正常运行。
有的时候升级完后还要手工修改库中已有的记录,比如一个网上银行的系统,它里面有很多支付或转帐的数据,在做升级测试时,就可能要修改那些在上一版本中生成的数据,因为它们可能涉及到多个表之间的数据转换或一二级约束。
文档测试主要是验证相关的版本说明或者安装手册等文档是否和系统升级相匹配,这点很重要,因为客户通常都是根据版本说明和安装手册进行系统的安装或升级。
进行文档测试必须理解详细的升级步骤,比如文档中应建议用户升级前要备份数据库、数据文件、配置文件等,再比如升级需要复制某些文件到特定目录,应当在版本说明中有所体现,总之,升级时任何必要的说明都应当在版本说明或安装手册内阐述清楚,安装时可以做什么以及不可以做什么都应在版本发布前得到确认。
第一款:e-pdfconverter官方下载地址:& 霏凡软件下载地址:/soft/7162.htmle-PDF To Word Converter v2.5.0.1 汉化版
介绍:批量转换 PDF 文件为 Word 文档(DOC) 或者 富文本格式(RTF) 以便于重复利用你的 PDF 文档内容,不需要安装Microsoft Word、Adobe Acrobat软件来提供支持,对包括各种编码在内的中日韩等东亚语系的方块字支持良好。对待转换文件的路径名和文件名也没有特殊要求,并非只支持 ASCII 字符构成的路径名和文件名。是一款相当方便的 PDF 解码工具。第二款:SolidConverterPDF官方下载地址:/products.htm?product=SolidConverterPDF绿色下载站:/soft/1548.htmlSolid Converter PDF V3.0汉化绿色版介绍:&Solid Converter PDF对Word来说是要将PDF文件转换成Microsoft Word文件(和Word文件转换成PDFs)。Solid Converter在Adobe收取少量成本费的情况下可以让你的文本,版面和图象重新获得正本单据。
基于Web的系统测试方法
基于的系统与传统的软件既有相同之处,也有不同的地方,对软件提出了新的挑战。基于的系统不但需要检查和验证是否按照设计的要求运行,而且还要评价系统在不同用户的浏览器端的显示是否合适。重要的是,还要从最终用户的角度进行安全性和可用性。
  本文从功能、性能、可用性、客户端兼容性、安全性等方面讨论了基于的系统方法。
  随着Internet和Intranet/Extranet的快速增长,已经对商业、工业、银行、财政、教育、政府和娱乐及我们的工作和生活产生了深远的影响。许多传统的信息和数据库系统正在被移植到互联网上,电子商务迅速增长,早已超过了国界。范围广泛的、复杂的分布式应用正在环境中出现。的流行和无所不在,是因为它能提供支持所有类型内容连接的信息发布,容易为最终用户存取。
  Yogesh Deshpande和Steve Hansen在1998年就提出了工程的概念。工程作为一门新兴的学科,提倡使用一个过程和系统的方法来开发高质量的基于的系统。它"使用合理的、科学的工程和管理原则,用严密的和系统的方法来开发、发布和维护基于的系统"。目前,对于web工程的研究主要是在国外开展的,国内还刚刚起步。
  在基于的系统开发中,如果缺乏严格的过程,我们在开发、发布、实施和维护的过程中,可能就会碰到一些严重的问题,失败的可能性很大。而且,随着基于的系统变得越来越复杂,一个项目的失败将可能导致很多问题。当这种情况发生时,我们对和Internet的信心可能会无法挽救地动摇,从而引起危机。并且,危机可能会比软件开发人员所面对的软件危机更加严重、更加广泛。
  在工程过程中,基于系统的、确认和验收是一项重要而富有挑战性的工作。基于的系统与传统的软件不同,它不但需要检查和验证是否按照设计的要求运行,而且还要系统在不同用户的浏览器端的显示是否合适。重要的是,还要从最终用户的角度进行安全性和可用性。然而,Internet和媒体的不可预见性使基于的系统变得困难。因此,我们必须为和评估复杂的基于的系统研究新的方法和技术。
  一般软件的发布周期以月或以年计算,而应用的发布周期以天计算甚至以小时计算。人员必须处理更短的发布周期,人员和管理人员面临着从传统的C/S结构和框架环境到快速改变的应用系统的转变。
  一、功能
  1、链接
  链接是应用系统的一个主要特征,它是在页面之间切换和指导用户去一些不知道地址的页面的主要手段。链接可分为三个方面。首先,所有链接是否按指示的那样确实链接到了该链接的页面;其次,所链接的页面是否存在;最后,保证应用系统上没有孤立的页面,所谓孤立页面是指没有链接指向该页面,只有知道正确的URL地址才能访问。
  链接可以自动进行,现在已经有许多工具可以采用。链接必须在集成阶段完成,也就是说,在整个应用系统的所有页面开发完成之后进行链接。
  2、表单
  当用户给应用系统管理员提交信息时,就需要使用表单操作,例如用户注册、登陆、信息提交等。在这种情况下,我们必须提交操作的完整性,以校验提交给服务器的信息的正确性。例如:用户填写的出生日期与职业是否恰当,填写的所属省份与所在城市是否匹配等。如果使用了默认值,还要检验默认值的正确性。如果表单只能接受指定的某些值,则也要进行。例如:只能接受某些字符,时可以跳过这些字符,看系统是否会报错。
  3、Cookies
  Cookies通常用来存储用户信息和用户在某应用系统的操作,当一个用户使用Cookies访问了某一个应用系统时,服务器将发送关于用户的信息,把该信息以Cookies的形式存储在客户端计算机上,这可用来创建动态和自定义页面或者存储登陆等信息。
  如果应用系统使用了Cookies,就必须检查Cookies是否能正常工作。的内容可包括Cookies是否起作用,是否按预定的时间进行保存,刷新对Cookies有什么影响等。
  4、设计语言
  设计语言版本的差异可以引起客户端或服务器端严重的问题,例如使用哪种版本的HTML等。当在分布式环境中开发时,开发人员都不在一起,这个问题就显得尤为重要。除了HTML的版本问题外,不同的脚本语言,例如Java、Javascrīpt、 ActiveX、VBscrīpt或Perl等也要进行验证。
  5、数据库
  在应用技术中,数据库起着重要的作用,数据库为应用系统的管理、运行、查询和实现用户对数据存储的请求等提供空间。在应用中,最常用的数据库类型是关系型数据库,可以使用SQL对信息进行处理。在使用了数据库的应用系统中,一般情况下,可能发生两种错误,分别是数据一致性错误和输出错误。数据一致性错误主要是由于用户提交的表单信息不正确而造成的,而输出错误主要是由于网络速度或程序设计问题等引起的,针对这两种情况,可分别进行。
  二、性能
  1、连接速度
  用户连接到应用系统的速度根据上网方式的变化而变化,他们或许是电话拨号,或是宽带上网。当下载一个程序时,用户可以等较长的时间,但如果仅仅访问一个页面就不会这样。如果系统响应时间太长(例如超过5秒钟),用户就会因没有耐心等待而离开。
  另外,有些页面有超时的限制,如果响应速度太慢,用户可能还没来得及浏览内容,就需要重新登陆了。而且,连接速度太慢,还可能引起数据丢失,使用户得不到真实的页面。
  2、负载
  负载是为了测量系统在某一负载级别上的性能,以保证系统在需求范围内能正常工作。负载级别可以是某个时刻同时访问系统的用户数量,也可以是在线数据处理的数量。例如:应用系统能允许多少个用户同时在线?如果超过了这个数量,会出现什么现象?应用系统能否处理大量用户对同一个页面的请求?
  3、压力
  负载应该安排在系统发布以后,在实际的网络环境中进行。因为一个企业内部员工,特别是项目组人员总是有限的,而一个系统能同时处理的请求数量将远远超出这个限度,所以,只有放在Internet上,接受负载,其结果才是正确可信的。
  进行压力是指实际破坏一个应用系统,系统的反映。压力是系统的限制和故障恢复能力,也就是应用系统会不会崩溃,在什么情况下会崩溃。黑客常常提供错误的数据负载,直到应用系统崩溃,接着当系统重新启动时获得存取权。
  压力的区域包括表单、登陆和其他信息传输页面等。
  三、可用性
  1、导航
  导航描述了用户在一个页面内操作的方式,在不同的用户接口控制之间,例如按钮、对话框、列表和窗口等;或在不同的连接页面之间。通过考虑下列问题,可以决定一个应用系统是否易于导航:导航是否直观?系统的主要部分是否可通过主页存取?系统是否需要站点地图、搜索引擎或其他的导航帮助?
  在一个页面上放太多的信息往往起到与预期相反的效果。应用系统的用户趋向于目的驱动,很快地扫描一个应用系统,看是否有满足自己需要的信息,如果没有,就会很快地离开。很少有用户愿意花时间去熟悉应用系统的结构,因此,应用系统导航帮助要尽可能地准确。
  导航的另一个重要方面是应用系统的页面结构、导航、菜单、连接的风格是否一致。确保用户凭直觉就知道应用系统里面是否还有内容,内容在什么地方。
  应用系统的层次一旦决定,就要着手用户导航功能,让最终用户参与这种
&&&&&&& 对 BUG 概念、类型划分、 BUG 状态、 BUG 严重程度等内容进行定义和规范,以便进一步指导我们的。
&&& 二、概念
&&&&&&& BUG :软件中存在的瑕疵,可能会导致系统失效。简单的说就是软件系统中存在的可能导致系统出错、失效、死机等问题的错误或缺陷。
&&& 三、 BUG 的类型划分
&&& 功能类
&&& A. 重复的功能
&&& B. 多余的功能
&&& C. 功能实现与设计要求不相符
&&& D. 功能使用性、方便性、易用性不够
&&& 界面类
&&& A. 界面不美观
&&& B. 控件排列、格式不统一
&&& C. 焦点控制不合理或不全面
&&& 数据处理类
&&& A. 数据有效性检测不合理
&&& B. 数据来源不正确
&&& C. 数据处理过程不正确
&&& D. 数据处理结果不正确
&&& 流程类
&&& A. 流程控制不符和要求
&&& B. 流程实现不完整
&&& 提示信息类
&&& A. 提示信息重复或出现时机不合理
&&& B. 提示信息格式不符和要求
&&& C. 提示框返回后焦点停留位置不合理
&&& 建议类 &&&& A. 功能性建议
&&& B. 操作建议
&&& C. 检校建议
&&& D. 说明建议 &&&& 性能类
&&& A. 并发量
&&& B. 数据量
&&& C. 压缩率
&&& D. 响应时间
&&& 常识类
&&& A. 违背正常习俗习惯的,比如日期 / 节日等
&&& 特殊类
&&& A. 不符合 OEM 版本或 DEMO 版本特殊要求的
摘要&&&&&&& 在系统测试和确认测试中,有些缺陷由于某些原因往往被忽略了,这就给软件留下了隐患或者危机。本文通过描述这些容易忽略的缺陷,提供一个完善测试用例和测试执行的参考。、正文:&&&&&&& 通常软件测试会暴露软件中的缺陷,经过修正后可以保证软件系统的功能满足需求并正确运行。但是,在系统测试和确认测试中,测试人员容易遗漏一些隐藏的缺陷。众所周知,软件测试不可能发现所有的缺陷,而软件开发周期各个阶段仍然存在注入缺陷的可能,但是,有一些缺陷是测试中容易忽略的,也就是说,通过测试方法和用例可以充分暴露这些缺陷,遗憾的是,它们往往被忽略或者某种原因忘记测试了,这就给软件留下了隐患或者危机。这些容易被忽略的缺陷包括:1、安装缺陷&&&&&&& 通常项目组完成代码后,发布时候安装打包是最后一个环节,而软件测试人员通常在测试的时候,没有仔细的测试这一部分,而把用例集中在功能上。安装时候的缺陷通常通过拷贝而不是运行安装程序方式给测试人员安装软件,结果正式安装时候出现问题,引起例如控件没有注册,注册表没有导入等。删除时候没有注意安装文件夹是否存在用户文件,造成数据丢失;使用绝对路径;安装顺序没有说明书。2、配置文件&&&&&&& 有些文件在 ini 等配置文件中写出了管理员口令密码等信息,而且是明文的!这是一个安全隐患。另外,有些安装文件的 XML 文件,为了方便在和中间层连接文件中写入了Admin 口令和密码。作为一个合格的软件测试人员,必须检查这些可以用记事本打开的文件。因为,一个稍有常识而且喜欢探索的用户,可能从中获取信息而成为不自觉的黑客。所以,配置文件可能成为软件安全方面的一个缺陷。3、网页安全缺陷&&&&&&& 现在网站开发已经注意到:登陆网站进入其内部网页后,直接拷贝网址,然后粘贴到另一IE 窗口输入,可以绕过登陆直接访问。也许商业网站很关注这个问题,但是很多行业软件却很容易忽略。&&&&&&& 网页安全缺陷还可能存在于 IE 弹出的子窗口。有些设计不严格的软件,在主页面关闭的时候子页面还可以运行,这是一个明显的漏洞,而且还大大增加了错误发生的几率。4、判断顺序/逻辑缺陷&&&&&&& 对界面进行多个输入判断的时候,非常容易出现这种问题。例如判断年月顺序,判断长度,判断非空等。假如操作员仅仅满足单个条件,保存不能成功;而按界面从上之下顺序一一满足条件之后,保存是没有问题的。但是,改变一下输入的次序,校验失效。例如,一一满足条件之后,不保存,倒过来将上面的输入改成非法输入,然后保存,结果居然也能成功,这是因为原先的判断由于发生过,或者根据语句顺序只检查最后一个判断,所以没有报错。这种错误尤其在 Java scrīpt 脚本的页面中要注意。能够保存不能保证数据正确,有可能引起系统崩溃或者后续数据错误。所以,在测试的时候,不要按照正常的顺序输入,而是要打乱步骤,看看代码是否强健,是否在判断逻辑上没有错误。良好的代码应该经得起折腾,至少保存时会再此全部进行判断,而不只是简简单单走到判断的最后一行。5、调试语句和冗余信息&&&&&&& 维护项目和升级改造的推广系统最容易潜伏这类缺陷。典型表现在没有删除或者屏蔽调试语句。弹出一个界面不友好的提示信息,会使不明真相的用户产生误以为系统发生了严重故障,从而引起对软件的不信任感。页面中某个角落存在当前客户不需要的冗余按钮和功能也是一种缺陷。多余的功能会使用户以为是额外附加部分而去使用,其结果可想而知;而多余的按钮会误导好奇心强的用户操作,产生不必要的错误。&&&&&&& 同样值得关注的还有参数设置,由于没有实际数据,开发人员在调试或者的时候,习惯性的进行自我设定而忘了删除,软件测试人员可能会忽略掉了这部分测试,也可能导致在客户现场发生错误而影响系统发布和验收。6、不可重现的故障&&&&&&& 新参加软件测试的人员或者新来的开发人员总是要问,不可重现的缺陷是否需要记录,有必要吗?回答是肯定的。测试必须如实的记录发生的问题,也许不能重现,或者使非软件系统本身问题,但是,可能这些偶然性背后是有规律的,不记录这些,就不可能发现这些规律。7、多节点的逆向流转缺陷&&&&&&& 当前软件不少喜欢使用流来驱动。工作流的问题,就是可能出现多个流向分支。测试容易忽略的部分,就是工作流多节点的逆向流转。例如,通过不通过涉及两个分支,但是流程逆转的时候,有可能不是回到上一节点而是平级的另一个节点去了。软件测试要格外注意这类用例的设计。另外,有些时候默认分支在向前的时候是有默认值的,例如默认通过,那么保存的时候要提示用户是否通过,否则可能由于操作疲劳而走错了节点,引起回退。8、输入框缺陷&&&&&&& 试过往输入框粘贴数据而不是直接输入吗?可能这里会出现问题。按 Ctrl+V 的时候,输入框会根据长度大小自动截断输入长度。但是用鼠标,截断可能会失效。有一次测试人员就是用这种方法把一篇 Word 文档输入进去了,保存的时候,数据库崩溃。有些网站登陆的口令****可以拷贝下来的,只要放在剪贴板里面马上明文显示。&&&&&&& 输入框可以说是问题最多的部分,能够引起的麻烦也很多。日期、数字、文本等等,都需要耐心的测试一下。9、界面布局缺陷&&&&&&& 曾经有一次,项目经理回来向测试部反映一个问题,客户对界面不满意。原因很简单,因为界面上删除按钮和保存按钮挨得很近。结果有些操作不熟练的业务人员,很容易误按。这个问题是测试人员没有意料到的,因此注意关闭、删除、退出按钮与保存、下一步等按钮的距离。类似的按钮应按此规则排列分布。&&&&&&& 界面布局还可能发生在窗口最大化和最小化上,有可能窗口缩小的时候没有下拉框或不匹配分辨率,对用户来讲,这个错误实在很低级。有些用户由于操作习惯,非常不喜欢腾出手使用鼠标,尤其是大量输入的界面,因此,要注意设置键盘的快捷方式。还有,按 Tab定位到下一焦点时要注意顺序,避免跳转太灵活而让操作人员感到无从适应,在界面进行维护或者修改的时候,不要忘了软件测试开发人员是否无意改变了这些快捷方式和跳转顺序。10、版本和补丁包的环境问题&&&&&&& 理论上讲,这属于兼容性测试应该覆盖的问题。有些客户很喜欢更新最新的软件版本或者时不时打些补丁包,问题就出现了。有时候升级不一定是好事。这些问题最好在测试的时候增加几个用例,多用不同软件版本的机器跑一跑。软件测试有个定律是:你没跑过的地方,就一定会出事。经常听到开发人员抱怨,怎么我的机器没问题,你的机器就有事了呢?这不能完全靠员解决问题,环境配置项是大家最容易忽略的。11、用户管理缺陷&&&&&&& 用户管理的角色和授权需要好好研究一下,作过测试的人员都知道,有时候为了测试的方便,测试用户都是具有超级权限的用户。而且,比较容易忽略用户管理这一部分的测试。往往发往客户的时候,很多测试用户都没有删除。&&&&&&& 另外,有些接口的用户和口令,到软件使用寿命结束都没有更改过。在一次测试中,软件测试人员发现,给一个用户授超级用户权限,之后更改这个用户为受限权限。使用中发现,用户居然没有真正回收权限,用户管理界面上没有任何不对。及早准备用户管理用例,不要等到测试快结束时候才想起。12、常识缺陷&&&&&&& 从逻辑或者统计学上讲,计算机是允许如此处理的,但是从常识上来讲,这些情况不可能发生。例如电话号码不可能出现小数点,终止时间不能大于开始时间等等。除此之外,常识还要结合业务特点来进行判断,因此,开发和测试人员要格外注意对自己知识的培养以及增加对需求细节的了解。不能因为一味追求进度而采用最简单的代码来实现,对用户来说,这些错误可能是很荒谬的。&&&&&&& 尽管我们不可能完美的测试一个软件,但是我们仍然可以改进我们的软件测试。每次测试结束,及时总结测试中的不足,进一步完善用例。思考一下那些容易忽略的软件缺陷,能提高对软件测试的认识,提高所在组织软件的质量。
关于“卸载测试”
============卸载测试==============文件----安装目录里的文件及文件夹(如:程序安装在几处的)      非安装目录(向系统其它地方添加的文件及文件夹)& && && && &它们包括(exe,dll,配置文件等)快捷方式-(桌面,菜单,任务栏,系统栏,控件面板,系统服务列表等)复原方面-卸载后,系统能否恢复到软件安装前的状态(包含目录结构、动态库,注册表, 系统配置文件,驱动程序,关联情况等)卸载方式--程序自带卸载程序/系统的控件面板卸载/其它自动卸载工具(如:优化大师)卸载状态--程序在运行/暂停/终止等状态时的卸载非正常卸载情况-卸载软件过程中,取消卸载进程,然后,观察软件能否继续正常使用冲击卸载--在卸载的过程中,中断电源,然后,启动计算机后,重新卸载软件,如果软件 无法卸载,则重新安装软件,安装之后再重新卸载。卸载环境--不同的(操作系统,硬件环境,网络环境等)下进行卸载卸载后,该系统是否对其他的应用程序造成不正常影响(如操作系统,应用软件等)==========安装测试============一:基本目标1.安装程序能正确运行2.程序安装正确3.程序安装后能正确运行4.完善性安装后程序能正确运行二:一些方面0、安装手册给的所有步骤得到验证;1、安装过程中所有缺省选项得到验证;2、安装过程中典型选项得到验证;3、测试各种不同的安装组合,并验证各种不同组合的正确性(包括参数组合,控件执行顺序 组合,产品安装组件组合,产品组件安装顺序组合(如b/s)等)4、安装过程中异常配置或状态(非法和不合理配置)情况进行了测试(如:断电;数据库终 止,网络终止等)5、安装后是否能产生正确的目录结构和文件,文件属性正确;6、安装后动态库是否正确;6、安装后软件能否正确运行;7、安装后没有生成多余的目录结构,文件,注册表信息,快捷方式等;9、安装测试应该在所有的运行环境上进行验证(手册上指定如:操作系统,数据库,硬件环 境,网络环境等);10、自动安装还是手工配置安装11、至少要在一台笔记本上进行安装/卸载测试,因为有很多产品在笔记本中会出现问题, 尤其是系统级的产品13、安装,该系统是否对其他的应用程序造成不正常影响(如操作系统,应用软件等)
大部分测试工具绑定了工具生产商指定的特定脚本语言,我们叫它厂商语言。这些语言很难学,实现得很弱,最重要的是,它们不鼓励测试员与开发人员之间的合作。测试员应该得到全特性的、标准的测试开发语言。为什么呢?
现在市面上的大部分测试工具,我们在使用时都要使用工具的脚本语言。令我最烦恼的是,为了使用他们的工具,我必须学习指定的脚本语言。大部分工具有录制功能,为你产生一些脚本,但是不可避免地,你要对脚本进行修改,自己编写脚本。这样的话,你就必须要学习额外的语言-厂商语言-这个语言只是在这个特定的工具上能使用!
因为厂商语言是特定的语言,开发人员对其知之甚少并且也不愿意学习它。我经常鼓励测试员和开发人员在自动化项目中一起合作。这是高效的合作方式。但是厂商语言挡在中间。它们把测试员和开发人员分开,孤立在指定的工具语言上。减少了共享、合作和改进的机会。
要把测试员和开发人员整合在测试过程中,我们已经有很多困难了。现在又多了个厂商语言的学习问题。你如果叫一个开发人员学习VB?没问题,因为他们毕竟可以在将来有使用得上的机会。你如果叫一个开发人员学习一个指定的语言,这个语言只能在这个工具上使用?你做梦吧!你已经很难让开发人员把注意力放在测试上了,现在又增加了一个困难。
为什么要把钱花在一个会破坏测试员与开发人员之间的合作关系的工具上?
有很多这种厂商脚本的方言。有些是类C语言。意味着什么?意味着写出来的代码想C语言的代码,但是没有指针,所以你不能使用在C课程和书本上学习到的任何复杂的数据结构。C作为脚本语言来说是很差的。它是编译的,但是测试脚本语言是解释执行的。这是为什么类C语言不支持指针。
其它的有些使用类VB语言的方言。如果你了解VB,则代码会看起来很眼熟,但是你不能使用VB的标准库。而且,你在VB中学到的东西未必被应用在厂商脚本语言上。
也有一些工具使用类似面向对象的厂商脚本语言。面向对象是好的,但是你会发现对一个类的修改不会继承到它的子类。什么?因为厂商脚本语言认为这样更方便测试的管理安排。这样是否真的能帮助测试员还有待讨论,但是测试员真正需要的不是为测试特定设计的语言。他们应该得到标准的语言实现,这样才会更好地帮助他们的测试工作。
一些更新的测试工具现在开始使用真正的脚本语言,像Javascrīpt或VB。我希望这种趋势能继续下去。而且,如果一些旧的工具能重新设计以支持标准语言则会更好。标准语言有正式的规范,会帮助你的测试组更好地用在测试上。
重复地发明轮子
最近有些文章在描述怎样使用厂商脚本添加堆栈和队列,这其实是厂商脚本的落后体现。厂商语言使自动化测试人员浪费很多时间和精力在重新发明轮子。堆栈和队列在标准语言上已经得到很好的实现。
我自己也有同感。我必须为不同的厂商语言创建库来支持sting操作、日期计算、计算排列组合等。有些厂商语言也有这样的库,但是标准语言的库会更大、更全面,也更加健壮。
很多非测试工具也嵌入了厂商语言。使其更难使用。John Ousterhout发明了TCL(Tool Control Language),使得跟C的集成更容易,并发布到公共领域。TCL现在被用在一些公共领域的测试工具上。
Ousterhout区分了系统编程语言(像Pascal、C、C++、Java等)和脚本语言(像Perl、Python、Rexx、TCL、VB、Unix shells等)。系统编程语言在从头开始构建方面和性能方面会更好点。而脚本语言在重用代码和快速开发方面有优势,是理想的自动化测试语言。
有些测试工具的厂商语言是在Ousterhout的TCL出现之前,当时Perl也还不成熟。但是那是那时候,现在则有了很多选择。
让厂商脚本语言退休
因为有了很多的选择,所以厂商脚本语言应该退休了。如果出现异常,没有什么第三方的书可以使用,只能参考和依赖厂商提供的书或帮助文档,这些文档未必会坦白告诉你厂商脚本语言的缺点。语言的课程也很难随工具附上,很昂贵,可能还要你亲自去学习。
测试自动化会很难,如果我们需要熟悉不同工具的不同语言的话。开发人员不会忍受有这么多限制和缺点的编程语言,我们也不应该忍受。
进一步学习请参考:
John K. Ousterhout, IEEE Computer, March 1998. Christopher Meisenzahl and Ferry Firmansjah, STQE magazine, Nov 2000.

我要回帖

更多关于 索尼z5免解锁获取root 的文章

 

随机推荐