这是一个好问题。
  作为一个用户,当然可以不必知道一个复杂的软件是怎么做出来的。
  好像我去饭店里吃一个炒鸡蛋不用去管那只鸡蛋是怎么由母鸡生出来的。
  但是当有人把这个问题提出来,希望了解答案的时候,我也希望提问题的朋友,还有那些同样怀有这类问题的朋友,能够明白在这个题目下面作答的朋友,只是来解答问题,并不是解决部分人心中的那种“我是要用没有bug的软件”的需求来的。
  “把用户当上帝”是商家用来要求自己的服务的,但是如果用户以上帝自居,那么这个世界没可能和谐。
  希望无论是这个问题,还是任何其他的地方,当你遇到了你不了解的事情的时候,你都应该能明白这个道理。
  那么,接下来,先说结论:
  在我写下这个答案的时候,问题是这样的:
  游戏啊,操作系统,网页啊。。。总是充满了各种bug,修复一个又出一个,有问题的改好了没问题的又出bug了。难道bug不能完美的解决吗?
  答案是:
  不能。
  为什么这么说呢?这是因为当一个软件产品,包括但不限于:应用、操作系统、游戏、复杂交互的网页等等,复杂到一定程度之后,其是否会出现bug根本不以开发者本人的意愿为转移了。无论你软件工程多么完美,开发规划多么细致,写代码的水平有多么高,当由无数个组件组合起来形成一个大型的软件项目以后,其中可能出现不可预知的错误的地方的数量是非常庞大的。
  你如果只是写一个在屏幕上输出helloworld的程序,这个可以保证做到没有bug
  但是你要做一个操作系统,做一个大型MMORPG,实际上无可避免的会出现bug。
  这么说也许听起来干巴巴的像是在诡辩。我相信这时候会有用户问:
  ”既然你们如果发现了bug能修复bug,为什么不能更加细致的测试,并且在修复全部bug之后再发布这个软件呢?“
  关于这个问题,我提议大家先看看这个:
  一个测试工程师走进一家酒吧,要了一杯啤酒
  一个测试工程师走进一家酒吧,要了一杯咖啡
  一个测试工程师走进一家酒吧,要了0.7杯啤酒
  一个测试工程师走进一家酒吧,要了-1杯啤酒
  一个测试工程师走进一家酒吧,要了2^32杯啤酒
  一个测试工程师走进一家酒吧,要了一杯洗脚水
  一个测试工程师走进一家酒吧,要了一杯蜥蜴
  一个测试工程师走进一家酒吧,要了一份asdfQwer@24dg!&*(@
  一个测试工程师走进一家酒吧,什么也没要
  一个测试工程师走进一家酒吧,又走出去又从窗户进来又从后门出去从下水道钻进来
  一个测试工程师走进一家酒吧,又走出去又进来又出去又进来又出去,后在外面把老板打了一顿
  一个测试工程师走进一家酒吧,要了一杯烫烫烫的锟斤拷
  一个测试工程师走进一家酒吧,要了NaN杯Null
  1T测试工程师冲进一家酒吧,要了500T啤酒咖啡洗脚水野猫狼牙棒奶茶
  1T测试工程师把酒吧拆了
  一个测试工程师化装成老板走进一家酒吧,要了500杯啤酒并且不付钱
  一万个测试工程师在酒吧门外呼啸而过
  这是一个很有趣的笑话,前提是,你看得懂……
  看不懂这个笑话的人会觉得这一大段文字似乎有些——荒诞?
  是的,但是对于一个大型的,拥有足够多用户的软件产品来说,这个软件可能遇到的情况,也是”荒诞“的。因为一个软件开发者(团队),永远无法在测试中穷尽他们设计的软件会被怎样的使用,和遇到什么样的状况。
  复杂的比简单的更容易出错。这是真理。
  而大型软件项目,比我们日常能用眼睛看见的任何产品,都复杂的多。
  大多数对软件工程缺乏了解的人,可能会觉得一个软件似乎也没啥,不要钱,几分钟下载下来了,然后玩一玩似乎也不过如此,没什么了不起的……
  但是,很多这些很多人都看不上的不要钱的“小软件",其复杂程度都远远超过我们日常生活中的绝大多数实物产品。包括传统电视机,微波炉,空调…等等。
  软件产品是拜科技进步所赐,才会以如此低的成本走进我们的日常生活。
  所以,对于一款大型软件来说,没有bug是也许理论上可以,但是实际上完全不可能的事情。
  当然了,BUG也分大小,也有严重的或者不严重的。
  比如对于微软,在,大家也都习惯了不时地收到推送更新的通知了吧。系统要不断的打补丁,是修复其中存在的bug。但是,很多人也发现,似乎很多时候,不安装这些补丁,似乎也没有不能用这个windows系统了啊。
  是的,微软能发布一款大型软件,是已经做过了很多测试,基本上确保没有巨大的隐患和BUG之后才会发出的。但是正如上面所说,即使强大如微软,也无法穷尽所有测试的可能,这样的情况要在软件产品面市,有更多的用户参与使用之后才会逐步的暴露出来。
  如果发现问题怎么办?那改嘛。
  有些问题很严重,比如发现了一个安全漏洞,原来大家谁都不知道,也不会影响你的正常使用,但是一旦安全漏洞被曝光,有可能有黑客专门针对利用这个漏洞搞破坏。这样的BUG,修复的优先级非常高。甚至要动用媒体资源广告告知,请求用户即时升级系统,修复bug。
  也有的bug其实并不严重。在巨大的海量使用样本中被发现了,比如某种特定的操作,或者某些特别的按键等等前提下,有些应用会卡死啦,或者系统会崩溃啦,或者仅仅是造成一些说不清道不白的状况的事情啦……这些小bug如果定位了,还是会修复的,但是即时不修复,也不会对用户造成太大的影响。比如一个应用程序用着用着突然崩溃了,进程莫名其妙的消失了……
  一般来说,重新启动一次好了。谁知道为什么崩溃呢?这事儿真的很难讲。
  当然,如果经常崩溃,而且不同的用户在不同的场合用都经常崩溃,这个软件的开发者要小心了,再不赶紧修复bug,你的用户真要流失光了。