日历
| |||||||||
| 日 | 一 | 二 | 三 | 四 | 五 | 六 | |||
| 1 | 2 | 3 | |||||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 | |||
| 11 | 12 | 13 | 14 | 15 | 16 | 17 | |||
| 18 | 19 | 20 | 21 | 22 | 23 | 24 | |||
| 25 | 26 | 27 | 28 | 29 | 30 | 31 | |||
存档
搜索标题
最新来客
最新评论
我的收藏
统计信息
- 访问量: 3993
- 日志数: 88
- 建立时间: 2007-01-05
- 更新时间: 2008-03-19
我的最新日志
-
LDAP
2008-3-19
LDAP是轻量目录访问协议,英文全称是Lightweight Directory Access Protocol,一般都简称为LDAP。它是基于X.500标准的,但是简单多了并且可以根据需要定制。与X.500不同,LDAP支持TCP/IP,这对访问Internet是必须的。LDAP的核心规范在RFC中都有定义,所有与LDAP相关的RFC都可以在LDAPman RFC网页中找到。
简单说来,LDAP是一个得到关于人或者资源的集中、静态数据的快速方式。
LDAP是一个用来发布目录信息到许多不同资源的协议。通常它都作为一个集中的地址本使用,不过根据组织者的需要,它可以做得更加强大。
LDAP其实是一电话簿,类似于我们所使用诸如NIS(Network Information Service)、DNS (Domain Name Service)等网络目录,也类似于你在花园中所看到的树木。
不少LDAP开发人员喜欢把LDAP与关系数据库相比,认为是另一种的存贮方式,然后在读性能上进行比较。实际上,这种对比的基础是错误的。LDAP和关系数据库是两种不同层次的概念,后者是存贮方式(同一层次如网格数据库,对象数据库),前者是存贮模式和访问协议。LDAP是一个比关系数据库抽象层次更高的存贮概念,与关系数据库的查询语言SQL属同一级别。LDAP最基本的形式是一个连接数据库的标准方式。该数据库为读查询作了优化。因此它可以很快地得到查询结果,不过在其它方面,例如更新,就慢得多。
从另一个意义上 LDAP是实现了指定的数据结构的存贮,它是一种特殊的数据库。但是LDAP和一般的数据库不同,明白这一点是很重要的。 LDAP对查询进行了优化,与写性能相比LDAP的读性能要优秀很多。
就象Sybase、Oracle、Informix或Microsoft的数据库管理系统(DBMS)是用于处理查询和更新关系型数据库那样,LDAP服务器也是用来处理查询和更新LDAP目录的。换句话来说LDAP目录也是一种类型的数据库,但不是关系型数据库。要特别注意的是,LDAP通常作为一个 hierarchal数据库使用,而不是一个关系数据库。因此,它的结构用树来表示比用表格好。正因为这样,就不能用SQL语句了。 -
网闸常识
2008-3-19
网闸的工作原理是什么?
解答:
网闸的基本原理是:切断网络之间的通用协议连接;将数据包进行分解或重组为静态数据;对静态数据进行安全审查,包括网络协议检查和代码扫描等;确认后的安全数据流入内部单元;内部用户通过严格的身份认证机制获取所需数据。问题:
什么是网闸?
解答:
网闸是在两个不同安全域之间,通过协议转换的手段,以信息摆渡的方式实现数据交换,且只有被系统明确要求传输的信息才可以通过。其信息流一般为通用应用服务。注:网闸的“闸”字取自于船闸的意思,在信息摆渡的过程中内外网(上下游)从未发生物理连接,所以网闸产品必须要有至少两套主机和一个物理隔离部件才可完成物理隔离任务。现在市场上出现的的单主机网闸或单主机中有两个及多个处理引擎的过滤产品不是真正的网闸产品,不符合物理隔离标准。其只是一个包过滤的安全产品,类似防火墙。注:单主机网闸多以单向网闸来掩人耳目。问题:
隔离网闸是什么设备?
解答:
隔离网闸是一种由专用硬件在电路上切断网络之间的链路层连接,能够在物理隔离的网络之间进行适度的安全数据交换的网络安全设备。
问题:
隔离网闸是硬件设备还是软件设备?
解答:
隔离网闸是由软件和硬件组成的设备。
问题:
隔离网闸硬件设备是由几部分组成?
解答:
隔离网闸的硬件设备由三部分组成:外部处理单元、内部处理单元、隔离硬件。
问题:
单向传输用单主机网闸可以吗?
解答:
隔离网闸的组成必须是由物理的三部分组成,所以单主机(包括多处理器)的安全产品并不是网闸产品,无法完成物理隔离任务。其所谓的单向传输只是基于数据包的过滤,类似防火墙产品,并不是物理隔离产品。问题:
为什么要使用隔离网闸?
解答:
当用户的网络需要保证高强度的安全,同时又与其它不信任网络进行信息交换的情况下,如果采用物理隔离卡,信息交换的需求将无法满足;如果采用防火墙,则无法防止内部信息泄漏和外部病毒、黑客程序的渗入,安全性无法保证。在这种情况下,隔离网闸能够同时满足这两个要求,又避免了物理隔离卡和防火墙的不足之处,是物理隔离网络之间数据交换的最佳选择。
问题:
政府机关上网计算机为什么必须内外网物理隔离?
解答:
在政府建立内部网的工程中,安全保密问题一直是工程建设的重点内容,这是因为内部网中的信息常常是涉密或内部信息。为此,国家明确规定涉及国家秘密的计算机信息系统,不得直接或间接地与国际互联网或其它公共信息网络相联接,必须实行物理隔离,以确保国家秘密的安全。
问题:
为什么说隔离网闸能够防止未知和已知木马攻击?
解答:
通常见到的木马大部分是基于TCP的,木马的客户端和服务器端需要建立连接,而隔离网闸从原理实现上就切断所有的TCP连接,包括UDP、ICMP等其他各种协议,使各种木马无法通过隔离网闸进行通讯。从而可以防止未知和已知的木马攻击。
问题:
隔离网闸与防火墙有何不同?
解答:
主要有以下几点不同:
A、隔离网闸采用双主机系统,内端机与需要保护的内部网络连接,外端机与外网连接。这种双系统模式彻底将内网保护起来,即使外网被黑客攻击,甚至瘫痪,也无法对内网造成伤害。防火墙是单主机系统。
B、隔离网闸采用自身定义的私有通讯协议,避免了通用协议存在的漏洞。防火墙采用通用通讯协议即TCP/IP协议。
C、隔离网闸采用专用硬件控制技术保证内外网之间没有实时连接。而防火墙必须保证实时连接。
D、隔离网闸对外网的任何响应都保证是内网合法用户发出的请求应答,即被动响应,而防火墙则不会对外网响应进行判断,也即主动响应。这样,网闸就避免了木马和黑客的攻击。
问题:
隔离网闸能取代防火墙吗?
解答:
无论从功能还是实现原理上讲,隔离网闸和防火墙是完全不同的两个产品,防火墙是保证网络层安全的边界安全工具(如通常的非军事化区),而隔离网闸重点是保护内部网络的安全。因此两种产品由于定位的不同,因此不能相互取代。
问题:
隔离网闸通常布置在什么位置?
解答:
隔离网闸通常布置在两个安全级别不同的两个网络之间,如信任网络和非信任网络,管理员可以从信任网络一方对安全隔离网闸进行管理。
问题:
隔离网闸是否可以在网络内部使用?
解答:
可以,网络内部安全级别不同的两个网络之间也可以安装隔离网闸进行隔离。
问题:
如果对应网络七层协议,隔离网闸是在哪一层断开?
解答:
如果针对网络七层协议,隔离网闸是在硬件链路层上断开。
问题:
有了防火墙和IDS,还需要隔离网闸吗?
解答:
防火墙是网络层边界检查工具,可以设置规则对内部网络进行安全防护,而IDS一般是对已知攻击行为进行检测,这两种产品的结合可以很好的保护用户的网络,但是从安全原理上来讲,无法对内部网络做更深入的安全防护。隔离网闸重点是保护内部网络,如果用户对内部网络的安全非常在意,那么防火墙和IDS再加上隔离网闸将会形成一个很好的防御体系。
问题:
隔离网闸适用于什么样的场合?
解答:
第1种场合:涉密网与非涉密网之间。
第2种场合:局域网与互联网之间。有些局域网络,特别是政府办公网络,涉及敏感信息,有时需要与互联网在物理上断开,用物理隔离网闸是一个常用的办法。
第3种场合:办公网与业务网之间
由于办公网络与业务网络的信息敏感程度不同,例如,银行的办公网络和银行业务网络就是很典型的信息敏感程度不同的两类网络。为了提高工作效率,办公网络有时需要与业务网络交换信息。为解决业务网络的安全,比较好的办法就是在办公网与业务网之间使用物理隔离网闸,实现两类网络的物理隔离。
第4种场合:电子政务的内网与专网之间
在电子政务系统建设中,要求政府内网与外网之间用逻辑隔离,在政府专网与内网之间用物理隔离。现常用的方法是用物理隔离网闸来实现。
第5种场合:业务网与互联网之间
电子商务网络一边连接着业务网络服务器,一边通过互联网连接着广大民众。为了保障业务网络服务器的安全,在业务网络与互联网之间应实现物理隔离。 -
grep、fgrep 和 egrep 命令
2008-3-19
c:\>grep "^..........02" e0700031.txt >20.txt
这组命令以指定模式搜索文件,并通知用户在什么文件中搜索到与指定的模式匹配的字符串,并打印出所有包含该字符串的文本行,在该文本行的最前面是该行所在的文件名。 grep 命令一次只能搜索一个指定的模式;egrep 命令检索扩展的正则表达式(包括表达式组和可选项);fgrep 命令检索固定字符串,它不识别正则表达式,是快速搜索命令。
这组命令在搜索与定位文件中特定的主题方面非常有用。要搜索的模式可以被认为是一些关键词,您可以用它们来搜索文件中包含的这些关键词。编写程序时,可以用它来寻找某一个函数,或是相关的词组。grep 命令的搜索功能比 fgrep 强大,因为 grep 命令的搜索模式可以是正则表达式,而 fgrep 却不能。
该组命令中的每一个命令都有一组选项,利用这些选项可以改变其输出方式。例如,可以在搜索到的文本行上加入行号,或者只输出文本行的行号,或者输出所有与搜索模式不匹配的文本行,或只简单地输出已搜索到指定模式的文件名,并且可以指定在查找模式时忽略大小写。
这组命令在指定的输入文件中查找与模式匹配的行。如果没有指定文件,则从标准输入中读取。正常情况下,每个匹配的行被显示到标准输出。如果要查找的文件是多个,则在每一行输出之前加上文件名。
语法: grep [选项] [查找模式] [文件名1,文件名2,……] egrep [选项] [查找模式] [文件名1,文件名2,……] fgrep [选项] [查找模式] [文件名1,文件名2,……]
该命令的各选项含义如下:
-E 每个模式作为一个扩展的正则表达式对待。 -F 每个模式作为一组固定字符串对待(以新行分隔),而不作为正则表达式。 -b 在输出的每一行前显示包含匹配字符串的行在文件中的字节偏移量。 -c 只显示匹配行的数量。 -i 比较时不区分大小写。 -h 在查找多个文件时,指示grep不要将文件名加入到输出之前。 -l 显示首次匹配串所在的文件名并用换行符将其隔开。 当在某文件中多次出现匹配串时,不重复显示此文件名。 -n 在输出前加上匹配串所在行的行号(文件首行行号为1)。 -v 只显示不包含匹配串的行。 -x 只显示整行严格匹配的行。 -e expression 指定检索使用的模式。用于防止以“-”开头的模式被解释为命令选项。 -f expfile 从expfile文件中获取要搜索的模式,一个模式占一行。
-
dos命令 通过IP查看机器名
2008-3-19
如果对方与你在同一个网段内的话,通过下面方法可以得到对方的name:
ping -a ip; nbtstat -A ip;
如果不在一个网段内的话,应该无法通过命令直接得到对方的名字的.一,ping
它是用来检查网络是否通畅或者网络连接速度的命令。作为一个生活在网络上的管理员或者黑客来说,ping命令是第一个必须掌握的DOS命令,它所利用的原理是这样的:网络上的机器都有唯一确定的IP地址,我们给目标IP地址发送一个数据包,对方就要返回一个同样大小的数据包,根据返回的数据包我们可以确定目标主机的存在,可以初步判断目标主机的操作系统等。下面就来看看它的一些常用的操作。先看看帮助吧,在DOS窗口中键入:ping/?回车,出现如图1所示的帮助画面。在此,我们只掌握一些基本的很有用的参数就可以了。
-t表示将不间断向目标IP发送数据包,直到我们强迫其停止。试想,如果你使用100M的宽带接入,而目标IP是56K的小猫,那么要不了多久,目标IP就因为承受不了这么多的数据而掉线,呵呵,一次攻击就这么简单的实现了。
-l定义发送数据包的大小,默认为32字节,我们利用它可以最大定义到65500字节。结合上面介绍的-t参数一起使用,会有更好的效果哦。
-n定义向目标IP发送数据包的次数,默认为3次。如果网络速度比较慢,3次对我们来说也浪费了不少时间,因为现在我们的目的仅仅是判断目标IP是否存在,那么就定义为一次吧。
说明一下,如果-t参数和-n参数一起使用,ping命令就以放在后面的参数为标准,比如“pingIP-t-n3”,虽然使用了-t参数,但并不是一直ping下去,而是只ping3次。另外,ping命令不一定非得pingIP,也可以直接ping主机域名,这样就可以得到主机的IP。
下面我们举个例子来说明一下具体用法
这里time<10ms表示从发出数据包到接受到返回数据包所用的时间小于10ms,从这里可以判断网络连接速度的大小。从TTL的返回值可以初步判断被ping主机的操作系统,之所以说“初步判断”是因为这个值是可以修改的。这里TTL=128表示操作系统可能是Win2000。
(小知识:如果TTL=32,则表示目标主机可能是win98;如果TTL=250,则目标主机可能是Unix)
至于利用ping命令可以快速查找局域网故障,可以快速搜索最快的QQ服务器,可以对别人进行ping攻击……这些就靠大家自己发挥了。
二,nbtstat
该命令使用TCP/IP上的NetBIOS显示协议统计当前TCP/IP连接,使用这个命令你可以得到远程主机的NETBIOS信息,比如用户名、所属的工作组、网卡的MAC地址等。在此我们就有必要了解几个基本的参数。
-A这个参数可以得到远程主机的NETBIOS信息,但需要你知道它的IP。
-a使用这个参数,只要你知道了远程主机的机器名称,就可以得到它的NETBIOS信息。
-n列出本地机器的NETBIOS信息。
当得到了对方的IP或者机器名的时候,就可以使用nbtstat命令来进一步得到对方的信息了,这又增加了我们入侵的保险系数。
三,netstat
这是一个用来查看网络状态的命令,操作简便功能强大。
-a查看本地机器的所有开放端口,可以有效发现和预防木马,可以知道机器所开的服务等信息。
-r列出当前的路由信息,告诉我们本地机器的网关、子网掩码等信息。用法:netstat-rIP。
四,tracert
跟踪路由信息,使用此命令可以查出数据从本地机器传输到目标主机所经过的所有途径,这对我们了解网络布局和结构很有帮助。
这里说明数据从本地机器传输到192.168.0.1的机器上,中间没有经过任何中转,说明这两台机器是在同一段局域网内。用法:tracertIP。
五,net
这个命令是网络命令中最重要的一个,必须透彻掌握它的每一个子命令的用法,因为它的功能实在是太强大了,这简直就是微软为我们提供的最好的入侵工具。首先让我们来看一看它都有那些子命令,键入net/?,回车。
在这里,我们重点掌握几个入侵常用的子命令。
netview
使用此命令查看远程主机的所有共享资源。命令格式为netview\\IP。
netuse
把远程主机的某个共享资源影射为本地盘符,图形界面方便使用,呵呵。命令格式为netusex:\\IP\sharename。下面表示和192.168.0.7建立IPC$连接(netuse\\IP\IPC$"password"/user:"name")。
建立了IPC$连接后,呵呵,就可以上传文件了:copync.exe\\192.168.0.7\admin$,表示把本地目录下的nc.exe传到远程主机,结合后面要介绍到的其他DOS命令就可以实现入侵了。
netstart
使用它来启动远程主机上的服务。当你和远程主机建立连接后,如果发现它的什么服务没有启动,而你又想利用此服务怎么办?就使用这个命令来启动吧。用法:netstartservername,如用netstarttelnet命令启动telnet服务。
netstop
入侵后发现远程主机的某个服务碍手碍脚,怎么办?利用这个命令停掉就ok了,用法和netstart同。
netuser
查看和帐户有关的情况,包括新建帐户、删除帐户、查看特定帐户、激活帐户、帐户禁用等。这对我们入侵是很有利的,最重要的,它为我们克隆帐户提供了前提。键入不带参数的netuser,可以查看所有用户,包括已经禁用的。下面分别讲解。
1,netuserabcd1234/add,新建一个用户名为abcd,密码为1234的帐户,默认为user组成员。
2,netuserabcd/del,将用户名为abcd的用户删除。
3,netuserabcd/active:no,将用户名为abcd的用户禁用。
4,netuserabcd/active:yes,激活用户名为abcd的用户。
5,netuserabcd,查看用户名为abcd的用户的情况。
netlocalgroup
查看所有和用户组有关的信息和进行相关操作。键入不带参数的netlocalgroup即列出当前所有的用户组。在入侵过程中,我们一般利用它来把某个帐户提升为administrator组帐户,这样我们利用这个帐户就可以控制整个远程主机了。用法:netlocalgroupgroupnameusername/add。
现在我们把刚才新建的用户abcd加到administrator组里去了,这时候abcd用户已经是超级管理员了,呵呵,你可以再使用netuserabcd来查看他的状态,就可以看出来。但这样太明显了,网管一看用户情况就能漏出破绽,所以这种方法只能对付菜鸟网管,但我们还得知道。现在的手段都是利用其他工具和手段克隆一个让网管看不出来的超级管理员,这是后话。
nettime
这个命令可以查看远程主机当前的时间。如果你的目标只是进入到远程主机里面,那么也许就用不到这个命令了。但简单的入侵成功了,难道只是看看吗?我们需要进一步渗透。这就连远程主机当前的时间都需要知道,因为利用时间和其他手 -
监控Tomcat服务器
2008-3-11
Tomcat 5在缺省安装时是不允许用户直接访问 http://yourhost:port/manager/status 的,访问的时候会给出一个403(forbidden)的错误信息。在Tomcat的Manual里说明了允许用户访问的方法:
- 转到Tomcat的安装目录下;
- 修改conf/tomcat-users.xml文件,在其中加入一行
-
数据库缓冲池
2008-3-08
一个数据库缓冲池指的是缓存于内存空间中的数据库物理连接,这些数据库连接可以被重复使用。数据库缓冲池对于提高Java 数据库应用程序的性能十分重要,尤其是当这个Java 数据库应用程序运行于中间层服务器环境时。
数据缓冲池存在于中间层服务器环境当中,可以被不同的Java 应用程序所调用。javax.sql.RowSet 包添加了对缓冲数据源的支持,即可以将缓冲池缓冲的数据库连接看作是一个是实实在在的数据源服务来使用。RowSet 包提供了好几个接口用于处理数据库缓冲池,主要的接口有:
1、DataSource 接口:DataSource 接口的实例对象代表了存在于中间层服务器中的缓冲数据源服务。使用它可以返还数据库缓冲池中现存的数据库连接,DataSource 接口的实例对象实际上是某个JNDI 服务的提供者,在使用它之前,该JNDI 服务对象必须先在中间层服务器环境中注册,并且和某个服务名绑定在一起,然后它才能被别的Java 应用程序调用。
2、ConnectionPoolDataSource 接口:该接口可以用于创建一个被缓冲于缓冲池的数据库物理连接,它有可能会被DataSource 接口的实例对象调用。
3、PooledConnection 接口:该接口代表被缓冲的数据库连接,它定义了一个getConnection()方法使用这个方法可以返回java.sql.Connection 接口的实例对象。
如何使用RowSet 包定义的类和接口操作数据库缓冲池,下面的JSP 代码段提供了一个简单的不完整的例子
例
<%
Context ctx = new InitialContext();
DataSource ds = (DataSource)ctx.lookup(“jdbc/EmployeeDB”);
// First get a Connection. Connection pooling is done
// internally by the DataSource object.
Connection con = ds.getConnection(jdbc/webDatabase” "sa” “");
// Do all the work as a single transaction (optional).
con.setAutoCommit(false);
// The actual work (queries and updates) would go here.
// Work is done using standard JDBC code as defined in the
// rest of the JDBC API.
// Commit the transaction.
con.commit();
// Close the connection. This returns the underlying physical
// database connection to the pool.
con.close();
%>
上面的JSP 代码段的运行机理如下
???? 1、首先程序代码获取初始化的JNDI 环境并且调用Context.lookup()方法从JNDI服务提供者那里获一个DataSource 对象
???? 2、中间层JNDI 服务提供者返回一个DataSource 对象给当前的Java 应用程序这个DataSource 对象代表了中间层服务上现存的缓冲数据源
????3、 应用程序调用DataSource 对象的getConnection()方法
???? 4、当DataSource 对象的getConnection()方法被调用时中间层服务器将查询数据库连接缓冲池中有没有PooledConnection 接口的实例对象这个PooledConnection对象将被用于与数据库建立物理上的数据库连接
???? 5、如果在缓冲池中命中了一个PooledCoonection 对象那么连接缓冲池将简单地更新内部的缓冲连接队列并将该PooledConnection 对象返回如果在缓冲池内没有找到现成的PooledConnection 对象那么ConnectionPoolDataSource 接口将会被用来产生一个新的PooledConnection 对象并将它返回以便应用程序使用
???? 6\中间层服务器调用PooledConnection 对象的getConnection()方法以便返还一个java.sql.Connection 对象给当前的Java 应用程序
???? 7、当中间层服务器调用PooledConnection 对象的getConnection()方法时JDBC 数据库驱动程序将会创建一个Connection 对象并且把它返回中间层服务器
???? 8、中间层服务器将Connection 对象返回给应用程序Java 应用程序可以认为这个Connection 对象是一个普通的JDBC Connection 对象使用它可以和数据库建立事实上的连接与数据库引擎产生交互操作
???? 9、当应用程序不需要使用Connection 对象时,可以调用Connection 接口的close()方法。请注意这种情况下close()方法并没有关闭事实上的数据库连接,仅仅是释放了被应用程序占用的数据库连接,并将它还给数据库连接缓冲池,数据库连接缓冲池会自动将这个数据库连接交给请求队列中下一个的应用程序使用。 -
Tuxedo
2008-3-06
Tuxedo是一个客户机/服务器的“中间件”产品,它在客户机和服务器之间进行调节,以保证正确地处理事务。Tuxedo是一个事务处理(TP)监督器,它管理联机事务处理(OLTP)系统(参见“事务处理”)操作的事务。客户通过结构化查询语言(SQL)调用,或其它类型的请求,产生对服务器的请求。这个事务处理监督器确信,正确地进行了修改,以保证数据的完整性。这在一个事务可以改变多个位置的数据库的分布式数据库环境是非常重要的。这个事务处理监督器使用双阶段提交,以保证所有的数据库都已经接收和认可了这些数据的正确性。否则,这个数据库返回它的事务前状态。
事务监督器从前都是与大的大型计算机系统联系在一起的,但是Tuxedo的设计是为了在不昂贵的基于UNIX的系统上运行。AT&T最初是作为它自己使用的联机事务处理开发Tuxedo的。虽然Tuxedo必须在U-NIX系统上运行,但是它可以与DOS、OS/2、Windows和UNIX客户一起工作。它还使用通用的通信协议,如传输控制协议/因特网协议(TCP/IP)和网络基本输入输出系统(NetBIOS),并且可以在这些环境提供分布式处理支持。例如,它可以根据请求的类型,服务请求从一个客户选择路由到一个特定的服务器。Tuxedo的基本特征是它的联机事务处理系统,但是,Tuxedo也工作于集成关系型的平面文件,以及层次数据库系统。 -
面向对象软件的测试策略
2008-2-26
面向对象分析:将问题空间中的实例抽象为对象,用对象的结构反映问题空间的复杂实例和复杂关系,用属性和服务表示实例的特性和行为。面向对象分析(OOA)的测试重点:其完整性和冗余性。
OOA测试:对认定的对象的测试。对认定结构的测试。对认定主题的测试。对定义的属性和实例关联的测试。对定义的服务和消息关联的测试。
-
逻辑驱动测试与数据驱动测试
2008-2-26
白盒测试(White-box Testing,又称逻辑驱动测试,结构测试)是把测试对象看作一个打开的盒子。利用白盒测试法进行动态测试时,需要测试软件产品的内部结构和处理过程,不需测试软件产品的功能。白盒测试又称为结构测试和逻辑驱动测试。
白盒测试法的覆盖标准有逻辑覆盖、循环覆盖和基本路径测试。其中逻辑覆盖包括语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。
六种覆盖标准:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖发现错误的能力呈由弱至强的变化。语句覆盖每条语句至少执行一次。判定覆盖每个判定的每个分支至少执行一次。条件覆盖每个判定的每个条件应取到各种可能的值。判定/条件覆盖同时满足判定覆盖条件覆盖。条件组合覆盖每个判定中各条件的每一种组合至少出现一次。路径覆盖使程序中每一条可能的路径至少执行一次。
白盒测试也称结构测试或逻辑驱动测试,它是知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确工作,而不顾它的功能,白盒测试的主要方法有逻辑驱动、基路测试等,主要用于软件验证。
"白盒"法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。"白盒"法是穷举路径测试。在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。贯穿程序的独立路径数是天文数字。但即使每条路径都测试了仍然可能有错误。第一,穷举路径测试决不能查出程序违反了设计规范,即程序本身是个错误的程序。第二,穷举路径测试不可能查出程序中因遗漏路径而出错。第三,穷举路径测试可能发现不了一些与数据相关的错误。
黑盒测试(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的情况,构成的测试用例数目达到最少,且测试用例数目随输入数据数目的增加而线性地增加.
前面因果图方法中已经用到了判定表.判定表(Decision Table)是分析和表达多逻辑条件下执行不同操作的情况下的工具.在程序设计发展的初期,判定表就已被当作编写程序的辅助工具了.由于它可以把复杂的逻辑关系和多种条件组合的情况表达得既具体又明确.
判定表通常由四个部分组成.
条件桩(Condition Stub):列出了问题得所有条件.通常认为列出得条件的次序无关紧要.
动作桩(Action Stub):列出了问题规定可能采取的操作.这些操作的排列顺序没有约束.
条件项(Condition Entry):列出针对它左列条件的取值.在所有可能情况下的真假值.
动作项(Action Entry):列出在条件项的各种取值情况下应该采取的动作.
规则:任何一个条件组合的特定取值及其相应要执行的操作.在判定表中贯穿条件项和动作项的一列就是一条规则.显然,判定表中列出多少组条件取值,也就有多少条规则,既条件项和动作项有多少列.
判定表的建立步骤:(根据软件规格说明)
①确定规则的个数.假如有n个条件.每个条件有两个取值(0,1),故有 种规则.
②列出所有的条件桩和动作桩.
③填入条件项.
④填入动作项.等到初始判定表.
⑤简化.合并相似规则(相同动作).
B. Beizer 指出了适合使用判定表设计测试用例的条件:
①规格说明以判定表形式给出,或很容易转换成判定表.
②条件的排列顺序不会也不影响执行哪些操作.
③规则的排列顺序不会也不影响执行哪些操作.
④每当某一规则的条件已经满足,并确定要执行的操作后,不必检验别的规则.
⑤如果某一规则得到满足要执行多个操作,这些操作的执行顺序无关紧要.
黑盒测试的优点
1. 基本上不用人管着,如果程序停止运行了一般就是被测试程序crash了
2. 设计完测试例之后,下来的工作就是爽了,当然更苦闷的是确定crash原因黑盒测试的缺点
1. 结果取决于测试例的设计,测试例的设计部分来势来源于经验,OUSPG的东西很值得借鉴
2. 没有状态转换的概念,目前一些成功的例子基本上都是针对PDU来做的,还做不到针对被测试程序的状态转换来作
3. 就没有状态概念的测试来说,寻找和确定造成程序crash的测试例是个麻烦事情,必须把周围可能的测试例单独确认一遍。而就有状态的测试来说,就更麻烦了,尤其不是一个单独的testcase造成的问题。这些在堆的问题中表现的更为突出。 -
CRM软件简介
2008-1-30
企业为什么需要CRM
企业在实现商业流程的自动化和优化的同时,意识到关注客户,就是关注企业的成长。但由于企业中的销售、营销和客户服务/支持部门都是作为独立的实体来工作的。部门界限的存在使这些不同的业务功能往往很难以协调一致的方式将注意力集中在客户身上。CRM则正是着眼于企业的这一需求应运而生的。在如今竞争激烈的商业环境中,越来越多的商家开始通过实施客户关系管理(CRM)来赢得更多的客户并且提高客户的忠诚度。传统的数据库营销是静态的,经营需要好几个月时间才能对一次市场营销战役的结果做出一个分析计表格,许多重要的商业机遇经常在此期间失去。CRM软件建立在多个营销战役交叉的基础上,能够对客户的活动及时做出反应,因而能够更好地抓住各种商业机遇。
客户关系管理是什么?
在目前充满竞争的市场上,如何抓住客户、留住客户,维持客户的忠诚度,保持市场竞争力,是今天所有厂商关心的问题。能赢得和留住客户的唯一方法就是更加关注客户的需求。
客户关系管理(CRM)源于以“客户为中心”的新型商业模式,是一种旨在改善企业与客户之间关系的新型管理机制。通过向企业的销售、市场和客户服务的专业人士提供全面、个性化的客户资料,并强化跟踪服务、信息分析的能力,使他们能够协同建立和维护一系列与客户和生意伙伴之间卓有成效的“一对一关系”,从而使企业得以提供更快捷和周到的优质服务、提高客户满意度、吸引和保持更多的客户,从而增加营业额;并通过信息共享和优化商业流程有效的降低企业经营成本。
采用富于创新的“一对一营销策略”可以帮助你发现并留住客户,随着时间的推移,它将成为您创造事业成功的真正伙伴。客户关系管理 (CRM) 这一突破性理念是通过重视每个员工在业务上开拓,培养和维持多变而又富于产出性的客户关系来提高客户忠诚度,使企业赢得竞争优势和长足利润。
使用客户关系管理(CRM)的好处
● 提高销售额。
利用CRM系统提供的多渠道的客户信息,确切了解客户的需求,增加销售的成功几率,进而提高销售收入。
● 增加利润率。
由于对客户的更多了解,业务人员能够有效地抓住客户的兴趣点,有效进行销售,避免盲目的以价格让利取得交易成功,从而提高销售利润。
● 提高客户满意程度。
CRM系统提供给客户多种形式的沟通渠道,同时又确保各类沟通方式中数据的一致性与连贯性,利用这些数据,销售部门可以对客户要求做出迅速而正确的反应,让用户在对购买产品满意的同时也认可并愿意保持与企业的有效沟通关系。
● 降低市场销售成本。
由于对客户进行了具体甄别和群组分类,并对其特性进行分析。使市场推广和销售策略的制定与执行避免了盲目性,节省时间和资金。
客户关系管理(CRM)系统的功能构成
CRM系统的核心是客户数据的管理。我们可以把客户数据库看作是一个数据中心,利用它,企业可以记录在整个市场与销售的过程中和客户发生的各种活动,跟踪各类活动的状态,建立各类数据的统计模型用于后期的分析和决策支持。为达到上述目的,一套CRM系统大都具备市场管理、销售管理、销售支持与服务和竞争对象记录与分析的功能。
1、 市场管理
● 现有客户数据的分析。
● 提供个性化的市场信息。
● 提供销售预测功能。
2、 销售管理
● 提供有效、快速而安全的交易方式。
● 提供订单与合同的管理。
3、销售支持与服务
● 呼叫中心服务(CallCenterService)。
● 订单与合同的处理状态及执行情况跟踪。
● 实时的发票处理。
● 提供产品的保修与维修处理。
● 记录产品的索赔及退货。
4、竞争者分析
●记录主要竞争对手。
●记录主要竞争产品。
不难看出,一套CRM集成系统的功能构成不应当是独立存在的,它必然与企业后端的供应链管理(SupplyChainManagement)紧密相关,从而保证CRM系统中每一张订单能够在保证利润的前提下有效及时地得到确认并确保执行。每一笔销售交易的达成都有赖于企业后台的支撑平台,即ERP系统(EnterpriseResourcePlanningSystem),其中包括分销与运输管理、生产与服务计划、信用与风险控制、成本与利润分析等功能。CRM的概念由美国Gartner 集团率先提出。我们认为,CRM是辨识、获取、保持和增加“可获利客户”的理论、实践和技术手段的总称。它既是一种国际领先的、以“客户价值”为中心的企业管理理论、商业策略和企业运作实践,也是一种以信息技术为手段、有效提高企业收益、客户满意度、雇员生产力的管理软件。
CRM(Customer Relationship Management),即客户关系管理。这个概念最初由Gartner Group提出来,而在最近开始在企业电子商务中流行。CRM的主要含义就是通过对客户详细资料的深入分析,来提高客户满意程度,从而提高企业的竞争力的一种手段,它主要包含以下几个主要方面(简称7P):
客户概况分析(Profiling)包括客户的层次、风险、爱好、习惯等;
客户忠诚度分析(Persistency)指客户对某个产品或商业机构的忠实程度、持久性、变动情况等;
客户利润分析(Profitability)指不同客户所消费的产品的边缘利润、总利润额、净利润等;
客户性能分析(Performance)指不同客户所消费的产品按种类、渠道、销售地点等指标划分的销售额;
客户未来分析(Prospecting)包括客户数量、类别等情况的未来发展趋势、争取客户的手段等;
客户产品分析(Product)包括产品设计、关联性、供应链等;
客户促销分析(Promotion)包括广告、宣传等促销活动的管理。
在不同场合下,CRM可能是一个管理学术语,可能是一个软件系统,而通常我们所指的CRM,是指用计算机对上述分析流程自动化的软件系统,其中涉及销售、市场营销、客户服务以及支持应用等软件。它的目标是缩减销售周期和销售成本、增加收入、寻找扩展业务所需的新的市场和渠道以及提高客户的价值、满意度、赢利性和忠实度。
在传统企业引入电子商务后,企业关注的重点由提高内部效率向尊重外部客户转移。而CRM理念正是基于对客户的尊重,要求企业完整地认识整个客户生命周期,提供与客户沟通的统一平台,提高员工与客户接触的效率和客户反馈率。一个成功的客户关系管理系统至少应包括如下功能:通过电话、传真、网络、移动通讯工具、电子邮件等多种渠道与客户保持沟通;使企业员工全面了解客户关系,根据客户需求进行交易,记录获得的客户信息,在企业内部做到客户信息共享;对市场计划进行整体规划和评估;对各种销售活动进行跟踪;通过大量积累的动态资料,对市场和销售进行全面分析。










