时间:2018-10-24 来源:互联网 浏览量:
本月3日,微软突然推送了Windows 10更新十月版(1809)的正式版。纵观Windows 10自2015年正式发布以来的所有正式版更新,跳过发布预览通道直接RTM的版本,在1809之前,还真的找不到先例。
推送快,是Windows 10 1809的特点之一,除此之外,它还有另外一个特点,就是问题多。
Windows 10 1809都有哪些问题,我们不妨来回顾一下:
英特尔驱动与Windows 10 1809不兼容,导致部分用户无法更新;
新版系统安装缓慢;
从Microsoft Store获取的应用程序无法联网;
Edge浏览器收藏夹中的内容丢失;
蓝牙连接间歇性中断;
文件资源管理器的黑暗模式黑暗不完全;
通知可能会无法在操作中心显示;
开始菜单中的搜索功能无法按预期工作;
开始菜单中的磁贴可能会意外重叠;
升级到1809后用户的部分设置被重置;
升级到1809后部分用户无法登录系统;
任务管理器UI元素闪烁;
任务管理器CPU占用率显示不准确;
部分用户的个人文件在升级到Windows 10 1809之后丢失。
不过上面的这些问题并不是我们这篇文章要讨论的内容。今天我们要讨论什么呢?是发生这些问题的原因。
硬件厂商的问题?
按道理来讲,从来只有驱动适配系统的说法,而没有系统适配驱动的说法,所以Windows 10上的一些和硬件厂商的驱动有关的问题就一定要厂商来背锅,是吗?
不一定。
我们不妨拿这次英特尔的驱动与Windows 10 1809不兼容,导致部分用户无法升级的问题举例。
据了解,按照正常的流程,一个Windows 10的大版本更新在正式推送给用户之前,微软需要把RTM之前的候选版本提供给硬件厂商,以便他们及时跟进驱动的适配,这些硬件厂商中肯定会有英特尔。
为了防止驱动出现问题以及防范恶意软件,在硬件厂商编写好驱动之后,微软的Windows硬件设备质量实验室(WHQL,Windows Hardware Quality Lab)会对这些驱动进行一个认证。
如果认证通过,微软就会给这些厂商的驱动签名,只有这些签过名的驱动,最终才被允许安装在用户的电脑上。通常来讲,微软会通过Windows Update把来自厂商的新版驱动静默推送到用户的电脑上,用户无需自己动手。
这次部分用户因新版驱动未安装而无法升级到Windows 10 1809,其背后的事实究竟是怎样的呢?其实,在Windows 10 1809 RTM之前,适配于新系统的英特尔驱动就已经编写完成、并通过WHQL的认证了。至于这个本可以避免的问题最终因何暴露,解释起来却让人哭笑不得:英特尔确实提交了新版驱动,可微软在Windows Update里推送它的时候,竟把它当成了一个可选更新。
硬件厂商再配合,也怕微软搭错筋啊。
微软砍掉了测试团队?
微软内部有三大核心技术工种,分别是软件开发工程师(SDE)、软件测试工程师(SDET)和项目经理(PM)。2014年,有传言称微软裁撤了软件测试部门,转而将Windows 10的测试任务交给自动化测试和用户测试,这种说法其实是不准确的。SDET岗位并非被裁撤,而是与SDE进行了合并。SDET的职责也并未消失,只是被重新分配了而已。也就是说,过去,软件测试这个工作是由SDET来专职负责的,而SDET与SDE合并之后,软件开发工程师同时肩负了软件测试的职责(组合工程),微软内部的QA类型测试依然存在,这样算起来,Windows 10系统的质量控制就是由自动化测试、SDE的内部把关、Windows Insider的外部把关以及OEM测试所共同完成的。
把SDET与SDE进行合并,这种操作真的没问题么?
当然没问题,不过有一点我们需要考虑,那就是SDE的思维方式与SDET的思维方式之间的差异性。对于一个开发人员来讲,在测试软件的过程中,他们所做的前提假设,是他们面前的这段代码可以正常运行,而软件的测试人员则不然,他们所做的前提假设,是他们面前的这段代码充满bug,其目标,则是发现问题、复现问题、提交问题并解决问题。SDE与SDET思维方式间的差异给最终的测试结果所带来的潜在影响,是绝对不可以被忽视的。
所以Windows 10质量控制水平下降这个问题,最终要让SDET与SDE的合并来背锅?
不尽然。还有其他原因,我们接着看。
Windows 10底层改动太多?
操作系统的开发是一项超级大的工程。正如我们所知道的,一项工程越复杂,那它出错的可能性就越大,而某个错误所处于的层级越浅,那修复它的代价就越小。
这里我们假设一个最简单的软件结构模型,其层级我们以底层、中间层和表层代指。底层(Unit层)相当于盖房子时所用的砖块。通常来讲,这个层级的测试(单元测试),其需要测试项目最多,可能存在的bug的数量也最多,但如果问题在这一层级被发现,那解决问题的代价是最小的。
中间层(Service层)相当一栋房子中由砖块组成的墙体。若底层的各个单元都能正常工作,那将它们结合到一起之后,其组合体能否依然正常工作,这就是中间层级的测试所需要验证的事情。通常来讲,这个层级的测试,其需要测试的项目的数量要少于单元测试,而如果有问题在这个层级被发现,那解决问题的代价是相对较小的。
表层(UI层)相当于由墙体、天花板等组成的一栋完整的房子。如果一个由各个单元和模块所拼合成的最终产品可以按设计预期工作,那就万事大吉,非常好,但如果这一层级当中真的被测出了问题,那就比较麻烦了。因为导致这个问题的原因还无法定位。如果问题出在表层和中间层,那问题解决起来相对还算容易,但如果问题出在底层,那问题不仅定位起来相当麻烦,解决起来的代价也非常高,因为用了有问题的Unit的Service都会受到影响。
作为一个操作系统来讲,Windows 10的结构远比我们上面提出的这个软件结构模型要复杂得多,它是由HAL、Devices Drivers、Kernel、Windows and Graphics、NTDLL.DLL、Subsystem DLLs、Service Processes、User Process、Environment Subsystems和System Process等多个层级所组成的,每个层级和每个模块之间都环环相扣,并有可能互相影响。
有件技术上的事情可以确定的是,据《Windows Internals》这本书的介绍,Windows 10所加入的新技术对底层的改动比Windows 7、Windows 8和Windows 8.1还要多,比如新的Secure System进程、Exploit Guard、WSL以及新的驱动模型。
底层改动所导致的问题很有可能牵一发而动全身,Windows 10的质量难以控制,相信和它的底层改动肯定是分不开的。
Windows Insider项目背锅?
Windows Insider项目是微软于2014年推出的面向用户的Windows 10预览体验计划,此前有传言称,微软“砍掉测试团队”之后,Windows 10的质量控制将全部依赖于自动化测试和Windows Insider,而因为Windows Insider成员很难像专业的软件测试工程师那样准确和专业地反馈问题,所以Windows 10的质量控制水平出现了下滑。
关于“微软砍掉测试团队”这个传言,我们上面已经进行过一个澄清,将Windows 10质量水平下滑的原因归结于“微软砍掉了测试团队”,这肯定是不准确的。
至于Windows Insider要为此背锅这个观点,虽然目前还没有证据表明Windows 10的测试在某些程度上依赖于Windows Insider项目与其质量控制水平的下滑有直接的关系,不过有一点是几乎确定的,那就是没有接受过专业培训的Windows Insider很可能难以足够高效地发现和反馈问题。
专业的软件测试工程师在进行软件测试时通常会结合测试用例系统和全面地排查问题,而没有经过专业培训的Windows Insider虽然可以为Windows 10提供数量相当可观的反馈,但这些反馈面临很大的重复提报风险、漏报风险以及误报风险,另外,数量庞大的反馈会让微软为之付出相当大的筛选成本。
所以Windows 10质量控制出现问题要Windows Insider来背锅?
这个锅Windows Insider们当然不能背。
因为在把系统交给Windows Insider测试之前,微软需要对候选的版本进行单元测试和冒烟测试,也就是说,最终提交给用户的版本,肯定是一个基本上没有毁灭性bug的版本,况且用户提交的问题被解决后,微软还要以采取回归测试的形式来进行验收。由此可见,Windows 10的质量控制做得合格与否,很大程度上是取决于微软,而非Windows Insider。
Windows已经不重要了?
今年3月29日,据报道,微软对公司的组织结构进行了新一轮的变革,Windows和设备部门被拆分,当时的Windows和设备部门主管Terry Myerson离职,Windows Insider项目唐娜姐被分配到Azure部门。
独立的Windows部门“没了”。
近些年,微软一直在进行业务方向上的变革,正如我们所经历的那样,微软砍掉了Windows RT,放弃了Lumia设备的研发和生产,砍掉了微软手环的产品线,宣布Windows 10 Mobile进入维护期,种种迹象表明,微软正在缩减其To C的业务,而大力发展量子计算、云计算和人工智能则表明微软的业务中心越来越向To B倾斜。
为什么微软要做出这样的倾斜呢?首先,微软的To C业务已经遇到瓶颈,随着亚马逊、谷歌等科技巨头在云计算领域纷纷发力,微软若不及时改变,等这一领域形成准入壁垒,微软再入场就为时已晚。另外,To B业务会为微软带来非常积极的营收,这对微软的股东以及微软公司本身都是一大利好。
那Windows呢?Windows就不重要了吗?
当然重要。
随着微软转型的推进,Windows 10早已不是一个简单的产品——而是基础设施。Windows 10已经融入到用户生活和工作的方方面面,就像我们每天呼吸的空气一样——它看似透明,却不可或缺。微软的服务,不管是To B还是To C,很大程度上都要依托于Windows 10。
既然Windows 10对微软依然重要,那为什么微软要分拆Windows和设备部门呢?
微软的转型固然是原因之一,不过还有一个故事,大家尽管当成街谈巷议来听,千万不要认真。
不知大家有没有过这样的好奇,纳德拉上台以来,为什么Windows好像越来越不受待见了呢?
微软Windows事业部曾经有个名叫“Steven Sinofsky”的主管,当年微软在选下一任CEO的时候,它是萨提亚·纳德拉强有力的竞争者,在和纳德拉的竞争中失利之后,Steven Sinofsky与微软“和平分手”。
Steven Sinofsky离职之后,媒体尝试与微软的联系人取得联系,但由于这个话题比较敏感,该联系人不愿意透露身份。
联系人声称:“你想必听说了Steven Sinofsky是因为得罪了人才离开的,Sinofsky的政治手法一面是铁腕政策,对他一定要服从,一面是同时在暗地里搞一些政治斗争……”
萨提亚·纳德拉上台以后微软为什么总是拿Windows部门开刀,又是砍掉Windows RT、又是放弃Windows 10 Mobile、又是对Windows 10 IoT爱搭不理,如果从“否定竞争对手(即使是曾经的)的一切,就是肯定自己的一切”的角度来理解,那上面的这些事情为何发生,或许也就有个非官方的解释了。
根本原因
在上文中,和大家讨论了可能导致Windows 10质量失控的种种原因,但这些原因只是表面原因,它们都不是根本上的原因。
归根结底,Windows 10质量失控的罪魁祸首,其实就是迭代太快。
Windows 10的开发和敏捷开发是同样的模式,敏捷开发是一种以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发的模式。
操作系统这种东西,实际上是不能敏捷开发的。微软的Windows 10的质量之所以有失控风险,就是因为他们更新迭代产品的方式变了。
对于Windows 10这样的超级工程来讲,半年更新一次的频率对微软来说太快了,就目前来看,短时间之内,微软还很难保证这样的迭代和交付周期。
除非微软能够想出一个能够让新系统既能及时交付又能有效控制质量的两全的办法,否则,认为,把Windows 10的迭代周期由半年一个大版本改成一年一个大版本可能是个更好的主意。
写到这里,文轩突然想起8848钛金手机的一句广告词。在文章的最后,我们不妨把这句话送给微软的Windows 10。
记住,跑得快不一定赢,不跌跟头,才是成功。