Making jade and mustache templating work together
One our frustrations using jade and icanhaz (a javascript front end mustache implementation) was that when we were trying things that were obvious to us, jade would simply fail to template and we weren’t sure what was causing it.
Fortunately small TDD cycles and experimentation made us realise that it was the combination of new line characters and mustache code made jade work/break.
We would try something like this:
script(type="text/html", id="my_checkbox", class="partial")
li
label(for="{{code}}")
{{name}}
input(id="{{code}}", checked="checked", name="{{code}}", type="checkbox")
The set of statements above would be valid mustache (once converted to HTML) but jade complains because the {{name}} is on its own line. The fix was to use the pipe (|) character to force jade to recognise a line break. It looks like this now
script(type="text/html", id="my_checkbox", class="partial")
li
label(for="{{code}}")
| {{name}}
input(id="{{code}}", checked="checked", name="{{code}}", type="checkbox")
Simple, but not particularly obvious from the examples in their documentation.
TeamForge for Free…That’s Right, Free. With CloudForge.
Today is a big day for CollabNet. We just announced some exciting, disruptive changes to CloudForge™ pricing and packaging. We’ve also made TeamForge® available to all CloudForge users, giving them access to the same rich template capabilities that our TeamForge users have had for years. I’m pleased to report that initial feedback on this development is quite positive.
The new version of CloudForge offers unlimited free TeamForge projects within CloudForge, through a defined and streamlined set of TeamForge capabilities. These features will allow users to get started in minutes with an SaaS-based TeamForge model in the cloud. Then, when they’re ready, users can simply add more security and features, to seamlessly scale to enterprise levels as their needs grow.
Our TeamForge platform is by far the most sophisticated and scalable cloud-based development and deployment platform in the market. It’s been in use by a wide range of organizations in diverse industries for 14 years. Our enterprise TeamForge clients have for years had the ability to codify the “right set” of templates to create standards for embedded/mobile/web applications, client-server development processes, and more. Now CloudForge users will have access to the same template capabilities, at no additional cost.
These templates comprise TeamForge tools, third-party tool integrations, data models and workflows, application frameworks, and deployment infrastructures. They are designed to enable repeatable, measurable software development processes for the workgroup.
I’m proud that we are taking our 14 years of TeamForge enterprise experience and bringing it into the context of modern cloud-based freemium and streamlined product availability. It’s a reflection of our mission to help enterprises deliver great products to market faster, and it’s a key part of our 2013 strategy. I won’t reveal all of our goals in this post, but there will be additional releases coming out later this year and I look forward to telling you more about them as we progress further down this path.
The post TeamForge for Free…That’s Right, Free. With CloudForge. appeared first on blogs.collab.net.
1.9.7 Released (2013-05-21)
Long Ticket List? Tag with Features, Teams, Clients
If you have more than 30 open tickets, you will need a good way to filter them by feature, team, or client. You should use the new Tag feature.
Adding TagsNow, you can enter tags on a Ticket. As you add tags, you will build a tag cloud in your popup tag selector.
You can use these tags to see the tickets that you want to work with.
In the LIST view, you can quickly open the sidebar and select a tag.
On the CARDWALL, the tag selector makes it easy to see the current tasks for a team, feature, or client.
On the PLANNER, you can quickly select a tag (on top of the new column). You will see backlog and current tickets that match that tag. The shorter list will be much easier to sort, and your new tickets will automatically match your tag. What happens if you sort the tickets in this filtered view? We put a lot of work into an algorithm that we call “ladder sort” which keeps the same slots in the big list by swapping tickets in the filtered list.

You can tag and filter your tickets with a custom list field, or “component”. Why use tags?
* You can add multiple tags tags to one ticket. So, you can easily tag a ticket as being from Client A, for Feature team 1. In the old system, you would need to create two custom fields to do that, and you would need to plan those categories in advance.
* Users can add new tags when they need them. You want a limited number of tags so that the tag cloud will be readable, and so that you do not have to hunt through too many tags. So, we give you the option of marking tags as “hidden” from the tag selector. They are still available for the team members that need them.
* We are using tags as quick filter on top of cardwall and planner.
You can add tags to tickets as you need them. Then, you can start using the tags in the list filters, Planner, and Cardwall views. After you have a coherent set of tickets for a client, project, or a team, you can make child project views in Space Manager.
Or, you can manage your tags to add better structure. As a space owner, you can add and manage tags in the ticket settngs view. You can “hide” tags that are not used very often, and keep your tag selector clean. You can use batch update to apply tags to your existing tickets
When you create a child space in the Space Manager, you select the tag a tag for that child space. It will show tickets with the related tag. You can also create new tools, or share tools with the parent space.

