1:17-cv-10274
Typemock Ltd v. Telerik Inc
I. Executive Summary and Procedural Information
- Parties & Counsel:- Plaintiff: Typemock, Ltd. (Israel)
- Defendant: Telerik Inc. (Delaware)
- Plaintiff’s Counsel: Wright & Close, LLP; Lewis Baach PLLC
 
- Case Identification: 1:16-cv-01314, W.D. Tex., 12/15/2016
- Venue Allegations: Venue is alleged to be proper in the Western District of Texas because Defendant Telerik maintains corporate offices, conducts substantial business, and has committed the alleged acts of infringement within the district.
- Core Dispute: Plaintiff alleges that Defendant’s JustMock unit testing software infringes patents related to methods for isolating software components for testing, particularly those not designed with traditional testability features.
- Technical Context: The technology involves software unit testing frameworks, which are essential tools for modern software development that ensure quality and security by allowing developers to test individual code components in isolation.
- Key Procedural History: The complaint alleges that Defendant Telerik was a licensed user of Plaintiff's "Typemock Isolator" product from approximately September 2008 until at least November 2011. Plaintiff further alleges that Defendant copied its product's code and Application Programming Interface (API), and had been aware of Plaintiff's pending patent application since at least February 2010. Plaintiff sent a formal demand letter to Defendant regarding the patents-in-suit on November 4, 2016.
Case Timeline
| Date | Event | 
|---|---|
| 2006-09-25 | Priority Date for ’923 and ’041 Patents | 
| 2008-09-10 | Telerik becomes licensed user of Typemock Isolator (approx.) | 
| 2010-01-01 | Earliest alleged release of Telerik's JustMock product | 
| 2010-02-01 | Telerik allegedly becomes aware of Typemock's pending patent application | 
| 2013-01-08 | U.S. Patent No. 8,352,923 Issues | 
| 2016-02-02 | U.S. Patent No. 9,251,041 Issues | 
| 2016-11-04 | Typemock sends demand letter to Telerik | 
| 2016-12-15 | Complaint Filed | 
II. Technology and Patent(s)-in-Suit Analysis
U.S. Patent No. 8,352,923, "Method and System for Isolating Software Components," Issued Jan. 8, 2013
The Invention Explained
- Problem Addressed: The patent describes the difficulty of performing "unit tests" on software components that are highly dependent on other parts of a system (e.g., a database or an external web service). Conventional solutions often require the software to be specifically designed for testability, which is not feasible for existing "legacy code" and can add complexity and cost to new code (’923 Patent, col. 2:36-43).
- The Patented Solution: The invention proposes a system that can isolate software components without requiring changes to the original application's design. It achieves this by using a "weaver" to insert "hooking code" into the application's compiled code, for example, by using a profiler API just before the code is run. This inserted code intercepts calls to dependent components and redirects them to a "mock framework," which can then substitute a "fake" behavior or object for testing purposes (’923 Patent, col. 2:57-62; col. 4:49-54).
- Technical Importance: This approach makes it possible to apply automated unit testing to a wider range of software, including complex legacy systems that were not built with modern testability patterns, thereby improving software quality and reliability (’923 Patent, col. 2:48-52).
Key Claims at a Glance
- The complaint asserts independent claims 1, 18, 30, and 50 (Compl. ¶ 22, 23).
- Independent Claim 30 recites a software testing system comprising:- Computational apparatus for at least partially isolating a coupled software component.
- The isolation is achieved by removing or replacing a behavior of the component during runtime.
- This is performed "without dependency injection."
- Apparatus for testing that is operative to generate a plurality of expectations for the component.
 
- The complaint reserves the right to assert various dependent claims (Compl. ¶ 23).
U.S. Patent No. 9,251,041, "Method and System for Isolating Software Components," Issued Feb. 2, 2016
The Invention Explained
- Problem Addressed: As a continuation of the application leading to the ’923 Patent, the ’041 Patent addresses the same technical problem: testing software components that are "highly coupled" and may be "unable to support a dependency injection" (’041 Patent, Abstract; col. 2:30-34).
- The Patented Solution: The solution is materially the same as that described in the ’923 Patent, involving the runtime insertion of code to intercept and "mock" the behavior of software components for testing purposes (’041 Patent, col. 2:49-56).
- Technical Importance: The technical importance is identical to that of the ’923 Patent, focusing on enabling unit testing for code not originally designed for it.
Key Claims at a Glance
- The complaint asserts independent claims 1, 9, and 18 (Compl. ¶ 49).
- Independent Claim 18 recites a system for providing testing, comprising:- A processor and memory storing processor executable software testing code.
- The code is adapted to cause processors to test a software application by removing or replacing a behavior of a component "during runtime, without dependency injection."
- The code is also adapted to generate a "plurality of expectations," including an identity of an individual component and an associated behavior-inducing message.
 
