软件测试技术应用现状调查报告(一)
调查:软件测试技术研究/应用现状 发布之后,得到大家积极的响应,现在已收回近400份有效答卷。之前发布两期剧透:
现在,是时候发布这次调查报告。由于内容比较多,分多次发布,并尽力在学界和工业界之间、大学和独立科研院所之间进行一些对比分析,有于时间关系,这些分析很可能不到位,不妥之处,请多多包涵。
这次重点发布测试人员的地区和工作年限分布,以及结构化测试方法、基于需求的测试方法和基于模型测试方法的应用状态,并在大学和软件公司之间进行比较,大学和独立科研院所之间的对比分析留在后续报道上。
调查时间:4月30日~5月14日,2016
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%),而且比工业界更有信心。