一、概述
软件测试的开始与软件开发生命周期的开始是同时的,即软件测试伴随着整个软件开发生命周期。在软件开发的生命周期中,我们可能用到各种软件测试的方法,而且现在软件测试的工具和方法非常多,现在回想起来可能已经十分混乱,所以我希望能从新整理一遍软件测试的方法:
二、软件测试方法
2.1 黑盒/白盒
刚学软件测试就学的是这个,把软件测试分为两类:
测试名称 | 描述 |
黑盒测试 Black Box | 把软件看做一个黑盒,不清楚里面的结构,从功能上做测试 |
白盒测试 white Box | 已知软件内部的结构,根据内部结构来做测试 |
个人感觉黑盒测试比较简单,而白盒测试明显对测试人员的要求较高。
2.2 手动/自动
测试名称 | 描述 |
手动测试 Manual Test | |
自动化测试 AutoMation |
手动测试优点很明显:灵活、全面、技术含量低,但缺点也同样:工作量大、大量重复、容易让人抓狂、容易出错。
自动化测试优点:快速高效。缺点:不够灵活。
我们最近使用的Visual Studio就可以用来进行自动化测试,最近试了一下其UI测试,很不错。
VS的UI测试是要模拟鼠标输入、键盘输入,然后自动重复。这样就可以在改动程序后自动对其进行大量重复的测试。
2.3 功能测试
测试名称 |
测试内容 |
单元测试 Unit Test |
在最低的功能/参数上验证程序的准确性,比如测试一个函数的正确性 |
功能测试 Functional Test |
验证模块的功能 |
集成测试 Integration Test |
验证几个互相有依赖关系的模块的功能 |
场景测试 Scenario Test |
验证几个模块是否能完成一个用户场景 |
系统测试 System Test |
对于整个系统功能的测试 |
Alpha测试 |
软件测试人员在真实用户环境中对软件进行全面的测试 |
Beta测试 |
真实的用户在真实的用户环境中进行的测试, 也叫公测 |
其中单元测试是开发人员做的,Beta测试是用户参与的。其他都是测试人员应该做的。
2.4 其他
回归测试 Regression Test:指对于软件的一个新的版本,重新用以往的测试用例测试看看,看看新版本是否存在问题。
这个回归测试很明显的体现出了自动化测试的重要性,如果用了自动化测试工具,我们很简单的就可以在短时间内做大量的测试,比如说Visual Studio的UI测试,我们甚至不需要重新录制操作顺序就可以直接做测试了。
探索性测试 Ad hoc Test:随机进行的,探索性的测试。
就是抛开测试用例,按照自己的思路随便点点,按照自己的想法又是也会发现很多BUG的。
三、最后谈谈自动化测试的重要性
1、自动化测试可以模拟人工测试,减少重复机械的测试工作量(大量用于回归测试);
2、可以提高测试精度,例如进行大数据量的正确性校验;
3、进行人工难以执行的测试,例如单元测试、统计测试覆盖率等等;
4、用于模拟多线程或者多用户的并发;
自动化测试是非常有必要的,否侧测试人员就不得不一遍又一遍的测试了。