Aviv Osherove was born on Passover eve, April 8th, 2009. “Aviv” means “Spring” in Hebrew, as passover marks the beginning of spring. His big brother, Itamar, seems to be welcoming him with open arms!
It’s been a rough couple of weeks but things are starting to fall into place again. Having two kids is definitely more awesome than one. I am told :)
So far aviv does a lot of this:
while his brother itamar (2.4 years) does lots of this:

It was fun doing ALT.NET in Israel again. For those of you who didn’t make it, Gadi has a very good play by play list of posts in hebrew (one, two, three, four, five, six, seven). Thanks to SELA for donating the classes, and thanks to Typemock for the food!
I am still fusing my thoughts about what I think the outcomes were. will blog when I have something of meaning to say.

here is a glimpse of the feature the guys are working on at the moment. I call it “Placeholder Arguments”. It’s a variation of the “how do you allow the user to check parameters passed to a method?” question when working with isolation frameworks. We implemented a suggestion from Vagif Abilov, one of our Typemock Insiders.
The idea is pretty elegant, really – allow the user to define (inside the lambda expression) ”placeholder” arguments, that can then be checked in a custom delegate provided by the user. Then, you can call the method with a combination of “real” and “placeholder” arguments, and “real” ones will not be checked by default. Only the placeholder ones can then be used in the custom argument matcher the user provides.
This should be out in the coming weeks.
Just a quick reminder: ALT.NET Israel II is happening TODAY at 18:30 at SELA.
Register on the facebook page, and more details (without needing facebook) here.
Here are a couple of Conference T-Shirt ideas I had that I wanted to make:
- “Legalize unit testing”
- “I broke the build”
- “I Mock You”
- “I’m Mocking this”
- “I do B(eer)D(riven)D(evelopment)”
- “I fail first”
- “I fail early and often”
- “I like to reflect on private members”
got any more?
Watch previous videos:
In this video I go over the tests for Microsoft Unity Application Block.
Overall the quality of the tests in Unity is pretty good! I could certainly recommend that people look at them as examples of a bunch of tests against a framework, which are mostly very readable and maintainable.
Things I walk through:
- Using [Ignore]
- exploration testing
- magic numbers and strings
- un-needed asserts
- Stub hard coded behavior
- handling config files in tests
- Asserts hidden in a utility method
- more naming conventions
- Separating integration tests
- “smart” code that is less readable
- Meaningless “isNotNull” tests
- cleaner ways of expecting exceptions
See other reviews:
Here’s the second video review of Unit Tests. This is another one written by Microsoft – ASP.NET MVC (source).
First, it’s important to state how surprised I was by the high quality of the tests in MVC. The tests are readable, maintainable and trustworthy, with very little issues that I could find. whatever Issues I found are rather easy to fix. In any case, if one is looking for examples of systems written in what seems almost entirely in TDD, or at the minimum with very good testing guidance, ASP.NET MVC should be a good stop to look at.
Issues discussed in this video:
- Implementing RowTest with MSTest, and the importance of naming (14:00)
- Verify() that is splitted from the mock expectations (17:00)
- some naming conventions
- Over-specification in tests (mainly more than one mock object per test)
- verifying mocks when it’s not required
- logic inside tests (concatenation)
- test factory methods with too much logic
- a very good example of when multiple asserts is really bad (11:50)
Again – I’m very pleased with the test quality. Now is the time to make sure the things above are fixed. they are still important!
I’ve decided to start doing some test reviews of tests that I see in the wild. I figured it’s the best way to show people what I mean when I say they do not have readable, maintainable or trustworthy tests.
The first episode is the review of the tests from the NerdDinner MVC source code. It’s 30 minutes long. and it was shot at 2AM, so I’m quite cranky. But the tests sure don’t try to ease my mind, and only make me crankier.
If you have tests you’d like me to review send an email to Roy AT osherove.com with the subject “Test Review [project name]”
problems that are dealt with in this video:
- Naming conventions
- Magic strings in tests
- Hard coded values in hand written stubs
- Magic assertions (expecting a value that no one understand why it should be that value)
- Lack of tests
YOU CAN NOW REGISTER HERE
I’ll just repost this in Hebrew:
בשעה טובה ומוצלחת אני שמח לבשר על כנס alt.net israel השני
מיקום הכנס:
כמו בפעם שעברה, יתקיים הכנס בבית קבוצת סלע בבני ברק, ליד קניון אילון. תודה לאנשי קבוצת סלע על ההיענות לאירוח.
פרטים על סלע כאן: http://www.sela.co.il/, ומפת הגעה כאן: http://www.sela.co.il/?CategoryID=1295&ArticleID=642
מה בתוכנית?
יום חמישי 02/04 - יום התכנון
18:30-19:00 התכנסות, רישום וכיבוד קל
19:00-20:30 פגישת תכנון וקביעת הנושאים לדיון ליום הדיונים
20:30- ... המשך לא פורמלי באחד מבתי הקפה / פאבים באיזור
יום שישי 03/04 - יום הדיונים
09:00-09:30 התכנסות, רישום וכיבוד קל
09:30-09:40 שיחת פתיחה
09:40-10:50 סבב דיונים ראשון
11:00-12:10 סבב דיונים שני
12:20-13:30 סבב דיונים שלישי
13:30-14:00 ארוחת צהריים
14:10-15:20 סבב דיונים רביעי
15:20-16:30 סבב דיונים חמישי
16:30-17:00 פגישת סיכום
17:00- ... המשך לא פורמלי באחד מבתי הקפה / פאבים באיזור
יתכנו שינויים קלים בשעות הללו, עקב הגמישות של הפורמט. אנא עקבו אחרי רשימת הדיוור הזו ואחרי הבלוגים של המארגנים (רועי אושרוב, ליאור פרידמן וחן אגוזי) על מנת להישאר מעודכנים.
http://imistaken.blogspot.com/
http://weblogs.asp.net/rosherove/
http://www.kenegozi.com/blog
אזהרת מזג אויר:
מפגש התכנון בחמישי בערב יתקיים על גג הבנין. יתכן שיהיה קריר אז מומלץ לבוא בלבוש חם.
כמה מילים על הפורמט:
הכנס הזה לא דומה לכנסים אחרים שאתם מכירים.
לא מדובר בהרצאות פרונטליות, בהן מספר מצומצם של אנשים בא ללמד את המשתתפים, אלא בדיוני "שולחן עגול".
התכנים נקבעים על ידי המשתתפים (זה כולנו) ולא על ידי המארגנים בלבד.
לכן חשוב להגיע לפגישת התכנון - אז יקבעו תכני הדיונים ליום שישי.
מי שרוצה ללמוד עוד על הפורמט מוזמן להיכנס ללינקים שמופיעים בהמשך, ו/או לחפש על ALT.NET ו ALT.NET conf במנוע החיפוש החביב עליכם (גוגל, cuil, delver, live, yahoo ושאר החבורה)
תחומי עניין:
מטרת הכנס והקהילה בכלל היא לעורר שיתוף ידע והתדיינות פתוחה בין חברי הקבוצה.
על מנת לסייע בכך, נבקש מכל אחד מהמשתתפים לשלוח לקבוצה הזו (או אלי לדואל) את הפרטים הבאים:
1. שם המשתמש איתו אתם מזוהים ברשימת הדיוור הזו
2. שם אמיתי בעברית (או כינוי בו מכירים אתכם - כמו של Ayende Rahien למשל)
3. כלי פיתוח מעולם ה .net בו יש למשתתף מומחיות מיוחדת ו/או עניין מיוחד (על מנת לעזור ביצירת דיונים סביב נושאים אלו)
אנו נשתדל שיופקו מדבקות עם השם ותחומ/י העניין, שכל אחד ידביק על חולצתו במהלך הכנס
וכך המשתתפים יוכלו לפנות בשאלות האחד לשני במהלך ההפסקות, בזמן האוכל, בדרך לשירותים או בפקקים בדרך הביתה
עזרה:
למי שיש ויכול להביא מצלמות לתיעוד האירוע (גם סטילס אבל עדיף וידאו דיגיטלי) זה יהיה מצויין. המטרה היא להעלות וידאו של כל מפגש ומפגש לאתרי השיתוף השונים. גם מצלמת סטילס דיגיטלית שיודעת לצלם וידאו סביר על כרטיס הזיכרון באה בחשבון.
לינקים רלוונטיים:
http://altnetpedia.com/OverviewWhatIsIt.ashx
תיוג:
למי שכותב בלוג, מסמן לינקים בטקנורטי/דלישס/רדיט/דיגיט/אתר-הלינקים-של-מוישל'ה,
נבקש להשתמש בתג alt-net-israel על מנת שנוכל למצוא ברשת מידע alt.net-י בעברית בקלות
פרסום:
נהניתם? ספרו לחברים שלכם. לא נהניתם? חפשו ת'חברים שלכם. סתאאם. הקהילה מעצם טבעה פתוחה מאוד לביקורת בונה, וכולנו נשמח לשמוע הצעת לייעול / שיפור / שפצור ותחבור. (יש מילה כזו?)
ספרו לאנשים שאתם חושבים שזה מעניין אותם על קבוצת הדיוור הזו, ועל הקהילה בכלל. מגיע לכולם להנות, לא?
אז איפה נרשמים?
בימים הקרובים נפרסם קישור להרשמה. שמרו על עין פקוחה והירשמו בהקדם (עם פרסום הקישור) כי מספר המקומות מוגבל בסופו של דבר.
אז למי שמגיע לכנס - נתראה שם, ולמי שלא - נתראה בפעם הבאה.
We’ve come to a nice way of deciding upon features in the Isolator API. This is what happens when your end product is an API for programmers.
First, we realized that we must argue about it. For each type of new feature in the isolator API, we put up on the white board several version of the API that we can’t seem to decide about, and then ask everyone on the team to say what they think. If everyone agrees, then we ask people to defend the opposite side and explain why an API is not good.
We came to several agreed upon values for the C# API, that help us judge the usability of it:
- Consistency – is the new API consistent with the other APIs that already exist, or does it go against the regular way things are done?
- Discoverability – If a user knew they wanted to do thing X, would they know to use the API without help? simply from intellisense?
- Explicitness – we decided early on to be as explicit as possible about the API, so that the least guessing needs to take place by the user
- Single point of entry – everything should start from a single point (Isolate.Something())
- Readability for the reader, not the writer (if you didn’t write the test would you find it easy to understand what it does?)
- Single way to achieve things – is there more than one way to do a task with the new API?
- Backwards compatibility – do we break an existing feature and cause some heartache for users?
We measure the various versions of an API by putting it in a matrix and setting “V” or “X” on each of them (if we can’t agree it’s a V with a line on it).
then we have a better idea of what makes more sense.
I admit we still haven’t come up with a single set of values for the VB API, but I’ll try to define it here:
- Does not require use of Action<T>
- Consistent with the way a VBer would use other APIs
- Explicit
- Readable
- Single way to achieve things
- Backwards compatible
note that “single point of entry” is not included. That was a design decision we made early on.
More Posts
« Previous page -
Next page »