Each team lead, works prioritizing their work in the child space view, while our VP and CTO work on the master space that holds all child space tickets. This gives you a way to break out of one space and make your project much more expandable.
One team working with many clients or systems
Do you have one team or designer that is working on requests from multiple clients or projects? In most agile planning systems, it is difficult to prioritize these requests. You need separate collaboration spaces and separate planning sessions for each project. What you want is a system that collects all of the requests in one place, so you can prioritize them into one backlog.
With Space Manager, you can create a child space for each client or project. Then, invite the stakeholders to the child spaces. They can add tickets and sort tickets and discuss tickets. Those tickets will automatically be tagged with the selected client tag for that child space. The client stakeholders will not see activity from all of the other clients or projects. However, in the parent view, you
For maximum scalability, you can use both forms of organization at the same time. You can take tickets from client spaces, and distribute them to team spaces. If you have a Portfolio plan, you can create a child space for each of your clients. From the parent space, you can add a tag for the feature team that will work on that client request.
In this way, you and your client will be updated in one space, and the dev team can start to work on it right away in a different space.
Want to try the new Space Manager for handling big backlogs from multiple teams or clients? It is in the new Portfolio feature pack. You can now add a Portfolio Feature Pack to your subscription for a reasonable, fixed price. The user who is set as the Payer for your Assembla account can easily add the Portfolio Pack now in their Account page.
Extending the Value of APM
When it comes to managing application performance and optimizing end user experience, enterprises must shift left in order to identify, remediate and validate application behavior before deployment. While APM is a critical technology in the application life cycle, relying on APM alone for performance management is risky. Monitoring tools are critical to knowing how an application is performing and capturing the occasional unforeseen issue. However, APM is not a substitute for testing. When it comes to delivering better performing applications, the value of APM can be extended by ensuring performance before you deploy.
On this interview-style, recorded webcast, hear from two APM and network virtualization experts on how you can extend the value of your APM investments:
- find issues before customers are impacted
- reduce unexpected downtime or slowdowns
- identify, isolate, and resolve problems faster
- improve application performance
Watch the webcast: Extending the Value of APM
Dave Berg and Marty Brandwin answer:
- Why isn’t APM delivering on the promise of better performing applications?
- Even though APM helps reduce unexpected downtime and resolve problems, performance is not improving. Why not?
- Why would I want to manage performance differently when I’ve been relying on APM for so long?
- Where does APM fit in the complexity of today’s application architectures and supporting infrastructure?
- What tools and techniques are needed throughout the application life cycle in addition to APM?
- How does testing help APM?
Marty Brandwin (left) and Dave Berg (right)
Featured presenters:
Dave Berg is the Vice President of Product Strategy at Shunra. He is responsible for the management of all Shunra’s products and technical partner relationships, and he leads our product management team. With more than fifteen years of experience in performance engineering, development, automation, vendor management, and professional services, Dave has extensive experience with distributed systems, real-world scenario testing, and complex root cause analysis. He is regarded as an expert in protocol design, mobile performance, and software performance engineering. Dave holds a bachelor’s degree in Computer Science and Discrete Mathematics from the University of Michigan, as well as holds certifications in product management and Agile product management. Dave has worked with dozens of Fortune 100 companies on their performance management strategies. Click his picture to connect with him on LinkedIn.
Marty Brandwin is Shunra’s Vice President of Marketing and a veteran software marketing expert with more than 16 years of experience conceptualizing and implementing integrated marketing programs targeting multiple vertical markets and Fortune 1000 companies. Marty has developed and managed demand generation and social media marketing programs that have garnered national recognition and earned him nomination to the CMO Council. Marty worked in the APM market as it started to take off and understands the promise of monitoring as a component of delivering better performing applications. Click his picture to connect with him on LinkedIn.
Webinar Recording – Use the Windshield, Not the Mirror Predictive Metrics that Drive Successful Product Releases
Thank you to everyone who participated in the “Use the Windshield, Not the Mirror Predictive Metrics that Drive Successful Product Releases” webinar. The recording is now available if you weren’t able to attend or if you would like to watch it again.
Sharon Niemi, Practice Director of SQA, talks about how the right combination of predictive and reactive metrics can help you build a measurement portfolio that improves product quality and release consistency. You’ll learn how to build a measurement system that incorporates leading and lagging indicators to improve your team’s consistency in delivering quality products on time and within budget. Near the end, Jeff Amfahr, Director of Product management at Seapine Software, demonstrates how Seapine’s TestTrack solution for product development processes makes capturing and reporting on these metrics possible.
Share on Technorati . del.icio.us . Digg . Reddit . Slashdot . Facebook . StumbleUponThe New Virtual Table Server (VTS) in LoadRunner 11.52
Contributor: Zhi-Yuan Jing (Known as Jason), HP LoadRunner RnD
As part of the new version 11.52 of LoadRunner we have created a new virtual table server (VTS).
Today we will share with you what is VTS and how you can take advantage in this important feature.
For those who have never use VTS before, Virtual Table Server (VTS) is a tool that shares data and parameters between LoadRunner vusers.
Read the full blog to learn more about the "New Virtual Table Server (VTS) in LoadRunner 11.52"
Functional Testing with the Telerik Testing Framework
[NOTE: This is a guest post from Telerik’s own Phil Japikse, one of Telerik’s Senior Developer Evangelists."] Background
User Interface testing isn’t just for quality engineers. It’s vital for developers to own part of this process as well. The days of development silos are long gone (or at least should be!) The process of throwing bits “down the line” is fraught with inefficiencies.
Developers are already adopting unit testing in record numbers, and this has led to a phenomenal increase in code quality. Why should it stop there? Developers need to also take ownership of the user interface code just like the line of business code that they develop.
Is this to say that we don’t need quality engineers? Absolutely not! What I am saying is that developers should ensure that the basic elements of the user interface are correct, and the process for testing these basic elements need to be automated just like standard unit tests are automated. Enter the Telerik Testing Framework
Telerik’s Test Studio has an extremely powerful record/replay capability. Did you know that Test Studio’s underlying Testing Framework also provides the ability for developers to write UI tests with most of the common unit testing frameworks? In this post, I am going to show you the basics of writing functional tests with MbUnit and Gallio, leveraging the power of the Telerik Testing Framework. The System Under Test
For this example, I am going to use a standard ASP.NET MVC application. The test is simple:
- Click on the Log On link
- Assert that the page changes to /Account/Logon
- Find the User name text box, and enter the text “admin”
- Find the Password password box, and enter the text “foo”
- Find the Log On button, and click it
- Verify that the resulting page contains the text “The user name or password provided is incorrect”
There is a little bit of housework that needs to be done before this test can be developed. This isn’t much different than what you need to do to create a test project for standard unit tests, there are just a few more steps. You need to create a unit test project, select a unit test framework, add the Telerik Testing Framework references, and finally create a class that derives from the BaseTest abstract class provided by the Telerik Testing Framework. Selecting a Unit Test Framework
The Telerik Testing Framework works with any .NET unit testing frameworks. I typically use MBUnit/Gallio in conjunction with the Telerik Testing Framework to leverage the Gallio report writer, which I will demonstrate in a future post. Adding the Telerik Testing Framework References
There are two references that need to added to the test project. Right click on the test project, select “Add Reference…”, click “Browse…”, then navigate to “C:\Program Files (x86)\Telerik\Test Studio\Bin\” and select:
· Telerik.TestingFramework.Interop.dll
· ArtOfTest.WebAii.dll Deriving from the Test Studio BaseTest Class
Listing 1 shows the default implementation that is needed to use the Telerik Testing Framework in unit tests. To write tests leveraging the Telerik Testing Framework, this is the minimum code that needs to be implemented in the base class that TestFixtures will inherit.
public class WebAiiUITestsBase : BaseTest
{/// <summary>
/// Initialization for each test.
/// </summary>
[SetUp]
public void MyTestInitialize()
{// Initializes WebAii manager to be used by the test case.
// If a WebAii configuration section exists, settings will be
// loaded from it. Otherwise, will create a default settings
// object with system defaults.
// Pass in 'true' to recycle the browser between test methods
Initialize(false);
// If you need to override any other settings coming from the
// config section or you don't have a config section, you can
// comment the 'Initialize' line above and instead use the
// following:
/*
// This will get a new Settings object. If a configuration
// section exists, then settings from that section will be
// loaded
Settings settings = GetSettings();
// Override the settings you want. For example:
settings.DefaultBrowser = BrowserType.FireFox;
// Now call Initialize again with your updated settings object
Initialize(settings);
*/
// Place any additional initialization here
}
/// <summary>
/// Clean up after each test.
/// </summary>
[TearDown]
public void MyTestCleanUp()
{// Place any additional cleanup here
// Shuts down WebAii manager and closes all browsers currently running
// after each test. This call is ignored if recycleBrowser is set
this.CleanUp();
}
/// <summary>
/// Called after all tests in this class are executed.
/// </summary>
[FixtureTearDown]
public void FixtureCleanup()
{// This will shut down all browsers if
// recycleBrowser is turned on. Else
// will do nothing.
ShutDown();
}
}
Listing 1 – The base class for Test Fixtures Creating your first Unit Test
Start by creating a standard Test Fixture, with two distinctive changes:
· The fixtures must be set to Single Threaded (due to limitations in how browsers and the Windows User Interface work)
· The fixtures must derive from our base class (created above)
Once those two changes are completed, unit tests can be added in the standard manner, as shown in Listing 2.
[TestFixture, ApartmentState(ApartmentState.STA)]
public class LoginUITests : WebAiiUITestsBase
{[Test]
public void Should_Fail_Log_In_With_Bad_Username_Or_Password()
{}
}Listing 2 – Modified Test Fixture and Single Unit Test Starting the Browser
The first step in testing a web application is launching a browser. The Telerik Testing Framework supports a number of browsers (assuming they are installed on the system running the unit test), as shown in Figure 1.
Figure 1 – The Browser choices
Navigating
Once the browser is launched through the manager, the browser instance gets assigned to the ActiveBrowser property of the BaseTest class. The ActiveBrowser exposes quite a few properties and methods, and I am only going to scratch the surface in this post.
The first thing I need to do is to navigate to the website I am testing. In my particular scenario, the url is “http://localhost:3916/”. Since all of my tests will start with this address, I add a property to my base class, as in Listing 3.
protected string _coreUrl = "http://localhost:3916/";
Listing 3 – Home Page for the site under test
My test now looks like Listing 4, which is how each of my tests begin.
[Test]
public void Should_Fail_Log_In_With_Bad_Username_Or_Password()
{Manager.LaunchNewBrowser(BrowserType.InternetExplorer);
ActiveBrowser.NavigateTo(_coreUrl);
}
Listing 4 – Creating the Browser and Navigating to the Start Page
You might be wondering why I don’t move those two lines into a TestSetup method. While the full answer is too long and off topic for this post, I feel that TestSetup methods obfuscate the tests and become a problem leading to fragile tests. Finding Elements on the Page
The Telerik Testing Framework supplies an extremely robust mechanism for finding elements on a page. The methods are generic, which enables Test Studio to return strongly typed elements. For example, the first item that I need to find is the HTML Anchor that has the inner text “Log On”. If the element is found, the Find process will return an HTMLAnchor class that exposes (among other elements) a Click() method. The next step is to verify that the logon page is loaded, and I use the ActiveBrowser.Url to assert that condition. This is shown in Listing 5.
Find.ByContent<HtmlAnchor>("Log On", FindContentType.InnerText).Click();
Assert.AreEqual(_coreUrl + "Account/LogOn",
ActiveBrowser.Url);
Listing 5 – Clicking an HTMLAnchor and validating the result
The next steps are to find the text box and the password text boxes, and enter the user name and password as defined in the spec. For these, we will FindByName instead of FindByContent, since we know the form values are named. With the strong typing of the Find methods, we can then set the Text property for each of the controls. The last step is to submit the entered values by finding the HTMLInputSubmit button. This code is shown in Listing 6.
Find.ByName<HtmlInputText>("Username").Text = "admin";Find.ByName<HtmlInputPassword>("Password").Text = "foo";Find.ByAttributes<HtmlInputSubmit>("Value=Log On").Click();
Listing 7 – Entering and submitting values Validating the Result
The final step in our spec is to verify that the web page shows the correct error message, and we again call on the ActiveBrowser object to validate that the page contains the text that we are looking for, as shown in Listing 7.
Assert.IsTrue(ActiveBrowser.ContainsText("The user name or password provided is incorrect"));
Listing 7 – Asserting the Text in the webpage
The completed test is shown in Listing 8
[Test]
public void Should_Fail_Log_In_With_Bad_Username_Or_Password()
{Manager.LaunchNewBrowser(BrowserType.InternetExplorer);
ActiveBrowser.NavigateTo(_coreUrl);
Find.ByContent<HtmlAnchor>("Log On", FindContentType.InnerText).Click();Assert.AreEqual(_coreUrl + "Account/LogOn", ActiveBrowser.Url);
Find.ByName<HtmlInputText>("Username").Text = "admin";Find.ByName<HtmlInputPassword>("Password").Text = "foo";Find.ByAttributes<HtmlInputSubmit>("Value=Log On").Click();Assert.IsTrue(ActiveBrowser.ContainsText("The user name or password provided is incorrect"));}
Listing 8 – The completed test Summary
This post merely scratched the surface of what the Telerik Testing Framework provides to developers. Testing really needs to become a way of life for all aspects of software development, not just the quality engineers. Remember, if you don’t test it, your users will! Next Steps!
Telerik’s Testing Framework is freely available for download from the product’s home page. You can immediately start writing functional tests for your HTML, Silverlight, or WPF applications! Want someone on call to help you with issues? Get a year of top-notch support from Telerik’s amazing support crew for only $299. (More details at the product’s home page.)
Why not go give the Telerik Testing Framework a try?
About the authorPhilip Japikse
Philip Japikse is an international speaker, a Microsoft MVP, INETA Community Champion, MCSD, CSM/ CSP, and a passionate member of the developer community, Phil has been working with .Net since the first betas, developing software for over 20 years, and heavily involved in the agile community since 2005. Phil works as a Senior Developer Evangelist for Telerik's RadControls for Windows 8 as well as the Just family of products (JustCode, JustMock, JustTrace, and JustDecompile) and co-hosts the Hallway Conversations podcast (www.hallwayconversations.com). Phil is also the Lead Director for the Cincinnati .Net User’s Group (http://www.cinnug.org). You can follow Phil on twitter via www.twitter.com/skimedic read his Telerik blog at http://blogs.telerik.com/skimedic and his personal blog at www.skimedic.com/blog.
Testing the Limits with Jonathan Kohl – Part I
Our Testing the Limits guest this month is Jonathan Kohl, a consultant and technical leader who writes and speaks on a wide range of software development and testing topics.
In this interview we talk to Jonathan about his passion for the field, what’s changed over time, his take on mobile app testing and his advice for new and seasoned testers. To learn more about Jonathan visit his website or follow him on Twitter @jonathan_kohl.
********
uTest: I think it’s safe to say that you’ve jumped into the world of software development and testing whole-heartedly. What drew you to this field and how do you stay passionate about it?
JK: The bottom line: I love to build things, and creating great software with a talented team is incredibly rewarding. Knowing that we have created something that helps make people’s lives easier is gratifying. I have found an ideal mix of problem solving, technology, creativity and satisfying and impressing customers in the software development industry.
I have great friends in the industry, and we keep each other sharp, and work on side projects together. We can talk about the latest technology, tease each other about programming tools we like and dislike, or branch off into just about any topic when we’re together. We also serve as a great support network for each other when someone is struggling, either technically, or personally. When we are working together to solve a difficult problem, nothing describes that energy of collaborating and working past your weaknesses, and that triumph of shipping working software at the end.
I ended up in this field by accident – I got lost on my way to law school. In the mid 90’s, I had three university professors who were incredibly influential: Dr. Michael Kubara (Philosophy), Dr. John Rutland (Management) and Dr. David Cowan (Mathematics). I was taking logic and philosophy classes from Dr. Kubara, and he told me to talk to a Math professor because I was delving into territory that he didn’t have expertise in. Dr. Cowan was teaching me Linear Algebra at the time, and jokingly said: “What are you doing with this ancient logic when the real research is in computer science?” Dr. Rutland had us study Data General for his class, and I was reading Tracy Kidder’s book The Soul of a New Machine. The quirky nature of the technical people in the book appealed to me (I was playing in a band at the time, and read legal journals and philosophy papers in my spare time, yes, I was pretty quirky myself) and I loved the elegance of logic, and the questioning nature of philosophy. I agreed to try out a computer science class, and ended up getting sucked into an internship at a software company not too long after learning to code.
The software company reminded me of what I had read in Kidder’s book Soul of a New Machine, particularly the interesting, intelligent technical people. I enjoyed hanging out with them, and working on really difficult problems. I loved the fast paced, work-hard, play-hard culture of a software startup. I’ve stayed here ever since, with a brief trip back to university to finish off my undergrad degree. Once in a while I am tempted to pursue the law degree again, but I am invariably sucked back into a great project or opportunity.
uTest: You were an early adopter of Agile and later started talking about “post-Agilism.” What are your thoughts on the Agile movement over the years? (Since you could probably write an entire book on this topic give us the dust jacket version.)
JK: I started looking into Agile methods when I was working on a team in 1999 that was trying a combination of Rapid Application Development (RAD), Open Source, and iterative/incremental models like Spiral. The lead developer sent us this article called “Chrysler Goes to Extremes” which described the very basics of Extreme Programming. We liked that it was open and free (we didn’t have to purchase some tool chain and coaching we couldn’t afford) and we started trying some of the ideas out. We then bought the book “Extreme Programming Explained” by Kent Beck, and started implementing XP as best we could. A year later I was introduced to Scrum, and we had good success with it. After a while, I started noticing failures on Agile projects, and people moving on and doing other things. That was fascinating to me. Sadly, instead of learning why there were failures, there was an overwhelming urge to suppress them, or worse, dehumanize people by blaming them for doing it wrong.
As for Agile methods in general, I am ambivalent. I am glad that lightweight methodologies are much more common place than they were in the ‘90s, and we have benefited from creating a common language around practices, and our tools are so much better now than they were ten years ago. I enjoy working on many Agile projects, since they fit my process and personality, and how I like to work.
However, there is a lot of snake oil out there, with proponents claiming that merely adopting Agile methods will lead to a successful business (What about having a great product, great customer service, skilled people and strong financials? Don’t those sort of matter too?) That really turns me off. Furthermore, for years, any Agile failure would inevitably involve blaming the victim: you did it wrong, you don’t get Agile, if you were really Agile it would have been a success, which often sounds like another variation on the “no true Scotsman” argument fallacy. Sure, sometimes people fail because they made some mistakes, or didn’t commit, but every Agile project that fails can’t be blamed on the people.
We should elevate people above processes, practices and tools, not make them subservient to them. The people come first, not the process. Also some of the Agile gatherings feel very religious to me, with conversion stories, wild eyed claims that aren’t questioned and lots of zealotry. Those sorts of meetings make me feel very uncomfortable.
There is also a lot of rigid thinking about implementing Agile methods themselves – do it by the book, or the way the coach describes, and once you have reached a level of mastery, only then may you adapt. That smacks of a priesthood, and that bothers me. I believe teams know what is best for themselves, and should be self-determining in a mix of tools and processes that helps them create valuable software for their customers, value for the shareholders and owners of the company, and value for their teammates and themselves. No one should have the right to dictate how you do that. It’s a personal decision, and in an industry with so many organizations, people, fields and different contexts, there is no such thing as a “one size fits all” solution. By all means gather expertise and learn from people with more experience and different ideas, and really try out concepts instead of just prefixing “Agile” in front of whatever you are doing, but don’t stop there. The world is not a static place. What worked last release may not work the next one, and you have to adapt in this business or fall behind.
Post-Agilism was something I observed that reminded me of post-modernism in architecture and art. Modernism is more rigid in rules of how things should form, while post-modernism rebels against that restriction, and people use combinations or mashups of styles to solve a problem. The problem is solved in the end, just by different means. We see this in music, where much of popular music is a fusion of what has come before, and in much of the food we eat, which is a fusion of many cultures and tastes. I saw this group of people who were grasping their own freedom to create value, not just follow a process. They were not being dictated to by consultants, coaches and books, and were taking information and ideas from many sources creating mashups of processes, tools and technology to create great software. They often had high morale and a good deal of creativity and retained staff, so they were also creating value for themselves, something that gets overlooked if you just think of value as “business value.”
That was interesting to observe, especially at a time when “being Agile” was held up to be the most important thing, and people were losing sight of why Agile was supposed to help us. I felt so strongly about this, in 2009 I presented a keynote at the Better Software conference: “What’s More Important: Being Agile or Creating Value?” I’m happy to see “value” as an overarching concept now on Agile projects, but we still have a ways to go. (There is more to value than just “business value” for example.)
Post-Agilism, as I observe it, is about freedom, about giving you and your team permission to experiment and figure out your current mix of processes, practices and tools to help create value. There is nothing wrong with Agile methods out of the box if they work for you. But if they don’t, or they stop working for you, don’t be afraid to experiment and find your own way, no matter what the Agile experts say. If what you do works, but your Agile coach doesn’t like it, seize your freedom anyway. Post-Agilism is about using what works for that release, and jettisoning what doesn’t.
That way of thinking is heresy to some of my Agile friends. They are great people, but they prefer if you do things the Agile way. I like to see a mix of old practices, new practices, and things in the middle on a team that is doing well. If whatever weird and wild combination of what they are doing works, that’s great. If it works and I haven’t seen it before, that’s even more fascinating. I don’t need to call it Agile or something else. It’s your process, name it what you want. Many of my Agile colleagues are more purist, like the modernist architects. It seems like they are saying: “We want you to create valuable software, but we think it is better if you do it according to the commonly accepted practices of this community, using these approved tools, techniques and practices.” While they might be right in many cases, I want to let people know they have the freedom to choose what they want as well, even if it isn’t something I or my colleagues personally like.
One of my colleagues told me about a team that had implemented Scrum, but were having some quality issues, so they implemented software inspections as well, a very old school tool. They had great success with this mashup or fusion of old and new. My Agile friends are rarely very supportive of this sort of thing, (it isn’t Agile) but I think it’s great. I love to see creative solutions that teams use to create great software, and value for themselves as well as the business. There is so much we can learn from others who do things differently. Furthermore, new technology changes the dynamics, and Agile methods were created in the 1990s, so some new technology projects find they need to adapt processes as well because they may not have the easy fit with Agile process or tool support they had when developing with older technology.
Another area of contention in the Agile movement for me is testing. Many Agilists think manual testing is a bad thing, that all tests should be automated. I prefer a blend, especially when humans are the customers of the software we develop, we need some human involvement, since they use the software. Especially with pervasive computing, like mobile technology, movement and human reactions to the technology are very important to capture, along with tech solutions like test automation. The technology augments, it can’t replace. I have also worked on systems that bridged different computing systems, and most of the testing was automated – our customers for our software were other computers. We still had some humans doing work though.
If labels matter to you, Post-Agilism has a home for you if the Agilists don’t like your weird mashup. If the Agile world works for you, then more power to you and your team. If you are doing something that defies categorization, then that is even better! Take pride in your individuality and uniqueness, don’t feel like you have to follow the crowd. The software we create should be valuable for all the stakeholders – that’s the most important thing, and all processes should help serve that, not the other way around. Be different. Be you. Do some amazing things, and then tell the rest of us about it.
uTest: Your eBook Tap Into Mobile Application Testing is extremely thorough and easy to consume. What motivated you to create this ebook?
JK: Thank you for the kind words. I couldn’t find a book that dealt with testing modern touchscreen smartphones and tablets. I had experience, and a lot of people asking for help, so I agreed to write a book to help people who are either transitioning to testing mobile from traditional projects, or people familiar with mobile technology, but new to testing. I also created a 2 day training course for the same reason, to help spread knowledge and experience for those looking for a head start.
My wife Elizabeth was the primary motivation behind the book. She really encouraged me to just do it. I had started a book on Agile testing back before I started to lose my faith in Agile methods. I found that if I deleted the word “Agile” out of my manuscript, it was really about testing in different environments. The key with being a great extreme ironing practitioner isn’t about where you do the ironing, someone has to teach you how to iron clothes first. I wanted to talk about the nuts and bolts, not the environment. That wasn’t my passion – that was someone else’s book. Next, I tried to write a book on exploratory testing, but that’s really a topic I thought James Bach or Cem Kaner would be better suited to tackle. I lost motivation on it and it sat there. Finally, I had a co-authoring project fall through after a lot of effort. That was quite painful, so I wasn’t sure I had a book in me or not. Elizabeth really encouraged me to just write, so I did, and soon I had 400 pages of material. I hope people find it useful.
uTest: If someone is looking to become a mobile app tester where do you suggest they start?
JK: I would look at resources like my book, look at online forums, discussion groups and articles on blogs you can find, and try a Weekend Testers virtual meetup when they have a mobile theme. Weekend testers is a fantastic place to start and learn. Also, consider contributing to open source projects, they always need help, and it’s a great way to build your experience.
On your own, watch your own mobile usage, and for anything that you find confusing, or note specific examples of when mobile technology lets you down. The systems and software should work for us, not make us feel confused, stupid or frustrated. Combine testing (careful observing and evaluating) with what you know already, and learn about the technology so you understand why or how it can fail, and note anything that bothers you and let the team know about it. After all, James Bach has said, a bug is anything that bugs you. And if it bugs you, it will bug lots of other people.
uTest: On the flip side, if someone has been a software tester for decades, what’s the best way for them to keep their skills sharp?
JK: It’s important to develop an awareness for new technology information, and just try things out. Don’t be afraid to say you don’t know something, and to get in over your head and ask for help. Testers often take a wait and see approach, because we get brought in to projects once technology questions have been settled, but that means we often get left behind, or aren’t consulted early on in projects. I do the following:
- Read continuously about new technology and announcements.
- Encourage my techie friends to share interesting tech stories with me, and I share with them.
- Try something out that interests me – download a tool or try something out in a store.
- If I get stuck, I ask for help. I have a great network of friends with diverse skills, so I can usually find someone to help bail me out, and then we learn from it.
- Strategically position myself to work on new technology projects that I find interesting.
There’s more! Come back tomorrow for Part II of the interview.
How Internet Outages Can Affect Your Application: Outage Analyzer and the adBrite Closure
Five Classifications for Risk Control Measures in Medical Device Development
All risk control measures are not created equal. If you’re looking for expert insight into the most effective risk control measures for your medical device, the following video is a great place to start.
Dr. David Vogel of Intertech Engineering runs down his classification of software risk control measures, and provides specific examples on when each type of risk control is best used.
- Inherently safe design—global design requirements or constraints that render the potential hazard or harm all but impossible.
- Preventative controls—requirements and constraints that help to prevent a hazardous or harmful situation from materializing.
- Corrective actions—”detect and correct” risk control measures take a corrective action when a hazardous situation is detected.
- Mitigate—the severity of harm resulting from a hazard is reduced, but not necessarily eliminated.
- Soft controls—labeling, training, and operator instructions
This is a short excerpt from our recent Leveraging Traceability in Your Risk Management Strategy webinar. Click the link to watch the entire webinar.
Share on Technorati . del.icio.us . Digg . Reddit . Slashdot . Facebook . StumbleUponUpdate on May 20 Tornado
Thanks to everyone who has contacted me concerning the tornadoes here today. Thankfully, we were spared, barely.I was at a client in OKC to attend at 2:00 meeting, which was canceled. It was looking stormy, so I decided to head home. About when I arrived home, the tornado sirens started to sound.
As the tornado approached, I was on the back porch watching it come directly toward us. Just like May 3rd, 1999 all over again. So, I hustled Janet and our two pugs into the car and drove north. We don't have a storm shelter (I think we will soon). The tornado took a turn toward the east, so no damage at our place. But, the loss of life and damage is terrible, especially the children at the school.
(This is a short video I shot from our car. You can see the tornado moving from the right of the screen to the left behind the Homeland store.)
Both our sons and families are fine, although had Ryan (our oldest) and his family not moved 6 years ago, they would have been wiped out and our oldest grandson would have been at the school where the 7 children died.
I don't what it is about Moore. It's like a tornado magnet. It's just really bad here right now. Your prayers are needed.
The people here are tough and resilient. We will rebuild and go on, but the loss of life is the worst part. 51 lives lost as of this writing.
Thanks,
Randy
Update: May 21
Here are some more pictures:
This is the path of the tornado:

Here is what I was looking at on radar on my iPad when I decided it was time to bug out:

Here is a pretty dramatic picture after the first tornado. This is a second lowering. This didn't form into a tornado:

Performance testing solutions for the New Style of IT: HP LoadRunner 11.52 is now available
Last week at the StarEast Testing Conference in Orlando, FL we made some pretty big announcements. We released new versions of our flagship quality and testing software products. We are calling the whole initiative “The new style of IT”.
This new way of thinking about IT is impacting LoadRunner as well. Keep reading to find out the highlights of LoadRunner 11.52 and why I am as excited about the launch as a kid getting a new toy.
New tool added - Behat
New tool added - NBi
TDDing tmux
What to do When a Project is Completed Ahead of Schedule
I would imagine that completing a software project ahead of schedule is like being told by your doctor that you’re too healthy, or having your accountant tell you that you have too much money, but apparently it does happen. The forums on Dice.com prove it.
So what should one do if they find themselves in this situation? Play Spider Solitaire? Chit chat with co-workers? Name all the South American countries on Sporcle.com? While those ideas are well and good, there are slightly more productive ways of spending your free time. Here are a few suggestions:
Make sure you’re really done! Of course, in the broader sense, there is no such thing as “done” when it comes to software development projects. Certain tasks might be done – iterations even – but there is always work to be completed. This especially true if you’re working in an Agile environment or adhere to continuous integration and testing. Here’s an excerpt from a recent Gartner report on agile development on the importance of properly defining “done”:
It is important that the definition of done be comprehensive. Because of agile’s focus on finding the simplest solution to the problem, there is a tendency to try to have no design, end user or operation documentation. This should be addressed by including the required documents in the definition of done. Done can include a review by stakeholders such as architects, database administrators and security/compliance officers.
Consider the corner cases. This one is specifically for testers. It can be tempting to complete a set of test cases and consider it a job well done. But as others have pointed out, many serious issues won’t be discovered this way. As Michael Bolton once wrote on our blog:
“Real testing, to me, should be based on investigating how the software allows people to deal with what we call ‘exceptions’ or ‘corner cases.’ That’s what we call them, but if we bothered to look, we’d find out that they were a lot more common than we realize; routine, even.”
Figure out what’s next. This is for the independent contractors out there. This very honest answer comes from the Dice.com thread mentioned earlier. Take a look (emphasis added):
All of my projects in the last two years have been completed on time, ahead of schedule or way ahead of schedule. As a consultant working for a client finishing a project early can end my gig early. Try looking within the company for the next project to manage or at least get involved in some existing project as a facilitator. The bottom line is you want to do the best possible job for your client, even if that means you’re looking for another engagement sooner than you had planned. If you just keep busy you hurt the client and yourself. Keep your mind fully engaged and active. Even if the client doesn’t mind paying to keep you on hold until another project comes along, unless you’re in your cubicle studying for a certification or earning PDUs, you’re going to disadvantage yourself in the end.
What do you do when a project is completed ahead of schedule? Let us know in the comments section below.
Looking for a Git Bug Tracker? Look No More.
Forget about setting up a Git repository and an issue tracker locally only to have an integrated Git repository with a bug tracking system to run your software project.
With Assembla, you have an integrated system at your fingertips - just install a Tickets tool and a Git tool to your Space - that’s it, you are done setting up, let the work begin. Out of the box, you will be able to reference tickets from your commit messages - just write “re #1” in your commit message and a link to the commit will appear on ticket #1.

- Change ticket statuses - just naming a ticket status - “Fixed #1” - will place a link in the ticket to the commit and change the ticket status to Fixed.
- Track time - enter a record of how much time you spent working on a particular task by using “Fixed #1 Time: 1h30min” to your commit message.
Even more integration?
Need more automation in your workflow? You can write your own server-side hooks, which we will review and put on our servers for you to install. Just send us a merge request!
Get your free Git repository with an issue tracker here.Data-Driven Test Automation
Greetings, fellow testers. I recently attended a workshop on Acceptance Test Driven Development, during which the presenter spoke about distilling requirements down using examples. This is a great opportunity for testers and developers to work closely with Product Owners to determine exactly what output is expected from given inputs.
There are also times when the code behind a function is particularly obtuse or for some other reason testing is best done via the application itself.
Both of these are great opportunities for data-driven automation. Data-driven test automation lets us repeat a set of test steps automatically, using a set of pre-defined values both as input and to test the application's output. While a tester could be set down in front of the keyboard and mouse, they'd always be constrained by time and so we'd need to determine a realistic subset of values to use. It would be better to let a computer run through a large number of scenarios in a fraction of the time. We can do that using Test Studio's Data Driven Testing.
Using a spreadsheet, CSV file or database, we can define as long a list of scenarios as we'd like. In this example, we've created a spreadsheet of values to test a sales tax calculation, and the Business Analyst has verified that the formulas being used are correct. She was also able to make sure we included scenarios she felt may be of particular importance, adding to the whole organization's ownership of quality.
Using Test Studio, it's a simple task to create a test for the page with one set of values, then bind that to the spreadsheet and let it run automatically. Test studio reads the data, fills in the input fields and checks the output against the expected values. In this particular scenario, we were able to check 150 different sets of values in just a few minutes.
We can quickly see where any problems are — in this case a developer was truncating a decimal value where they should have been rounding. Test studio allowed us to quickly determine the cause, get it resolved, and re-run the tests to everyone's satisfaction.
I'd be interested in hearing about other situations where data-driven testing has helped you, and invite you to drop me a note or comment below.
Peace,
Steven
Steven Vore is an Evangelist of Telerik's Test Studio. He has worked in software support and testing for the better part of two decades, and enjoys exploring ways to make software easier to use. He is a fan of movies and music, and can often be found on Twitter as @StevenJV.
Continuous Information vol. 4 - CloudBees Newsletter for Jenkins
Kohsuke and I finally got Continuous Information out the door. Volume 4 of the CloudBees Newsletter for Jenkins features an article from Kohsuke, the latest Jenkins improvements, some handy recent blogs, details on upcoming Jenkins events, loads of Jenkins resources and various other useful info for Jenkins users.Check out the headlines...
- 730+ Plugins, 61k+ Active Installations
- Giving Back to the Community: Kohsuke's Insights
- Registration Open for JUC Bay Area and JUC Israel, and the Jenkins User Event in Copenhagen
- What’s New in Jenkins?
- Upcoming Jenkins Enterprise by CloudBees Release
- Featured Blogs
- ... and more
PS - Got something for the next newsletter? Please drop us an email.
-- Lisa WellsCloudBees Partner Marketing Bee & Managing Editor, Continuous Information
Follow CloudBees:
