什么是软件测试
使用人工或自动手段来运行或测试某个系统,并发现问题,解决问题的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。
关于软件测试
1.测试是为了发现系统中的错误而执行程序的过程;
2.好的测试方案在于尽可能发现迄今为止尚未发现的错误;
3.成功的测试是是发现了至今为止尚未发现的错误的测试;
4.测试并不仅仅是为了找出错误,通过分析错误产生的原因和错误的发生趋势,可以帮助项目管理者发现当前软件开发过程中的缺陷,以便及时改进;
5.这种分析也能帮助测试人员设计出有针对性的测试方法,改善测试的效率和有效性;
6.没有发现错误的测试也是有价值的,完整的测试是评定软件质量的一种方法。
软件测试原则
1.所有的软件测试都应追溯到用户需求;
2.应当把“尽早地和不断地进行软件测试”作为软件测试人的座右铭;
3.完全的测试是不可能的,测试需要终止;
4.测试无法显示系统所有潜在的缺陷;
5.最理想的状态是测试驱动开发。
软件测试对象
程序、数据、文档、过程、硬件、网络。
软件测试不等于程序测试、软件测试贯穿于软件定义和开发的整个期间。需求分析、概要设计、详细设计,以及程序的编码等各个阶段所得到的文档,包括需求规格说明书、概要设计规格说明书、详细设计规格说明书以及源程序,这些都是软件测试的对象。
测试关键词
单元测试、集成测试、系统测试、验收测试;
白盒测试、黑盒测试、灰盒测试。
单元测试:粒度最小,一般由开发小组采用白盒方式来测试,主要测试单元是否符合“设计”。
集成测试:介于单元测试和系统测试之间。起到桥梁作用,一般由测试小组采用灰盒的方式来测试,既要验证“设计”又要验证“需求”。
系统测试:粒度最大,一般由独立测试小组采用黑盒方式来测试,主要测试系统是否符合需求规格说明书。
验收测试:与系统测试非常相似,主要区别是测试人员不同,验收测试由用户执行。
集成方法
1.自顶向下(分为深度优先和广度优先)
2.自底向上(需求不明确时考虑采用,当今较少应用)
深度优先:便于在早期发现级别严重的bug,便于保障软件质量。
广度优先:便于控制项目进度时间。
驱动模块:被测模块上层为驱动模块。
存根模块:被测模块下层为存根模块。
关于架构
Client/Server(浏览器/服务器)简称C/S架构
定义:通过将任务合理分配到Client端和Server端,降低了系统的通讯开销,需要安装客户端才可进行管理操作。用户的程序主要在客户端,服务器端主要提供数据管理、数据共享、数据及系统维护和并发控制等,客户端程序主要完成用户的具体业务。
特点:响应速度快,操作界面美观安全性强但开发、维护成本较高。
Browser/Server(浏览器/服务器)简称B/S架构
定义:是随着Internet技术的兴起,对C/S架构的一种改进,在这种架构下,软件应用的业务逻辑完全在应用服务器端实现,用户操作完全在web服务器中实现,客户端只需要浏览器即可进行业务处理。更成为当今应用软件的首选体系结构。
特点:B/S架构软件一般只有初期一次性投入成本,对于集团来说,有利于软件项目控制和避免IT黑洞。而C/S架构软件随着应用范围的扩大,投资会连绵不绝。
要求 | B/S | C/S |
---|---|---|
安全性 | 不可知用户/客户端 不可控(弱) | 固定用户/客户端 可控(强) |
服务器功能 | 更强 | 稍弱 |
客户端 | 浏览器 | 专用客户端 |
可维护性 | 强,客户端基本不需要维护 | 弱,客户端升级工作量大,可能多版本并存 |
硬件要求 | 网络要求较高 | 用户机配置要求较高 |