- The complaint reserves the right to assert various dependent claims (Compl. ¶ 49).
III. The Accused Instrumentality
Product Identification
The accused instrumentality is Telerik’s "JustMock" software product (Compl. ¶ 7).
Functionality and Market Context
- JustMock is described as a "mocking framework" used for software unit testing (Compl. ¶ 7). Its function is to allow developers to "focus on the logic you want to verify or assert" by "removing dependencies" (Compl. ¶ 19).
- The complaint alleges JustMock provides for "unrestricted mocking of dependent objects, including non-virtual methods, sealed classes, static methods and classes" (Compl. ¶ 20). The complaint includes a diagram illustrating how JustMock sits between a "UNIT TEST" and its dependencies, such as a "DATABASE" or "WEB SERVICE," to control their behavior. (Compl. p. 9).
- The accused technical operation involves using a "profiler API, by changing the original code before just-in-time compilation and injecting alternate code into the original code on-the-fly" (Compl. ¶ 22).
- The complaint positions JustMock as a "lower-priced competitor to Typemock Isolator" whose market presence is alleged to be "extremely harmful to Typemock's business" (Compl. ¶ 7).
IV. Analysis of Infringement Allegations
’923 Patent Infringement Allegations
| Claim Element (from Independent Claim 30) | Alleged Infringing Functionality | Complaint Citation | Patent Citation | 
|---|---|---|---|
| A software testing system...comprising: computational apparatus for at least partially isolating, from within a software application, at least one coupled software component...by removing or replacing a behavior of at least said at least partially isolated coupled software component during runtime, without dependency injection | Telerik's JustMock product is a software testing system that isolates components by using a profiler API to change original code before just-in-time compilation, injecting alternate code to replace behavior. This is alleged to be done without dependency injection. | ¶22 | col. 16:35-47 | 
| wherein said apparatus for testing is operative to generate a plurality of expectations each of which comprises an identity of an individual component...and an associated behavior inducing message | The "Mock.Arrange()" function in JustMock is used to set up ("arrange") an expectation for a specific component's behavior, and the ".Returns()" function imposes a fake behavior, such as returning a specific mock date instead of the actual date. | ¶21, ¶22 | col. 16:48-51 | 
’041 Patent Infringement Allegations
| Claim Element (from Independent Claim 18) | Alleged Infringing Functionality | Complaint Citation | Patent Citation | 
|---|---|---|---|
| A system for providing testing for a given software application...said system comprising: a first processor...which digital memory stores processor executable software testing code adapted to cause one or more second processors to... | Telerik makes, uses, and sells the JustMock product, which is a system for providing software testing that runs on processors and memory. | ¶49, ¶50 | col. 16:30-38 | 
| ...generate a plurality of expectations each of which comprises an identity of an individual component...and an associated behavior inducing message... | The "Mock.Arrange()" function in JustMock is alleged to generate an expectation. The complaint provides a side-by-side code comparison showing the similarity between Typemock's "Isolate.WhenCalled()" and JustMock's "Mock.Arrange()". (Compl. p. 6). | ¶12, ¶22 | col. 16:62-67 | 
| ...test...by removing or replacing a behavior of the at least partially isolated coupled software component, during runtime, without dependency injection | JustMock's ".Returns()" function replaces an expected behavior with a fake one at runtime. This is allegedly done "on-the-fly" using techniques that do not require traditional dependency injection. | ¶22 | col. 16:51-55 | 
Identified Points of Contention
- Scope Questions: A central dispute may concern whether JustMock’s alleged method of runtime code modification falls within the scope of the patents' claims. For example, does the use of a "profiler API" to inject code "on-the-fly" (Compl. ¶ 22) constitute "introducing, prior to execution, code elements for runtime access" as required by the claims?
- Technical Questions: The complaint alleges direct copying of its API and even a software bug (Compl. ¶¶ 11-12). A key question for the court will be whether the specific technical implementation of JustMock's "Arrange()" and "Returns()" functions performs the same function in substantially the same way to achieve the same result as the patented system for generating "expectations" and imposing a "fake behavior."
V. Key Claim Terms for Construction
The Term: "isolating ... without dependency injection" (’923 Patent, cl. 30; ’041 Patent, cl. 18)
Context and Importance
This phrase appears central to the patents' claimed advance over the prior art. The construction of this term will be critical because the complaint alleges JustMock operates in a way that avoids traditional dependency injection, and whether that operation is covered by the patents will likely depend on this term's scope.
Intrinsic Evidence for Interpretation
- Evidence for a Broader Interpretation: The patent specification describes the problem being solved as the inability to test "legacy code" that was "not designed to allow insertions of fake objects" (’923 Patent, col. 2:39-40). This context may support a broader interpretation that covers any technique achieving isolation without requiring the original application code to be re-designed for testability.
- Evidence for a Narrower Interpretation: The specification discloses specific embodiments that use a "weaver" that registers with the .NET runtime to modify code "just before the JIT Compiler is run" via a "Profiler API" (’923 Patent, col. 4:49-59). This may support a narrower construction limited to techniques that modify code at this specific pre-execution stage.
VI. Other Allegations
Indirect Infringement
The complaint alleges that Telerik actively induces infringement by providing the JustMock software to its customers and instructing them on how to use the infringing features through "online information, web demonstrations and training videos, and documentation" (Compl. ¶ 35, ¶ 60).
Willful Infringement
Willfulness is alleged based on both pre- and post-suit knowledge. The complaint alleges pre-suit knowledge based on Telerik's status as a former licensee of Typemock's own product, its alleged copying of the API, and its alleged awareness of Typemock's patent application since 2010 (Compl. ¶¶ 9, 11-13, 74). Post-suit knowledge is established by the filing of the complaint, and pre-suit notice is also based on a demand letter sent on November 4, 2016 (Compl. ¶ 14).
VII. Analyst’s Conclusion: Key Questions for the Case
- A core issue will be one of claim scope and technical equivalence: can the patents' claims, which describe "isolating" a component by "introducing...code elements," be construed to cover the specific runtime code modification techniques allegedly employed by Telerik's JustMock product?
- A key evidentiary question will relate to copying and willfulness: to what extent will the plaintiff's allegations of direct API copying and the inheritance of a "fingerprint" bug serve as evidence of infringement and, in particular, establish the "egregious" conduct often associated with a finding of willfulness?
- The case may also turn on a question of definitional boundaries: what is the precise meaning of "without dependency injection" in the context of the patents, and does the accused JustMock product, which is marketed as a tool that "remov[es] dependencies," fall within that definition?