C/S(client/server)主要是桌面应用程序
B/S(browser/server) 主要是web应用程序
P2P(peer-to-peer network)称为对等连接,是一种新的通信模式,每个参与者具有同等的能力,可以发起一个通信会话。任何终端都可以作为服务器。
(商业模式 B2B: Business to business B2C:Business to customer)
软件实例
c/s是指客户端与服务器交互,比如说QQ,豌豆荚,迅雷,快播,大型网游等(需要不同版本的客户端软件适应不同系统)
b/s是指浏览器与服务器交互,典型的有webQQ,微博,购物网站,论坛,网页游戏等
p2P是客户端和客户端交互,即时通信软件,如ICQ、Anychat等(不熟...)
ΔC/S 架构的优缺点
优点:
1.C/S架构的界面和操作可以很丰富。
2.安全性能可以很容易保证,实现多层认证也不难。
3.由于只有一层交互,因此响应速度较快。
缺点:
1.适用面窄,通常用于局域网中。
2.用户群固定。由于程序需要安装才可使用,因此不适合面向一些不可知的用户。
3.维护成本高,发生一次升级,则所有客户端的程序都需要改变。
ΔB/S架构的优缺点
优点:
1)客户端无需安装,有Web浏览器即可。
2)BS架构可以直接放在广域网上,通过一定的权限控制实现多客户访问的目的,交互性较强。
3)BS架构无需升级多个客户端,升级服务器即可。
缺点:
1)在跨浏览器上,BS架构不尽如人意。
2)表现要达到CS程序的程度需要花费不少精力。
3)在速度和安全性上需要花费巨大的设计成本,这是BS架构的最大问题。
4)客户端服务器端的交互是请求-响应模式,通常需要刷新页面,这并不是客户乐意看到的。(在Ajax风行后此问题得到了一定程度的缓解)
2 系统架构构成
1)WAMP
windows下的Apache+Mysql+Perl/PHP/Python,一组常用来搭建动态网站或者服务器的开源软件,本身都是各自独立的程序,但是因为常被放在一起使用,拥有了越来越高的兼容度,共同组成了一个强大的Web应用程序平台。(目前有不少AMP(Apache\MySQL\PHP)的集成软件,可以让我们一次安装并设置好)
主要的WAMP集成环境主要有:WampServe、XAMPP、Appserv
Apache是一个开放源码的web服务器软件
Mysql是一个多线程、多用户的SQL数据库管理系统
PHP/Perl/Python是一种编程语言,主要用于开发服务器端的应用程序软件
使用逻辑:在Windows环境下,由Apache HTTP服务器提供内容,在MySQL数据库中存储内容,PHP来实现程序逻辑。
2)LAMP
Linux下的Apache+Mysql+Perl/PHP/Python一组常用来搭建动态网站或者服务器的开源软件,也是典型的web应用程序平台(与J2EE和.Net商业软件形成三足鼎立之势)
Linux是一类Unix计算机操作系统的统称,是目前最流行的免费操作系统。代表版本有:debian、centos、ubuntu、fedora、gentoo等。
经典LAMP网站架构:
System
|
Server
|
Storage
|
Script
|
|
Yahoo
|
FreeBSD + Linux
|
Apache
|
MySQL
|
PHP
|
Facebook
|
FreeBSD
|
Apache
|
MySQL + Memcached
|
PHP
|
Wikimedia
|
Linux
|
Apache + Lighttpd
|
MySQL + Memcached
|
PHP
|
Flickr
|
Redhat Linux
|
Apache
|
MySQL + Memcached
|
PHP+ Perl
|
Sina
|
FreeBSD + Solaris
|
Apache + Nginx
|
MySQL + Memcached
|
PHP
|
YouTube
|
Suse Linux
|
Apache + Lighttpd
|
MySQL
|
Python
|
LAMP一键安装包-CentOS 5/6下自动编译安装Apache,MySQL,PHP
3)LNMP
LNMP代表的就是:Linux系统下Nginx+MySQL+PHP这种网站服务器架构。
Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。
4)LNMPA
Linux系统下Nginx + Mysql + PHP + Apache的网站服务器架构
Nginx作为前端服务器,能够更快、更及时地使用更少的系统资源处理静态页面、js、图片等文件,当客户端请求访问动态页面时,单独使用Nginx处理大量动态页面时容易产生频繁的502错误,LNMPA 可以让 Nginx反向代理给作为后端服务器的Apache处理,Apache处理完再交予Nginx返回给客户端。
3 主流服务器Apache和Nginx的搭建和配置
4 主流Web前段技术
1)HTML
标记语言,用来为浏览器显示网页内容。
2)CSS
用来设定网页的样式。
3)XML
extensible markup language 可扩展标记语言,具有结构性的标记语言;用来标记数据、定义数据类型,重点是存储数据。
和HTML对比:XML 被设计为传输和存储数据,其焦点是数据的内容。而HTML 被设计用来显示数据,其焦点是数据的外观。HTML 旨在显示信息,而 XML 旨在传输信息。
语法区别:HTML的标记不是所有的都需要成对出现,XML则要求所有的标记必须成对出现;HTML标记不区分大小写,XML则 大小敏感,即区分大小写。
4)Flex
让程序员可以开发flash应用程序。
把运行中的MXML(Flex标记语言)和ActionScript编译成FLASH应用程序(即二进制的SWF文件),让程序员更快更简单地开发RIA应用。( MXML标签与ActionScript类或者类中的属性是相对应的。当你编译你的Flex应用程序的时候,Flex解析你的MXML标签并且生成相应的 ActionScript类。然后这些ActionScript类会被编译成SWF字节码存储到一个SWF文件中。)
Flash适合设计者,更关注特性;而Flex适合程序开发者,更关注交互功能
优势:程序员开发Flash应用程序;解决异步调试、浏览器兼容等难题;对流媒体的支持;平台的可用性(Flash Player);跨平台(Windows,Linux,手机都可使用Flash Player)
5)Siverlight
一个跨浏览器、跨平台的插件。
对于用户,是个提供丰富体验的浏览器插件;对于开发设计者,是种web呈现技术,用于开发siverlight类型的web应用程序。
6)Javascript
是一种基于对象和事件驱动并具有相对安全性的客户端脚本语言。同时也是一种广泛用于客户端Web开发的脚本语言,常用来给HTML网页添加动态功能,比如响应用户的各种操作。
(一种分担服务端压力或解决服务器段语言遗留问题、运行在客户端浏览器上的脚本语言)
各种Javascript库,包括jQuery:javascript库中的新成员,提供css和xpath选择符查找元素、ajax、动画效果等
网页嵌入技术有:Javascript、VBScript、Document Object Model(DOM,文档对象模型)、Layers和Cascading Style Sheets(CSS,层叠样式表)
7)Ajax
Asynchronous JavaScript and XML(异步JavaScript和XML),一种交互网页开发技术。可以使用JavaScript向服务器提出请求并处理响应,而不阻塞用户(不重载页面)。
不是一种新的编程语言,而是一种用于创建更好更快以及交互性更强的 Web 应用程序的技术。在AJAX中,JavaScript主要被用来传递用户界面上的数据到服务端并返回结果。XMLHttpRequest对象用来响应通过HTTP传递的数据,一旦数据返回到客户端就可以立刻使用DOM将数据放到网页上。
(实现局部更新而不用重新载入全部页面,反应更快;但有返回原始页面的需求(已解决)和 让用户感知更新的内容 的需求(解决))
使用Ajax前提是支持Javascript以及Javascript的兼容性。
开发框架:Jser
5 数据库技术
6 云计算、云测试、云计算开源框架Hadoop
7 网路协议分析技术
Wireshark
HTTP协议(HTTPwates/Firebug)
8 Web测试
1)Web测试特点
与用户直接相关,通常需承受长时间的大量操作,因此web项目的功能和性能都必须经过可靠的验证。web项目的测试和其它类型的应用程序类似,不过重点在性能和安全方面的测试。
2)Web测试内容
界面测试、功能测试、性能测试、可用性测试、客户端兼容性、安全性
>界面测试要点
即网页测试,包括功能测试/可用性测试
>功能测试要点
链接测试/表单测试/设计语言测试(分布式开发环境中,不同开发人员使用的HTML版本和程序语言)/数据库测试
>性能测试要点
连接速度(保证在合适时间内响应用户请求)/负载测试/压力测试
连接方式:电话拨号上网、宽带上网、局域网、有线电视网、光纤网、电力网
负载测试:测量web系统在某一负载级别上的性能,保证其在需求范围内能正常工作,包括 某个时刻同时访问系统的用户数量和 在线数据处理的数量
压力测试的4个条件:重复Repetition、并发Concurrency、量级Magnitude、随机变化
>可用性测试要点
导航测试/图形测试/内容测试/整体界面测试
>客户端兼容性测试要点
平台测试(操作系统)/分辨率/浏览器(如窗口:最大、最小、还原;版本)
不同厂商浏览器对HTML、脚本语言(Java/Javascript)、插件(Active-X和其它Plug-ins)的不同支持:
ActiveX是微软为IE设计的;Javascript是Netscape的产品;Java是Sun的产品
框架和层次结构、安全性和Java的设置
>安全性测试要点
用户名和密码/大小写/次数限制/权限/超时限制/数据加密(安全套接字)/服务器端脚本语言/日志文件/目录
服务器脚本语言:有 脚本语言允许访问根目录 的特性,容易被黑客利用脚本语言的缺陷进行攻击—授权
日志文件:验证其是否正常工作,如所有事务处理是否都被记录
目录:url暴露服务器目录,造成风险和隐患—设置目录访问权限
>其他测试要点
Cookie测试(可归到功能测试)
提示信息/权限测试(对功能、数据、操作、权限变化)/键盘操作(Tab、Enter、方向键、系统设定的快捷键、常规快捷键如复制、粘贴、删除、恢复)
3)Web测试工具
通过脚本模拟并发用户(100?)来测试网站负载性能,还可以连接远程windows网站服务器的性能计数器(Performance counter)对服务器进行性能分析(比如CPU/内存 可以反映处理器是否为性能瓶颈)寻找瓶颈;WAS还会生成详细的报表。
>WinRunner(企业级自动化测试工具)
功能测试工具,通过自动录制、检测和回放用户的应用操作,检测应用程序是否能够达到预期的功能及正常运行。
>LoadRunner(工业标准级负载测试工具)
通过以模拟成千上万用户实施并发负载及实时性能检测的方式来确认和查找问题;能够对整个企业架构进行测试。
>TestDirector(全球测试管理系统)
通过在一个整体的应用系统中集成了测试管理的各个部分,包括需求管理,测试计划,测试执行以及错误跟踪等功能,加速测试流程。
>Rational Robot(功能测试工具)
可以通过脚本实现自动化测试。
使用教程 http://wenku.baidu.com/view/5bcc902ab4daa58da0114af0.html
http://www.ltesting.net/ceshi/ceshijishu/rjcsgj/rational/robot/
>xUnit系列(单元测试工具)
应用最多的是JUnit
>SilkTest(功能测试工具)
实现自动化测试。
使用教程 http://wenku.baidu.com/view/8d8bb7e9998fcc22bcd10da9.html
http://www.zengyuetian.com/?p=371
http://www.ltesting.net/ceshi/ceshijishu/rjcsgj/borland/silktest/
>Jtest(自动化白盒测试)
针对java语言的工具
>JMeter(功能和性能测试工具)
使用教程 http://wenku.baidu.com/view/ef4e383e580216fc700afdd1.html
http://www.ltesting.net/ceshi/open/kyxncsgj/jmeter/
http://www.cnblogs.com/zhangchaoyang/articles/2530731.html
>WebLoad
使用教程 http://wenku.baidu.com/view/595a096925c52cc58bd6be2d.html
http://www.51testing.com/html/57/1199.html
>QTester(国产Web测试工具)
主要针对网络应用程序进行自动化测试。可以模拟出几乎所有针对浏览器的动作。
使用教程 http://wenku.baidu.com/view/7b9f1a6bb84ae45c3b358c88.html
>其他工具
Fiddler(HTTP调试代理)
http://kb.cnblogs.com/page/130367/
http://www.aliued.cn/2010/04/25/use-fiddler-to-improve-efficiency-of-front-development-example.html
Appscan/DynaTrace
http://www.51ceshi.cn/bvt/rational/appscan/9960.html
更多web测试内容 http://www.ltesting.net/ceshi/ceshijishu/webcs/
web性能测试术语 http://www.spasvo.com/baike/460.html
————————————————后续任务——————————————————
1 一种框架的搭建和配置
2 一种web测试工具的使用
3 回顾