c# mvc website pdf file in stored in byte array display in browser : Delete pages from pdf acrobat reader Library control component asp.net azure wpf mvc The%20Art%20of%20Unit%20Testing%20with%20Examples%20in%20.NET%20(Manning%202009)25-part1057

Ways to succeed
225
Dedicated time
—For a consultant, this is her job. Unlike other employ-
ees  in  the  company  who  have  better  things  to  do  than  push  for 
change (like writing software), the consultant does this full time and 
is dedicated to this purpose. 
I’ve often seen a change break down because an overworked champion 
doesn’t have the time to dedicate to the process.
8.2.4 Making progress visible
It’s important to  keep the progress and status of the  change  visible. 
Hang whiteboards or posters up on walls in corridors or in the food-
related areas where people congregate. The data displayed should be 
related to the goals you’re trying to achieve. 
For example, show  the number of passing  or failing  tests in the last 
nightly build. Keep a chart showing which teams are already running 
an automated build process. Put up a Scrum burndown chart of itera-
tion progress or a test-code-coverage report (as seen in figure 8.1) if 
that’s  what you  have  your  goals  set  to.  (You  can  learn  more about 
Code integrity
Code integrity
is a term I use to describe the purpose behind a team’s de-
velopment act
ivi
t
ies,
in terms of code stabili
ty,
 maintainabili
ty,
 and 
feedback.
 Most
ly,
i
t means that the code does what 
i
t’s meant to do,
 and 
the team knows when 
i
t doesn’t
.
These pract
ices are all
 part of code 
integri
ty:
Automated builds
Cont
inuous 
integrat
ion
Uni
t test
ing and test
-driven development
Code consistency and agreed standards for quali
ty
Achieving shortest t
ime possible to fix
 bugs (or make failing tests 
pass)
Some consider these to be “values” of development
,
 and you can find 
them 
in methodologies such as Ex
treme Programming,
 but I 
like to say,
“We have good code 
integri
ty,
” 
instead of saying that I think we’re doing 
all
 these things well.
Delete pages from pdf acrobat reader - remove PDF pages in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Provides Users with Mature Document Manipulating Function for Deleting PDF Pages
add and remove pages from a pdf; delete pages from pdf
Delete pages from pdf acrobat reader - VB.NET PDF Page Delete Library: remove PDF pages in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
Visual Basic Sample Codes to Delete PDF Document Page in .NET
pdf delete page; delete pages from a pdf online
226
CHAPTER 8    Integrating unit testing into the organization
Scrum at www.controlchaos.com.) Put up contact details for yourself 
and all the champions so you can answer any questions that arise.
You’re aiming to talk to two groups with these charts: 
Figure 8.1 An example of a test-code-coverage report
.NET PDF Document Viewing, Annotation, Conversion & Processing
Redact text content, images, whole pages from PDF file. Annotate & Comment. Edit, update, delete PDF annotations from PDF file. Print.
delete page in pdf reader; delete pages of pdf preview
C# PDF Converter Library SDK to convert PDF to other file formats
manipulate & convert standard PDF documents in .NET class applications independently, without using other external third-party dependencies like Adobe Acrobat.
delete pdf pages android; delete page in pdf
Ways to succeed
227
The group undergoing the change—
People in this group will gain a greater 
feeling of accomplishment and pride as the charts (which are open to 
everyone) are updated, and they will feel more compelled to com-
plete the process because it’s visible to others. They will also be able 
to keep track of how they’re doing compared to other groups. They 
may push harder knowing that another group implemented specific 
practices more quickly.
Those in the organization who aren’t part of the process—
You’re raising inter-
est and curiosity among these people, triggering conversations and 
buzz, and creating a current that they can join if they choose.
8.2.5 Aiming for specific goals
Without goals, the change will be hard to measure and to communicate 
to others. It will be a vague “something” that can easily be shut down at 
the first sight of trouble.
Here are some goals you might want to consider:
Increase the amount of test code coverage.
A study by Boris Beizer showed that developers who write tests and 
don’t use code-coverage tools or other techniques to test code cover-
age will be naively optimistic about the coverage they gained from 
the tests. Another study, from the book 
Peer Reviews in Software: A Prac-
tical Guide
, suggests that testing without code-coverage tools may only 
result in coverage of  about 50 to  60 percent of the code.  (There’s 
much anecdotal evidence that, by using TDD, one can get up to 95 
to 100 percent code coverage for logical code.)
A simple goal to measure is the percentage of the code covered by the 
tests. The more coverage, the better chance of finding bugs. It’s not a 
silver bullet, though. One could easily have close to 100 percent code 
coverage with bad tests that don’t mean anything. Low coverage is a 
bad sign; high coverage is a possible sign that things are better.
NOTE
The study by Boris Beizer is discussed in Mark Johnson’s article, 
“Dr. Boris Beizer on software testing: an interview, part 1,” in 
The 
Software QA Quarterly
(summer 1994). The other study is discussed in 
Karl Wiegers book, 
Peer Reviews in Software: A Practical Guide
(Addi-
son-Wesley, 2002).
C# powerpoint - PowerPoint Conversion & Rendering in C#.NET
documents in .NET class applications independently, without using other external third-party dependencies like Adobe Acrobat. PowerPoint to PDF Conversion.
delete pages from pdf in preview; delete blank page in pdf
C# Word - Word Conversion in C#.NET
Word documents in .NET class applications independently, without using other external third-party dependencies like Adobe Acrobat. Word to PDF Conversion.
delete page on pdf file; delete pages pdf document
228
CHAPTER 8    Integrating unit testing into the organization
Increase the amount of test code coverage relative to the amount of code churn.
Some production systems will allow you to measure the amount of 
code churn
—how many lines of code  were changed between builds. 
The fewer lines of code changed, the fewer bugs you’re likely to have 
introduced into a system. Calculating this isn’t always practical, par-
ticularly in systems where you do a lot of code generation as part of 
the build process, but this can be solved by ignoring generated code. 
One system that allows you  to measure code churn is Microsoft’s 
Team System. (See Microsoft’s “Code Churn Perspective” article at 
http://msdn.microsoft.com/en-us/library/ms244698(VS.80).aspx.)
Reduce the amount of bug reopening.
It’s easy to fix one thing and mistakenly break something else. If this 
doesn’t happen often, it’s a sign that  you’re able  to fix  things and 
maintain the system without breaking previous assumptions.
Reduce the average bug-fixing time (the time from bug opened to bug closed).
A system with good tests and coverage will usually allow you to fix 
things more quickly (assuming the tests are written in a maintainable 
manner). That, in turn, means better turnaround times, and release 
cycles that are less stressful.
In his book 
Code Complete 
(Microsoft Press), Steve McConnell outlines 
several metrics you can use to test progress. They include the follow-
ing, among others:
The number of defects found per class by priority
The number of defects per routine number of testing hours per bug 
found
The average number of defects per test case
I highly recommend reading chapter 22 of that book, which deals with 
developer testing.
8.2.6 Realizing that there will be hurdles
There are always hurdles. Most will come from within the organiza-
tional structure, and some will be technical. The technical ones are easier 
to fix, because it’s just a matter of finding the right solution. The organi-
zational ones need care and attention and a psychological approach.
C# Windows Viewer - Image and Document Conversion & Rendering in
standard image and document in .NET class applications independently, without using other external third-party dependencies like Adobe Acrobat. Convert to PDF.
cut pages from pdf reader; delete pages out of a pdf file
VB.NET PDF: How to Create Watermark on PDF Document within
Watermark Creator, users need no external application plugin, like Adobe Acrobat. VB example code to create graphics watermark on multiple PDF pages within the
delete page pdf acrobat reader; delete a page from a pdf
Ways to fail
229
It’s important not to surrender to a feeling of temporary failure when 
an iteration goes bad, tests go slower than expected,  and so on. It’s 
sometimes hard to get going, and you’ll need to persist for at least a 
couple of months to start feeling comfortable with the new process and 
to iron out all the kinks. Have management commit to continuing for at 
least three months even if things don’t go as planned. It’s important to 
get their agreement up front. You don’t want to be running around try-
ing to convince people in the middle of a stressful first month.
Now that we’ve looked at ways of ensuring things go right, let’s look at 
some things that can lead to failure.
In the preface to this book, I talked about one project I was involved 
with that failed, partly because unit testing was not implemented cor-
rectly. That’s one way you can fail a project. I’ve listed several others 
here, along with one that cost me that project, and some things that can 
be done about them.
8.3.1 Lack of a driving force
In all the places where I’ve seen change fail, the lack of a driving force
was the most powerful factor in play. Being a consistent driving force of 
change has its price. It will take time away from your normal job to teach 
others, help them, and wage internal political wars for change. You need 
to  be  willing to  surrender  the  time you have  for  these tasks, or the 
change won’t happen. Bringing in an outside person, as mentioned in 
section 8.2.3, will help you in your quest for a consistent driving force.
8.3.2 Lack of political support
If your boss explicitly tells you not to make the change, there isn’t a 
whole lot you can do, besides trying to convince management to see 
what you see. But sometimes the lack of support is much more subtle 
than that, and the trick is to realize that you are facing opposition. 
For example, you may be told, “Sure, go ahead and implement those 
tests. We’re adding 10 percent to your time to do this.” Anything below 
8.3 Ways to fail
C# Excel - Excel Conversion & Rendering in C#.NET
Excel documents in .NET class applications independently, without using other external third-party dependencies like Adobe Acrobat. Excel to PDF Conversion.
delete blank pages from pdf file; delete page from pdf
VB.NET PowerPoint: VB Code to Draw and Create Annotation on PPT
of compensation for limitations (other documents are compatible, including PDF, TIFF, MS on slide with no more plug-ins needed like Acrobat or Adobe reader.
delete page from pdf file online; delete pages pdf preview
230
CHAPTER 8    Integrating unit testing into the organization
30 percent isn’t realistic for beginning a unit-testing effort. This is one 
way a manager may try to stop a trend—by choking it out of existence. 
First, you need to recognize that you’re facing opposition, but once you 
do, it’s easy to identify. When you tell them that their limitations aren’t 
realistic, you’ll be told, “So don’t do it.”
8.3.3 Bad implementations and first impressions
If you’re planning to implement unit testing without prior knowledge 
of  how  to  write  good  unit  tests,  do  yourself  one  big  favor:  involve 
someone who has experience, and follow some best practices (such as 
those outlined in this book). 
I’ve seen developers jump into the deep water without a proper under-
standing of what to do or where to start, and it’s not a good place to be. 
Not  only  will  it  take  a  huge  amount  of  time  to  learn  how to make 
changes that are acceptable for your situation, but you’ll also lose a lot 
of credibility along the way for starting out with a bad implementation. 
This can lead to the pilot project being shut down.
If you read the preface of this book, you’ll know that this is what hap-
pened to me. You only have  a couple of months to get things  up to 
speed and convince the higher-ups that you’re achieving results. Make 
that time count, and remove any risks that you can. If you don’t know 
how to write good tests, read a book or get a consultant. If you don’t 
know how to make your code testable, do the same. Don’t waste time 
reinventing testing methods you don’t have to.
8.3.4 Lack of team support
If your team doesn’t support your efforts, it will be nearly impossible to 
succeed, because you’ll have a hard time consolidating your extra work 
on the new process with your regular work. You should strive to have 
your team be part of the new process, or at least not stop it. 
Talk to your team members about the changes. Getting their support 
one by one is sometimes a good way to start, but talking to them as a 
group  about  your efforts—and  answering  their hard questions—can 
Tough questions and answers
231
also prove valuable. Whatever you do, don’t take the team’s support 
for granted. Make sure you know what you’re getting into; these are 
the people you have to work with on a daily basis.
Regardless of how you proceed, you’re going to be asked some tough 
questions about unit testing. The following questions and answers will 
help prepare you for your discussions with people who can make or 
break your agenda for change.
This section covers some questions I’ve come across in various places. 
They usually arise from the premise that implementing unit testing can 
hurt someone personally—a manager looking out for his deadlines or a 
QA  employee  looking  out  for  her  relevancy.  Once  you  understand 
where a question is coming from, it’s important to address the issue, 
directly or indirectly. Otherwise, there will always be subtle resistance.
8.4.1 How much time will this add to the current process?
Team leads, project managers, and clients are the ones who usually ask 
how much time unit testing will add to the process. They’re the people 
in the front lines in terms of timing. 
Let’s begin with some facts. Studies have shown that raising the overall 
code quality in a project can increase productivity and shorten sched-
ules. How does this match up with the fact that writing tests makes cod-
ing slower? Through maintainability and the ease of fixing bugs, mostly.
NOTE
For studies on code quality and productivity, see Capers Jones, 
Pro-
gramming Productivity
(McGraw-Hill, 1986) and his 
Software Assess-
ments, Benchmarks, and Best Practices
(Addison-Wesley, 2000).
When  asking  about  time,  team  leads  may  really  be  asking,  “What 
should I tell my project manager when we go way past our due date?” 
They  may  actually  think  the  process  is  useful  but  are  looking  for 
ammunition  for  the  upcoming  battle.  They  may  also  be  asking  the 
question not in terms of the whole product, but in terms of specific fea-
ture sets or functionality. 
8.4 Tough questions and answers
232
CHAPTER 8    Integrating unit testing into the organization
A project manager or customer who asks about timing, on the other 
hand, will usually be talking in terms of full product releases.
Because different people care about different scopes, the answers you 
give them may vary. For example, unit testing can double the time it 
takes to implement a specific feature, but the overall release date for 
the product may actually be reduced. To understand this, let’s look at a 
real example I was involved with.
A tale of two features
A  large  company I  consulted with wanted to implement unit testing
into their process, beginning with a pilot project. The pilot consisted of 
a group of developers adding a new feature to a large existing applica-
tion. The company’s main livelihood was in creating this large billing 
application and customizing  parts of  it for  various clients. The com-
pany had thousands of developers around the world.
The following measures were taken to test the pilot’s success:
The time the team took for each of the development stages 
The overall time for the project to be released to the client
The number of bugs found by the client after the release
The same statistics were collected for a similar feature created by a dif-
ferent  team  for  a  different  client.  The  two  features  were  nearly  the 
same size, and the teams were roughly at the same skill and experience 
level. Both tasks were customization efforts—one with unit tests, the 
other without. Table 8.1 shows the differences in time.
Table 8.1 Team progress and output measured with and without tests
Stage
Team without tests
Team with tests
Implementation (coding)
7 days
14 days
Integration
7 days
2 days
Testing and bug fixing
Testing, 3 days  
Fixing, 3 days  
Testing, 3 days  
Fixing, 2 days  
Testing, 1 day 
Total: 12 days
Testing, 3 days  
Fixing, 1 day 
Testing, 1 day 
Fixing, 1 day 
Testing, 1 day 
Total: 8 days
Tough questions and answers
233
Overall, the time to release with tests was less than without tests. Still, 
the managers on the team with the unit tests didn’t initially believe the 
pilot would be a success because they only looked at the implementa-
tion (coding) statistic (the first row in table 8.1) as the criteria for suc-
cess, instead of the bottom line. It took twice the  amount of time to 
code the  feature  (because  unit  tests  cause  you  to  write  more  code). 
Despite this, the time “wasted” more than made up for itself when the 
QA team found fewer bugs to deal with.
That’s why it’s important to emphasize that, although unit testing can 
increase the amount of time it takes to implement a feature, the time 
balances out over the product’s release cycle because of increased qual-
ity and maintainability.
8.4.2 Will my QA job be at risk because of this?
Unit  testing  doesn’t  eliminate  QA-related  jobs.  QA  engineers  will 
receive the application with full unit-test suites, which means they can 
make sure all the unit tests pass before they start their own testing pro-
cess. Having unit tests in place will actually make their job more inter-
esting.  Instead  of  doing  UI  debugging  (where  every  second  button 
click results in an exception of some sort), they will be able to focus on 
finding  more  logical (applicative)  bugs in  real-world scenarios. Unit 
tests provide the first layer of defense against bugs, and QA work pro-
vides the second layer—the user’s acceptance layer. As with security, 
the application always needs to have more than one layer of protection. 
Allowing the QA process to focus on the larger issues can produce bet-
ter applications.
In some places, QA engineers write code, and they can help write unit 
tests for the application. That happens in conjunction with the work of 
the application developers and not instead of it. Both developers and 
QA engineers can write unit tests.
Overall release time
26 days
24 days
Bugs found in production
71
11
234
CHAPTER 8    Integrating unit testing into the organization
8.4.3 How do we know this is actually working?
To determine whether your unit testing is working, create a metric of 
some sort, as discussed in section 8.2.5. If you can measure it, you’ll 
have a way to know; plus, you’ll feel it.
Figure  8.2  shows  a  sample  test-code-coverage  report  (coverage  per 
build). Creating a report like this, by running a tool like NCover for 
.NET automatically during the build process, can demonstrate prog-
ress in one aspect of development.
Figure 8.2 An example test-code-coverage trend report
Code coverage is a  good  starting point if you’re wondering whether 
you’re missing unit tests.
8.4.4 Is there proof that unit testing helps?
There aren’t any specific studies I can point to on whether unit testing 
helps  achieve  better  code  quality.  Most  related  studies  talk  about 
adopting  specific  agile  methods,  with  unit  testing  being  just  one  of 
Documents you may be interested
Documents you may be interested