BVT & BAT & SVT
1. BVT(Build Verification Test)
a. BVT概念
Build Verification test is a set of tests run on every new build to verify that build is testable before it is released to test team for further testing. These test cases are core functionality test cases that ensure application is stable and can be tested thoroughly. Typically BVT process is automated. If BVT fails that build is again get assigned to developer for fix.
BVT即版本验证测试,由一组基本的功能测试用例组成,每一次当有新的build生成,我们都要通过先运行这些case, 来保证在生成新的build后系统还是完整的稳定的,不能因为一次的branch合并就导致整个系统奔溃。所以,BVT是要在每次有新的code合并后进行,如果BVT失败了,要重新返回给code的开发者去fix, 直到BVT成功才能将修改过的代码合并到系统中来。所以BVT最好写成自动化,而且最好保证每次BVT的执行时间别太长。这样,可以在空闲时间(比如下班后)自动执行,节省测试时间,提高测试效率。
BVT又被称为“冒烟测试”(Smoke Testing),同时,BVT也是一种回归测试。
b. BVT的优缺点
BVT 的优点是运行时间短,验证了软件的基本功能; 缺点是这种测试的覆盖率很低,只能当作最基本的软件测试。
c. 冒烟测试(Smoke Testing)的简单介绍
BVT 测试又被称为“冒烟测试”,而冒烟测试源自硬件测试,当对一个硬件或者硬件组合改动后,直接给设备通电,看看设备是否会冒烟,没冒烟说明待测组件通过了测试。而在软件开发过程中一直就有高内聚,低耦合的说法, 各个功能模块之间的耦合存在,所以一个功能的改动,会影响到其他的功能模块。这就要求开发人员在修复先前测试中发现的bug后,想知道这个bug的修复有没有影响到其他的功能模块,就需要做冒烟测试。
d. BVT测试用例包含的内容
1) 业务流的测试,保证正常业务链路的通畅;
2) 工作流的测试,主要是测试流程流转的是否正常,至于流程步骤的表单内容是否正确则先不关注;
3) 关键功能的测试,至少要保证系统运转所需的启动数据,以及一些开关控制正常;
4) 重要的基本功能测试,比如对一些核心业务有影响的一些增删改查等。
BVT测试的用例必须要随着系统的扩充而扩充,它并不是一成不变的。
Here are some simple tips to include test cases in your BVT automation suite:
* Include only critical test cases in BVT;
* All test cases included in BVT should be stable;
* All the test cases should have known expected result;
* Make sure all included critical functionality test cases are sufficient for application test coverage.
e. BVT 测试的过程
1) 前提条件是软件的各个单元测试都通过;
2) Build出最新的版本,拿到最新的版本;
3) 根据文档要求配置测试环境;
4) 执行BVT测试用例(手动或者自动);
5) BVT测试结束,查看结果,若是成功,则可以交给测试组进行接下来详尽的测试工作;若是失败,则需要报bug,以最高的优先级去修复该bug,然后重新进行BVT测试,直到成功才可进行下面的其他测试。
f. BVT测试用例的简单案例
对一个简单的编辑器的BVT测试需要包含的测试用例(基本功能的测试):
(1)需要测试用例来测试create a new text file;
(2)需要测试用例来测试writing的功能;
(3)测试用例来测试copy, paste, cut functionality of text editor;
(4)测试用例来测试opening, saving , deleting text file.
参考: http://www.softwaretestinghelp.com/bvt-build-verification-testing-process/
2. BAT(Build Acceptance Test)
a. BAT概念
BAT指“工作版本可接受测试”, 新的工作版本正式测试前进行的一项快速测试过程,目的是保证软件的基本功能和内容的正确和完整性,经过了BAT测试后,就进入了正轨的测试阶段。BVT只验证build版本构建的成功与失败,不需要深入测试后见好的build的功能、性能等,同时只考虑功能的覆盖率;而BAT测试则需要考虑功能性能的测试,以及考虑功能的覆盖率的同时,也要考虑功能的正确性。
New build is checked mainly for two things:
* Build validation
* Build acceptance
BAT测试是在新版本build成功后,且BVT测试通过之后,进行的一项测试,目的是测试是否要接受这个构建的版本,找出构建版本的主要功能和性能上可能存在的bug。
b. BAT测试的必要性
Because BATs represent a subset of important tests from each of the teams, they should also be used to pre-test proposed changes that may have impact that is not localized to a feature team. Running private builds against the BATs prior to check-in provides evidence as to whether the proposed changes are likely to negatively impact tests (and by implication consumers). This pre check-in process is especially valuable for changes where the impact across all features may not be fully understood.
c. The results of Build Acceptance Tests:
* Are an initial measure of build health: low pass rates are correlated with poor build health.
* Allow consumers to determine if they wish to use a build.
* Indicate if basic functionality is working (for those feature areas that are passing).
* Are used to qualify the build as sufficiently high quality for self-host use (all tests passing).
* Are a necessary prerequisite for limited external release of the build for preview and casual usage by Partners (e.g. TAP or CTP drops). (Requires that all tests are passing.)
3. The difference of BVT & BAT
在开始系统测试前,我们先要做BVT测试(about 0.5 hour,10%-15% of the total test cases will be executed.),当BVT测试通过以后,才开始做BAT测试(about one night, 80%-85% of the test cases will be executed.)
Unlike Build Verification Tests (BVTs), the results of BATs are not intended to be all or nothing, but allow the consumer to determine the state of the features of interest.
BATs run after each official build (after BVTs have passed) and do not “cause” build breaks if one or more of the tests fails. The run results of the BATs (and BVTs) are used to categorize the build into one of three states:
Self Host: A build where the BVT and BAT runs have a Pass Count greater than zero and a Fail Count of zero.
Self Test: A build where the BVT has a Pass Count greater than zero and a Fail Count of 0, but the BAT either has a Pass Count of zero, or a Fail Count greater than zero.
Self Toast: A build where the BVT has a Pass Count of zero or a Fail Count greater than zero.
BAT测试一般位于BVT测试之后进行,同时,两个测试的侧重点不同,BVT更侧重于build版本功能的完整性,对于功能的覆盖率,正确性及性能等各方面没有很大的要求,而BAT则相反。同时,BAT测试中的case,允许用户自己决定关注点应该更多的放在哪个模块,比如说对于一个金融会计公司,更关注财会模块(Finance,General journal等)功能的完整性和正确性的状态,对于供应链(supply chain)模块不关注,而对于物流公司则相反。
也有些人说,BAT、BVT 和 Smoke test是一样的。这个还有待商榷。
4. SVT(System Verification Test)
SVT is the point where the entire package comes together fot the first time, with all components working together to deliver the pojects intended purpose. It's also the point where we move beyond the lower-level, more granular tests of FVT(Function Verification Testing), and into tests that take a more global view of the product or system. SVT is also the land of load and stress. When the code under test eventually finds itself in a real production evironment, heavy loads will be a way of life. That means that with few exceptions, no SVT scenario should be considered complete until it has been run successfully against a backdrop of load/stress.
注: 平时的工作中经常会做BVT,BAT的测试,但昨天上测试培训课时听到老师讲SVT,虽然个人对SVT的理解还不够,但还是先做个笔记,以后好慢慢积累理解并运用。