1.什么是软件测试?
软件测试是软件整个开发周期中的一个重要阶段/过程,检验软件是否与期待的需求保持一致,进而提高用户体验和满意度。
2.为什么要软件测试?
1)节省成本。
如果软件研发阶段没有软件测试这个过程,一旦产品在最终用户使用时出现bug/缺陷,修复成本会非常大。比如汽车召回事件,一旦出现问题,不但要重新进行问题修复,对公司影响也很大,直接影响经济损失。
2)产品质量。
人人都喜欢质量过硬的产品。而产品的功能,性能,安全等都来源于产品研发阶段的需求,即产品要实现什么功能,达到什么目的。那如何检验是否满足这些需求呢?答案就是软件测试。
3)提高用户满意度。
产品的功能和性能的好坏,一般不是产品经理说了算,也不是测试人员说了算,而是产品的最终用户。如果软件交付客户前,如果没有测试或测试不足,那因软件出现在客户面前的概率会非常非常大,用户不满意,自然不愿意为产品买单。
3.软件测试的类型有哪些?
1)功能性测试
2)非功能性测试,如性能测试
3)回归测试
一般地,功能性测试或回归测试,多为手动测试为主。而自动化测试工具和技术的出现,渐渐地
代替了一部分手动测试,加快了产品的交付速度。
4.软件测试的基本原则?
1)穷尽测试是不可能的。
2)测试过的产品/软件,是完全没有问题的。这个说法是不正确的。
3)测试要尽早介入。会降低成本。
4)缺陷的群集效应。20%的功能模块中,可能含有80%的软件bug。
5)杀虫剂效应。说白了就是产生耐药性了。
测试用例不断重复执行,发现bug的概率会很小,这就是杀虫剂效应。
此时换个角度,考虑变化测试数据,修改测试用例,或增加新的测试用例。可能会发现更多的bug。自动化测试的用例一般属于杀虫剂效应,因为自动化测试用例一般用于回归测试,改动可能性相对较小。
6)测试环境对测试结果影响非常大。
一般对于一个产品,主要有三个环境(不同公司,个数和环境目的有差别),分别为开发环境,测试环境,生产环境。开发环境和测试环境应尽量模拟生产环境,让测试的场景满足生产环境的场景。保证了一致性/前提条件下,才能方便分析问题和解决问题。
5. 软件测试生命周期
1)需求分析。
测试人员,根据需求规格说明书(需求文档),自己理解需求,必要时与System Analyse/ Developer 进行(Question/Answer)的口头/书面的需求确认。
2)测试计划作成。
一般测试主管/高级测试人员,实行测试计划的作成。测试计划包括:测试的里程碑/重要时间节点,测试人员,测试策略,测试工具/方法的选取,测试成果物评审机制,测试缺陷和测试流程等。
3)测试用例作成。
依据需求文档,开发测试用例。测试用例中,描述了测试条件,测试步骤,期待的测试结果等。工具,国内如“禅道”,国外如HP公司收费的QC工具、开源的TestLink工具,IBM的RTC工具等。如果需要自动化测试,则需要写脚本。AutoIt可用于PC Desktop,Selenium可用于PC Web,Appium可用于手机Mobile。
4)环境搭建/测试准备。
测试环境的搭建是测试执行的基础,测试需要准备环境及环境的依赖,保证测试过程顺利进行。
5)测试执行。
根据测试用例中步骤,执行。如果发现实际结果和期待结果不一致,提交bug 报告。有的企业用bug管理系统如Jira,Mantis。有的用Excel进行管理。
6)测试交付
判断测试覆盖率(需求是否都测试到了),缺陷解决情况,编写测试报告,召开总结会等。