[版权所有,任何转发都需经过作者同意]
软件测试技术应用现状调查,参考:调查:软件测试技术研究/应用现状
调查时间:4月30日~5月14日,2016 ; 样本量近400
1. 人员分布(还不如说测试友人分布,哈哈):有三分之二的测试同仁来自软件公司。让我感到surprised:来自独立研究院所的测试人超过大学,还有4.2%来自其它,是自由职业者(咨询顾问)、政府部门的公务员吗?
2. 从区域分布看
北京排第一,是很自然的,但上海被广东、江苏超过,有一点点surprised。另外,两个直辖市(天津、重庆)就相对落后,位置靠后,而浙江(主要靠杭州)、四川(主要靠成都)、安徽(靠科技城——合肥)、福建(靠厦门、福州)都比较靠前,辽宁(大连、沈阳)哪里去了?
3. 从软件测试从事年限来看,分布还比较均匀,多数测试人工作年限在3-10年,但10年以上也占了22.52%,说明国内测试有良好的基础了。
4. 在结构化(白盒)测试方法中,语句覆盖居然低于分支、条件覆盖,很surprised。以前认为,很多公司都是以代码行覆盖率来衡量单元测试,目前来看,低于50%。巧的事,分支覆盖和条件覆盖居然完全一致,59.46%。令人高兴的是,基本路径覆盖都超过50%,也有15%和18%基于MCDC(ModifiedCondition/Decision Coverage)、变量定义与引用 进行测试研究或实践。
学界和工业界在代码级测试中,基本一致,这是可以理解的,代码虽然是实现业务,但也可以说远离业务,两界没有大的Gap是合理的。只是工业界关注/应用MCDC要远低于学界,也说明软件领域对质量要求普遍比较低。
5. 在(黑盒)基于需求的测试方法中,等价类划分方法和边界值分析法最受欢迎,这完全在我们意料之中,其次基于场景的方法、错误猜测或经验方法,它们分别高达72.97%、64.56%,这说明手工测试、探索式测试方式在测试工作中占有较大比重,至少是不可少的。“基于场景的方法、错误猜测或经验方法”这两种方法,学术研究应该很少,但并没有接近零,而仍然有较高42.86%和23.8%,也许是大学老师也了解,然后选上了。这里Surprised的是,“决策表(判定表)方法”使用很低,而且低于“因果图方法”两个百分点。从两界对比看,学界研究因果图很少,但决策表居然高于公司10个百分点,这点理解起来有些困难。只能理解,工业界应用方法偏少,只是用一些简单的方法,偏复杂一些的方法就不想用。大家还有什么解释与评论?
6. 基于模型测试(model based testing,MBT)方法和技术不清楚的超过50%,说明MBT应用比较落后,大学不清楚的只占23.8%,而业界高达62%。“符号执行”差别最大,大学研究很多,企业只有3%人清楚,而业界和学界在“模型检查”上倒是相当,这是让人高兴的事。在“定理证明”上,工业界居然高于学术界3个点,这有些不寻常,也是让人高兴的事。
其实MBT并不神秘,因果图、状态图、分类树等可以归为MBT,因为它们都是将问题抽象为符号表示,这样绝大多数测试人还是应用过MBT的。
7. 针对MBT应用不够好的原因,大学和工业界差别比较大,公司明显感觉缺少专家指导,而学界有更多的尝试(35.71%),而且比工业界更有信心。
8. 在组合优化测试方法中,“正交试验法”居然排第一,让我着实惊奇了一把!这主要还是工业界的贡献,学界只有28.57%。从我认知来看,在组合测试技术的应用中,在业界,两两组合是最常有的,分类树方法也容易应用。但调查结果显示,工业界用“正交试验法”高出“两两组合”近11%。在学界,多数研究者都是围绕两两组合(Pairwise)、3-way或3+-way来开展工作,并结合基于搜索的算法来研究。学界的调查结果,倒是和我的认知一致。
9. 在基于搜索的测试方法中,超过60%的测试人是不了解的,而了解最多的是“随机算法”、“概率算法”,最不了解的是“演化算法”、“元启发算法”,只有4.8%,在工业界最低的算法是元启发算法,只有3.54%,幸好都有人了解。基于搜索的测试方法属于“高大上”的方法,业界和学界差别很大,不清楚的测试人:学界:业界= 66.4% : 23.8%,学界相对乐观,有三分之一人也研究遗传算法、有15%~20%的大学老师研究蚁群算法、粒子群算法、神经网络、元启发算法。即使最低的演化算法,也超过10%。
10. 如果之前没有研究/应用基于搜索的测试方法,主要原因是什么?当然是“不了解”!但实际,这只是工业界的答案,因为之前不清楚的大部分测试人员来自公司,而且这次调查,公司的人数是大学/研究所的人数的2倍。除此之外,大学是觉得“基于搜索的测试方法”有比较多的应用场景,主要是缺乏良好的工具和其它原因,而业界主要认为没有应用场景,也有10%的人认为有应用场景,但困难重重。究竟困难在哪里?大家也可以留言、评论。
11. 就模糊测试、变异测试、随机测试、蜕变测试的应用,也有四分之一的人不了解。总体上,认为有价值的方法是模糊测试、随机测试,而且这比例不低,高达44%,而且模糊测试、随机测试两者结果完全一致,很巧合!因为业界在模糊测试的应用 比 学界研究高出很多(15%),真是可喜可贺!业界在模糊测试的应用也高于随机测试,说明业界也重视效率。
而蜕变测试最低,且业界比学界低得多,这也是可以理解的。蜕变测试是通过检查被测程序的多次测试输出之间必要关系的满足性来判定程序输出是否存在错误,侧重研究 Test Oracle 的蜕变关系,这些关系主要是数学上的等价关系。但业界对 Test Oracle 关注不够,有一次在一个公司内训中,问谁知道“Test Oracle”,居然没有人知道。而且在实际的业务测试中难以(自动)产生这些等价关系,或者说ROI(产出投入比)较低。从多数观点看,模糊测试包括了:
- 根据模糊控制模型生成测试数据
- 对原数据进行变异
变异测试是模糊测试的一部分,因此调查题目故意埋下一个陷阱,看看大家是否能够区分,现在看来,有不少人可能没有真正理解模糊测试。
12. 接下来追加了一个模糊测试的问题,模糊测试(Fuzz Testing)方法主要应用在哪类测试中?结果,总体上/在业界 稳定性测试和可靠性测试 居然 高于安全性测试,又一次surprised。从我认知看,业界做“稳定性测试和可靠性测试”就比较少,这几年倒是安全性测试很热,而且之前还两次出版过“模糊测试——强制发掘安全漏洞的利器”一书。在学界,和我认知比较接近,安全性模糊测试占了52.4%,远远超过稳定性测试和可靠性测试,而且可靠性测试也高于稳定性测试12%,因为稳定性的概念相对比较含糊。
13. 关于自动化测试,这次没有详细调查其技术和工具,如果加进来,这次调查可能占有大家太多的时间,将来可以针对自动化测试进行专题调查。这次,只是做一个大方向上的调查——未来有显著改善或突破,靠什么?按照调查的结果,主要靠“软件开发的标准化、组件化”。的确,如果软件开发的标准化、组件化,自动化测试是很容易实现的,而现在软件研发是最不遵守标准的、最不规范的。那天在某知名群里讨论着著名丰田汽车案例“有着1万个全局变量的一大坨代码”文章,不少软件人士承认更愿意买手动汽车,手动汽车比全自动汽车安全可靠。
总体上,其它几项措施“软件技术的提高”、“人工智能”、“模型驱动开发”和“云服务”比较接近。但业界和学界差别还是比较大,学界研究算法较多,对人工智能充满信心,所以在学界,“软件开发的标准化、组件化”只占43%,而“人工智能”要占57%,远远高于前者,也远高于工业界的信心(32.3%)。
从我个人看,基于模型的测试(MBT)才能真正算自动化测试,包括模糊测试、人工智能等,人工智能也是需要建模型。目前多数的功能自动化测试都不能算自动化测试,只能算半自动化测试,因为脚本的开发和维护都是人做的,工具主要是完成测试的执行和呈现。只有借助模型,才能自动生成测试数据、才能自动生成脚本、才能进行自动变异、才能进行自动蜕变、才能进行基于数字空间的自动搜索……
14. 业界关注学术界的成果吗?在公司工作的测试工程师,有12%的人强烈关注学术界的软件测试研究成果,还有31%测试工程师也关注,虽然加起来不到一半,但已经超出我的预期,感觉已很不错了。他们可以成为学术界和工业界的纽带,将学术界新方法、新技术带入到工业界,也可以将工业界的问题反映给学术界。“不关注”的人很少,但整整一半人属于关注较少的。
15. 学术界的研究来源于业界的实际需求吗?在学术界做研究的人员,绝大多数的研究来源于工业界的实际需求的比例也比较低,只有12%,和业界强烈关注学术界的研究成果的比例相当吻合,挺巧合。加上“多数研究来源于工业界的实际需求”这部分,还不到三分之一。一般性也占到15%,其研究较少或没有来源于工业界的实际需求的,也占到17%,总体不够乐观。
16. 对当前工业界和学术界的交流满意吗?结果不乐观,除了一般(中间性质)57%之外,“不满意”的比例(25.5%)远远超过“满意”的比例(7.5%)、“很不满意”的比例(7.5%)远远超过“很满意”的比例(0.9%)。
学术界观点更加明确一些,“满意”和“不满意”的比例相对比业界的比例都高出较多,而业界选择“一般”的比例高,超过60%。
17.对工业界和学术界相互受益充满信心吗?有一半的人充满信心(8.71%+42.34%),比现状好很多,对现状(很)满意的比例只有8.4%,大家对未来还是乐观的,这也是值得高兴的事。
学界和业界对比的话,依旧是学界观点更鲜明、更乐观,学界有信心的比例高达80%,而业界只有47%。学界选“一般”的只有12%(而业界选“一般”的高达45%),这也体现了学术精神,哈哈,学者会尽量给出明确结果,而不是模棱两可的答案。如果不清楚,干脆不给答案,学界将近12%的人没发表意见。
之前,在剧透时,还透露过 剧透:两界关系如何?能改善吗?上面这些数据给出了答案:目前关系不够好,但对未来充满信心。
在剧透之后,还收到不少有关“如何改善两界关系”的建议,总的来说,就是:
- 理论来源于实践,理论联系实际,加强交流、多多交流多多合作,互相受益,受益越来越多。
- 学术研究必须服务于工业发展需要!
- 学术成果能很好的在工业界落地,不停留在方法论的层面。
- 软件测试理论实践还是应该在工业界发展,学术界总结现有理论;
- 工业界野路子多,但是贴近现状;学术界的理论充实,但是高高在上,用到工作中的太少;
- 希望交流更多共性的东西,别再每个公司自己造轮子;
- 并不是很了解,觉得软件测试与其思路有一定差异。但是,新的思路需要有好的工具或者架构支持会更好;
- 通用技术要细化分类,形成最佳实践,指导意义将更强;
- 学术要走向实际的工业界,通过这次的调查。发现虽然已经在测试领域干了一年多了,对最新的测试方法了解还是很浅,用的还是黑盒猜测经验法。
……
原文出处: