找回密码
 FreeOZ用户注册
楼主: DDD888
打印 上一主题 下一主题

[其他] 如果老板不同意我花时间写unit testing,该如何办啊?

[复制链接]
151#
发表于 27-12-2013 21:06:20 | 只看该作者

tdd 过程里的test case一般不会把整个系统所有case全部跑一遍。在提交代码或者甚至在做持续构建的时候才会全部跑。所以要求也没那么高啦
回复  

使用道具 举报

152#
发表于 28-12-2013 23:34:24 | 只看该作者
woodheadz 发表于 27-12-2013 21:06
tdd 过程里的test case一般不会把整个系统所有case全部跑一遍。在提交代码或者甚至在做持续构建的时候才会 ...

嗯。平常只要跑正在测的那个class的相关test。最后可能会跑一下全部的unit test。其它的交给build server。
话说全部unit test跑完也不用十秒那么多吧。这个系统看起来很复杂啊。
回复  

使用道具 举报

153#
 楼主| 发表于 29-12-2013 06:43:26 | 只看该作者
cais 发表于 28-12-2013 23:34
嗯。平常只要跑正在测的那个class的相关test。最后可能会跑一下全部的unit test。其它的交给build server ...

很不幸,我刚测试了下,我的unit test 包括测javascript正好花了我十一秒时间,当然我使用ncrunch在背地里跑,所以我也没有任何感觉unit test阻止了我TDD的开发

我没有build server,一个人的团队啦,连老板给我的计算机都是i3第一代,慢的很啦
回复  

使用道具 举报

154#
发表于 29-12-2013 07:57:52 | 只看该作者
提示: 作者被禁止或删除, 无法发言
十几秒算什么,我以前接受过的jee项目几千个test,各种界面和数据库mock,时间长了记不清了,反正跑下来起码几分钟。 我接手第一件事就是跑一下,发现有几百个红条在几千绿条里。我们试图‘修复’,搞了一两个星期也就没继续了,从此当他们不存在
回复  

使用道具 举报

155#
 楼主| 发表于 29-12-2013 08:53:48 | 只看该作者
black_zerg 发表于 29-12-2013 07:57
十几秒算什么,我以前接受过的jee项目几千个test,各种界面和数据库mock,时间长了记不清了,反正跑下来起码 ...

如果当他们不存在,其实说明写这几百个unit test是失败啦
回复  

使用道具 举报

156#
发表于 29-12-2013 10:41:18 来自手机 | 只看该作者
提示: 作者被禁止或删除, 无法发言
DDD888 发表于 29-12-2013 08:53
如果当他们不存在,其实说明写这几百个unit test是失败啦

写这几千个test的team就是失败,可以猜想的是开始时间多,有热情,就写了一堆,后来环境或者需求变化或者开发紧了,就什么也不管了。事实上那系统也真不怎么样,笨重,用户体验差,难以修改,创造了不少Gdp,折腾几年后客户另找别家了
回复  

使用道具 举报

157#
发表于 29-12-2013 12:47:02 | 只看该作者
DDD888 发表于 10-12-2013 09:03
为啥我该换工作啊?

你应该换换思维方式了。。。公司是老板的,你操那心干什么。。。要自己做研究自己私下搞就是,交任务就先忙任务,整自己那么累有什么含义。。。
回复  

使用道具 举报

158#
 楼主| 发表于 29-12-2013 17:45:12 | 只看该作者
samchen 发表于 29-12-2013 12:47
你应该换换思维方式了。。。公司是老板的,你操那心干什么。。。要自己做研究自己私下搞就是,交任务就先 ...

你的回答并没有解决我的问题呀

只要是程序员就应该写unit testing,除非不当程序员
回复  

使用道具 举报

159#
发表于 29-12-2013 23:46:32 | 只看该作者
LZ离这个100k+的工作已经不远了。
http://siliconbeachaustralia.org/jobs/jobs/senior-net-developer-2/
Requirements

Experience working on a large scale web application with strong exposure to dynamic, JavaScript-based UI’s.
Experience with Knockout, Angular or similar JavaScript architectures that rely on MV*.
A history of working with C# (ASP.NET MVC experience is preferred).
Experience with test-driven, agile development and a continuous integration build environment.
回复  

使用道具 举报

160#
发表于 30-12-2013 00:02:28 | 只看该作者
caoglish 发表于 26-12-2013 13:44
Nicholas C. Zakas:我得到的最佳职业生涯建议
http://blog.jobbole.com/53812/

读了一下英文版的,发现我以前好像读过一篇。可惜只记得第一个“Don’t be a short-order cook”。
都是挺不错的建议。
回复  

使用道具 举报

161#
发表于 30-12-2013 00:24:53 | 只看该作者
black_zerg 发表于 26-12-2013 11:00
I can see the point of doing unit testing for momonent or lodash, even jquery.

But have a look  ...
http://www.realfreemarket.org/blog/2012/07/12/test-driven-development-how-stupidity-spreads/

这篇文章基本上是在说他去面试的Startup如何不行,以及他个人对startup的怀疑态度。
文章中说的startup应该把钱用在刀刃上的观点,我赞同。但是作者直接就下了个定论说写test对于没有很多用户的产品就是浪费时间金钱,这个观点我是不赞同的。
且不说test可以确认产品的确按照期望正常工作,以增强开发者的信心。startup现在是讲究不断的加小feature,不停的release,看市场反应决定接下来做什么。这样的要求反而更加需要有test来做支持。如果需要每天release一次,难道每天都手动的把整个产品都测一遍吗?
你可以少写点test,但是完全否定test,是不可取的。至少要看你开发的是什么类型的软件。以前做过用waterfall做开发,一两年发布一次新版本,每次发布之前都是专门请很多tester来做测试,那样的确可以不用写太多的automated tests。
回复  

使用道具 举报

162#
 楼主| 发表于 30-12-2013 06:46:10 | 只看该作者
在写了五百个unit test以后,我发觉写unit test是可以上瘾的尤其是写非常简单的unit test,而且会很有成就感
回复  

使用道具 举报

163#
 楼主| 发表于 30-12-2013 06:49:25 | 只看该作者
这是我网上抄来的代码
http://stackoverflow.com/questio ... d-x-number-of-times

我稍微改写下
namespace xxx
{
    using System;
    using System.Text;

    public static class StringExtensions
    {
        public static string Repeat(this string input, int count)
        {
            if (string.IsNullOrWhiteSpace(input))
            {
                throw new ArgumentNullException("input");
            }
            var builder = new StringBuilder(input.Length * count);

            for (var index = 0; index < count; index++)
            {
                builder.Append(input);
            }

            return builder.ToString();
        }
    }
}
回复  

使用道具 举报

164#
 楼主| 发表于 30-12-2013 06:50:30 | 只看该作者
本帖最后由 DDD888 于 30-12-2013 06:52 编辑

我写的测试代码,这样一来,我就可以放心使用该代码啦,没有后顾之忧

namespace UnitTest.xxx
{
    using System;
    using Microsoft.VisualStudio.TestTools.UnitTesting;

    [TestClass]
    public class UnitTestStringExtensionsRepeat
    {
        [TestMethod]
        [ExpectedException(typeof(ArgumentNullException))]
        public void StringEmpty_ExpectedException()
        {
            "".Repeat(10);
        }
        [TestMethod]
        [ExpectedException(typeof(ArgumentNullException))]
        public void StringEmpty_ExpectedException1()
        {
            "   ".Repeat(10);
        }
        [TestMethod]
        [ExpectedException(typeof(ArgumentNullException))]
        public void StringEmpty_ExpectedException2()
        {
            string.Empty.Repeat(10);
        }
        [TestMethod]
        public void SingleCharacter_Expected3sameCharacters()
        {
            // Act
            var result = "1".Repeat(3);

            // Assert
            Assert.AreEqual("111", result);
        }
        [TestMethod]
        public void MultipleCharacters_Expected3Repeat()
        {
            // Act
            var result = "123".Repeat(3);

            // Assert
            Assert.AreEqual("123123123", result);
        }
    }
}
回复  

使用道具 举报

165#
发表于 30-12-2013 09:40:00 | 只看该作者
这帖子质量非常高啊
回复  

使用道具 举报

166#
 楼主| 发表于 30-12-2013 10:01:56 | 只看该作者
本帖最后由 DDD888 于 30-12-2013 10:04 编辑


诚实的说我现在的工资NZ$100k也就几个percent啦,所以那工作对我并没有吸引力啦,而且我还不能在家里上班,我有时还要去给儿子洗洗尿布啦
回复  

使用道具 举报

167#
发表于 30-12-2013 11:36:53 | 只看该作者
提示: 作者被禁止或删除, 无法发言
cais 发表于 30-12-2013 00:24
这篇文章基本上是在说他去面试的Startup如何不行,以及他个人对startup的怀疑态度。
文章中说的startu ...

http://www.contrariansoftware.com/2008/11/unit-testing-sucks.html
回复  

使用道具 举报

168#
 楼主| 发表于 30-12-2013 11:57:17 | 只看该作者
black_zerg 发表于 30-12-2013 11:36
http://www.contrariansoftware.com/2008/11/unit-testing-sucks.html

其实一切都是辩证的,所以一切都有两面性啦无所谓对或者错
回复  

使用道具 举报

169#
发表于 31-12-2013 00:48:05 | 只看该作者
DDD888 发表于 30-12-2013 11:57
其实一切都是辩证的,所以一切都有两面性啦无所谓对或者错

嘿嘿。文章里面最后一个评论讲得不错。
回复  

使用道具 举报

170#
 楼主| 发表于 31-12-2013 09:19:28 | 只看该作者
cais 发表于 31-12-2013 00:48
嘿嘿。文章里面最后一个评论讲得不错。

是的
回复  

使用道具 举报

171#
发表于 8-1-2014 23:17:53 | 只看该作者
老板水平配不上你,可以另攀高枝了
回复  

使用道具 举报

172#
 楼主| 发表于 9-1-2014 05:11:02 | 只看该作者
clarkli 发表于 8-1-2014 23:17
老板水平配不上你,可以另攀高枝了

老板一般都是不懂技术的啦,没得选择
回复  

使用道具 举报

173#
发表于 9-1-2014 08:47:11 | 只看该作者
DDD888 发表于 9-1-2014 05:11
老板一般都是不懂技术的啦,没得选择

老板懂技术的不多,其实有些懂技术反而不好,更挑剔也说不定

但是骑驴找马的思路总是没错的
回复  

使用道具 举报

174#
 楼主| 发表于 9-1-2014 08:53:37 | 只看该作者
planetkeeper 发表于 9-1-2014 08:47
老板懂技术的不多,其实有些懂技术反而不好,更挑剔也说不定

但是骑驴找马的思路总是没错的

是的,还是不懂技术的好
回复  

使用道具 举报

175#
 楼主| 发表于 19-1-2014 18:04:11 | 只看该作者
看了下,到现在为止,我写了785个测试

评分

参与人数 1威望 +20 收起 理由
cais + 20 恭喜你!

查看全部评分

回复  

使用道具 举报

176#
发表于 27-1-2014 07:18:03 | 只看该作者
本帖最后由 karl.lee.2004 于 27-1-2014 10:00 编辑
black_zerg 发表于 12-12-2013 09:49
spot on 所以你这两百多用例的产出就是发现了这两个实际根本不会发生的bug,这个时间也许不如用在学习或者思 ...


干的是小公司的活,怎麼反而有大公司的問題?

小公司的優越性和靈活性哪裡去了?

lz在用大公司、大項目的規範來要求自己,但自己卻沒有響應的資源可供使用。

我覺得苦惱的根源就在於沒有靈活變通,量體裁衣。

有認真想過J2EE這些技術、規範的i產生背景及適用範圍嗎?為啥大公司要用這些規範?既然有過大公司的工作經驗和切身體會,這些應該不難想通吧?

我忽然想到了一個解釋:lz這樣工作為的不是應付公司,而是對自己的一種要求,這也是一種追求。

這種解釋無敵了:)
回复  

使用道具 举报

177#
发表于 27-1-2014 07:36:39 | 只看该作者
ericvan76 发表于 12-12-2013 11:07
如果我写200个unit tests,那么大概就一定有两百个pattern各不相同的case。如果我是老板,我一定不愿意 ...

看來雖然lz的老闆不懂技術,但一些大是大非的問題還是考慮的很清楚的。

相比之下,lz看問題太過技術導向了,一直還在以自己會多少技術,用過多少工具沾沾自喜。

我不是在貶低lz,因為我自己曾經也是這樣的人。如果沒有經濟負擔的困擾,去做自己喜歡的事情(比如全職回學校進修),當個技術控未嘗不可。

而痛苦的根源就在於,一邊你付出自己的資源去做讓自己有存在感、成就感的事情,但卻發現這些付出是沒有回報的(或回報遠遠低於你的期望值,200刀的紅包?),一邊你作為一家之主,又因為經濟問題不得不向這種低迴報低頭。

說到底,這不是一個技術問題,而是你的人生定位問題。

我自己的經驗是,爲了家庭,拋卻自己的理想化情懷,做些實實在在的事情,把種子埋到內心深處。等到條件成熟了,再回過頭來重拾你的理想吧。

有感而發,如有冒犯,多多包涵。
回复  

使用道具 举报

178#
发表于 27-1-2014 09:26:53 | 只看该作者
DDD888 发表于 16-12-2013 09:08
谢谢,我感觉我做的是大项目啦

我现在做的网站的同样类似功能的项目在我以前曾工作的公司大概需要十个 ...

我覺得這幾天所發的帖子,好像都在針對lz,自己都有點不好意思。

但我確實覺得lz考慮問題的角度和自己有很大出入,所以也就冒昧給出自己的真實看法,希望和大家交流。我的經驗是,越是在問題看法差距大的地方,如果大家能坦誠交流,那大家的收穫也就越大。

在我看來,判斷項目的規模,比較有說服力的是根據hcm(head-count/month,也就是通常說的人月)來判斷。

所以之前有同學提過說一些小公司做的項目,擺到大公司,就是大項目了。這點我非常同意。因為同樣的事情讓水平高的人來做,可能一週時間就搞定,但換成水平一般的,可能需要一個月甚至更長的時間。那如果同樣以一個hcm來估值的話,可能牛人聚集的小公司做10個hcm的項目,大公司就要100個hcm了。

lz覺得自己做的是大項目,那是根據之前自己的工作經驗來評估。如果按照lz給出的信息,lz現在做的項目,應該是10人*24月=240hcm。如果我沒理解錯的話,lz的意思是240個hcm的項目,自己一個人可以搞定,除了藉助生產工具/技術的效率提升,還有就是自己的高超水平和超時工作。但自己的實際收入,卻是遠遠小於“以一敵十”的水平,因此內心非常不平。

從目前了解到的情況來看,一方面我認同lz的水平是要高於一般的senior software engineer(但要高出多少不好說,下面會繼續談),但另一方面,我認為lz的評估方法,似乎有需要更新的地方。

簡單來說,lz覺得如果同樣類似功能的項目,以同樣的技術(iis+asp.net+mvc)來實現,以現在市場上的報價還是需要240hcm嗎?不要忽略了IT產業的軟硬件升級給生產力水平帶來的提高。

可能當年的項目,放到現在來做,需要的只是50%的hcm;也可能同樣是240hcm的項目,但功能,界面及用戶體驗要比以前要求高出許多,複雜性已經不是當年可比。所以即使你現在做的還是當年價值240hcm的項目,但現在這種項目只值以前的一半了。

但無論如何,如果按照lz的給出的信息,你就算不是以一敵十,也是一個頂倆。

如果最終談判破裂,你離開公司,那公司就要短時間內在市場上找到N個人來填補你的空缺。精明的老闆權衡后覺得請N個人的成本及項目移交的風險要大於你的成本,那自然會漲你的工資,漲到讓你覺得滿意而公司又不至於成本大增導致利潤大幅下降(能開公司當老闆接項目的,在這方面會比你精明許多,這點不用懷疑);但如果老闆覺得你現在干的事情,市場上隨便找個人也可以做,你所創造的價值相比你給公司帶來的利潤,不是公司接受的回報值範圍,那你的離開,對於公司來說反而是更合理的選擇。

根據lz給出的30%的漲薪幅度,我覺得你在老闆心目中頂多值兩個人頭(N=2),遠遠不是你心目中以一敵十的理想狀態。老闆在job market方面的認識,應該遠遠高出你,無他,並不是說他就比你聰明,而是他掌握的信息和你不是一個數量級的。

可能你技術水平確實很高,但小公司每個項目用到的,只是你知識水平的30%不到,其他的諸如support之類的只是體力活。但對你而言,因為你做的項目多而且雜,所以你必須不斷學習新的技術,而這些學習的成本,公司是不考慮在內的。而且你本身對技術有追求,無形中也加大了你的負擔和期望。

舉例來說,對公司而言,他在做項目A時,只需要一個普通的web developer,做項目B時,需要android developer。這裡的關鍵是,做完項目A,他就不再需要web developer了,他要的只是一個technical support就夠了。同理,做完項目B后,他也不再需要android developer了。

所以平均下來,公司需要的只是普通的web developer(一段時間)+android developer(一段時間)+QA(一段時間)+technical support(長期),所以這也是你給公司帶來的價值。所以公司給你的薪水,已經是當中的一個加權最高值了。

可能對公司而言,team leader + contractor的模式更經濟。而對你而言,能者多勞,但多勞而不多得,關鍵在於公司剝削了你成為“能者”所付出的成本。

水平有限,寫了一大堆自以為是的東西,希望lz不要見怪。

如有冒犯,多多包涵。
回复  

使用道具 举报

179#
发表于 27-1-2014 09:57:37 | 只看该作者
牛人聚集,精彩紛呈:)

沒想到來到澳洲后,反而重燃了對代碼(尤其是js)的興趣。

评分

参与人数 1威望 +20 收起 理由
cais + 20 恭喜你!

查看全部评分

回复  

使用道具 举报

180#
 楼主| 发表于 27-1-2014 20:36:19 | 只看该作者
karl.lee.2004 发表于 27-1-2014 09:26
我覺得這幾天所發的帖子,好像都在針對lz,自己都有點不好意思。

但我確實覺得lz考慮問題的角度和自己 ...

其实说了这许多,你忘了一点,那就是这社会是不公平的,并非多劳多得(不是说世界上最富的几十个人拥有全世界一半穷人拥有的财富)

其中有许多运气,为啥美国大银行的老板可以拿两千万美元一年,是否他花的智力和工夫就比我写个网站多?我能做的只是多提高自己的水平和作贡献和等待机会
回复  

使用道具 举报

您需要登录后才可以回帖 登录 | FreeOZ用户注册

本版积分规则

小黑屋|手机版|Archiver|FreeOZ论坛

GMT+11, 2-11-2024 15:37 , Processed in 0.062253 second(s), 47 queries , Gzip On, Redis On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表