1 什么是软件测试
软件测试就是实际输出结果和预期结果的比较过程。
百度定义:
2 软件测试的发展历程
第一阶段:软件测试就是验证软件是正确的;
第二阶段:软件测试是去证明软件是错误的;
第三阶段:软件是保证软件的质量是符合用户需求的一系列手段。
由于计算机的迅速发展,软件开发急剧增长,软件系统的规模和复杂性都越来越大,导致软件的可靠性问题也越来越突出。
在这样的背景下,软件测试的基础理论和实用技术开始形成。
一开始软件测试是指示为了验证一个软件系统的功能是否实现,例如一个登陆界面,输入正确的用户名和密码就能成功登陆。后来软件测试被定义为:“测试是为发现错误而执行程序的过程”。这样考虑到错误的情况可以发现更多的软件问题。现在更常认为软件测试是一系列保证软件质量的手段,考虑到软件的方方面面,包括软件开发、软件工程、组织和流程。
3 软件测试的职业发展
软件测试的最基础的工作就是功能测试。
然后根据个人的兴趣和能力可以有以下发现路线:
4 软件测试的分类
4-1 方法
- 黑盒测试
黑盒测试又称为 数据驱动的测试 或 输入/输出驱动测试 。
特点:将程序视为一个黑盒子,测试目标和程序的内部机制和结构完全无关,只关心程序的实际输出是否和预计输出是否一致。 - 白盒测试
白盒测试又称为逻辑驱动测试。
特点:检查程序的内部结构是否正确,仿佛程序是透明的。 - 灰盒测试
灰盒测试就是介于白盒测试和黑盒测试之间的测试方法,或者说是两者的结合。
4-2 方向
-
功能测试
功能测试简单来说就是测试程序的功能。
百度定义:Functional testing(功能测试),也称为behavioral testing(行为测试),根据产品特性、操作描述和用户方案,测试一个产品的特性和可操作行为以确定它们满足设计需求。【https://baike.baidu.com/item/%E5%8A%9F%E8%83%BD%E6%B5%8B%E8%AF%95 】注意:功能测试≠黑盒测试
功能测试通常是采用黑盒测试,黑盒测试是执行功能测试的一种方法。就好比功能测试就是吃饭,用筷子吃饭是黑盒测试,用勺子吃饭是白盒测试,用叉子吃饭是灰盒测试,而通常用的最多的就是筷子吃饭。 -
性能测试
性能测试简单来说就是测试程序(服务器)的能力大小。
百度定义:性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试【https://baike.baidu.com/item/%E6%80%A7%E8%83%BD%E6%B5%8B%E8%AF%95 】性能测试又分为:
a. 压力测试
压力测试用来发现软件的性能瓶颈。
类比:一个人最多能举起的重量,如60kg。
b. 负载测试
负载测试是对软件能承受一定负载或强度的检验,涉及到时间因素。负载测试通常不采用压力测试的峰值,而是取峰值的80%~90%。
类比:一个人最多能举起60kg,负载测试就是看这个人举50kg能坚持的时间。
c. 并发测试
百度定义:主要指当测试多用户并发访问同一个应用、模块、数据时是否产生隐藏的并发问题,如内存泄漏、线程锁、资源争用问题,几乎所有的性能测试都会涉及并发测试。【https://baike.baidu.com/item/%E5%B9%B6%E5%8F%91%E6%B5%8B%E8%AF%95 】
例如:淘宝双十一活动、大学教务网选课、12306抢票
在百度百科中,压力测试、负载测试、强度测试混为一谈。这里压力测试强调是一个峰值(性能瓶颈),而负载测试则是强调“一段时间”。
- 安全测试
安全测试就是设计测试用例来突破成功程序安全检查的过程。其目的就是提升软件的安全质量,在发布前找到安全漏洞并予以修复,防止被不法入侵或其他因素干扰。
通俗来讲是防止黑客攻击,盗取信息。
4-3 阶段
-
单元测试
单元测试(unit testing)是指对软件中的最小可测试单元进行检查和验证。
例如:C语言中函数、Java中的类和方法等。
单元测试通常由开发人员自己完成ÿ