测试策略
测试策略简单来讲就是需要明确“先测什么后测什么”和“如何来测”这两个问题。
病有轻重缓急,测试也是一样的道理,重要的项先测,而不重要的项要后测。测试策略会要求有明确测试的重点,以及各项测试的先后顺序。
比如,对用户登录模块来讲,“用户无法正常登录”和“用户无法重置密码”这两个潜在问题,对业务的影响孰轻孰重一目了然,所以,你应该按照优先级来先测“用户正常登录”,再测“用户重置密码”。
测试策略还需要说明,采用什么样的测试类型和测试方法。 这里需要注意的是,不仅要给出为什么要选用这个测试类型,还要详细说明具体的实施方法。
第一,功能测试
对于功能测试,你应该根据测试需求分析的思维导图来设计测试用例。
主线业务的功能测试由于经常需要执行回归测试,所以你需要考虑实施自动化测试,并且根据项目技术栈和测试团队成员的习惯与能力来选择合适的自动化测试框架。
这里需要注意的是,通常应该先实现主干业务流程的测试自动化。
实际操作时,通常需要先列出主要的功能测试点,并决定哪些测试点适合采用自动化测试,并且决定具体使用什么样的框架和技术。
对于需要手工测试的测试点,要决定采用什么类型的测试用例设计方法,以及如何准备相关的测试数据。
另外,你还要评估被测软件的可测试性,如果有可测试性的问题,需要提前考虑切实可行的变通方案,甚至要求开发人员提供可测试性的接口。
第二,兼容性测试
对于兼容性测试来说,Web 测试需要确定覆盖的浏览器类型和版本,移动设备测试需要确定覆盖的设备类型和具体 iOS/Android 的版本等。
你可能会问,我要怎么确定需要覆盖的移动设备类型以及 iOS/Android 的版本列表呢?这个问题其实并不难:
如果是既有产品,可以通过大数据技术分析产品的历史数据得出 Top 30% 的移动设备以及 iOS/Android 的版本列表,那么兼容性测试只需覆盖这部分即可。
如果是一个全新的产品,你可以通过 TalkingData 这样的网站来查看目前主流的移动设备,分辨率大小、iOS/Android 版本等信息来确定测试范围。
兼容性测试的实施,往往是在功能测试的后期,也就是说需要等功能基本都稳定了,才会开始兼容性测试。
当然也有特例,比如,对于前端引入了新的前端框架或者组件库,往往就会先在前期做兼容性评估,以确保不会引入后期无法解决的兼容性问题。
兼容性测试用例的选取,往往来自于已经实现的自动化测试用例。道理很简单,因为兼容性测试往往要覆盖最常用的业务场景,而这些最常用的业务场景通常也是首批实现自动化测试的目标。
所以,UI 自动化框架就需要能够支持同一套测试脚本在不做修改的前提下,运行于不同的浏览器。
第三,性能测试
对于性能测试,需要在明确了性能需求(并发用户数、响应时间、事务吞吐量等)的前提下,结合被测系统的特点,设计性能测试场景并确定性能测试框架。
比如,是直接在 API 级别发起压力测试,还是必须模拟终端用户行为进行基于协议的压力测试。再比如,是基于模块进行压力测试,还是发起全链路压测。
如果性能是背景数据敏感的场景,还需要确定背景数据量级与分布,并决定产生背景数据的技术方案,比如是通过 API 并发调用来产生测试数据,还是直接在数据库上做批量 insert 和 update 操作,或者是两种方式的结合。
最后,无论采用哪种方式,都需要明确待开发的单用户脚本的数量,以便后续能够顺利组装压测测试场景。
性能测试的实施,是一个比较复杂的问题。首先,需要根据你想要解决的问题,确定性能测试的类型;然后,根据具体的性能测试类型开展测试。
性能测试的实施,往往先要根据业务场景来决定需要开发哪些单用户脚本,脚本的开发会涉及到很多性能测试脚本特有的概念,比如思考时间、集合点、动态关联等等。
脚本开发完成后,你还要以脚本为单位组织测试场景(Scenario),场景定义简单来说就是百分之多少的用户在做登录、百分之多少的用户在做查询、每个用户的操作步骤之间需要等待多少时间、并发用户的增速是 5 秒一个,还是 5 秒 2 个等等。
最后,才是具体的测试场景执行。和自动化功能测试不同,性能测试执行完成后性能测试报告的解读,是整个测试过程中最关键的点。
除了我给你详细分析的、最常用的功能测试、兼容性测试和性能测试外,还有很多测试类型(比如,接口测试、集成测试、安全测试、容量验证、安装测试、故障恢复测试等)。这些测试类型,都有各自的应用场景,也相应有独特的测试方法,在这里我就不再一一展开。
软件测试52讲---笔记整理